Создание собственной системы стабилизации

alexeykozin
alexmos:

Это прям как миф про теплый ламповый звук

а почему миф? у ламповых усилителей большой диапазон выходного напряжения, анодное около 300 вольт, отсюда и глубина звука.
представьте себе осцилограмму с вч колебаниями с размахом в 30 вольт промодулированными низкой частотой в амплитуде 300 вольт,
попробуйте это впихнуть в 30 вольтовую осцилограмму - получится что мы остались без басов, вернее с перековерканными

oleg70
alexmos:

Вообще никак не связано. От чувствительности зависит только напряжение на выходе аналогового датчика при поворотах, а АЦП вообще на любой частоте может раотать.

Я о том - что считать данные с сенсора с чувствительностью 2000 гр.сек. можно не чаще чем 2 Кгц,
а АЦП там может работать хоть как быстро, нам от этого “не тепло не холодно”, остается только за него порадоваться, поэтому все разговоры о опросе датчика в 32 Кгц не имеют смысла (ИМХО)…
(хотел скопипастить сюда соответствующий параграф из даташита, но он собака, запаролирован, а самому набирать по англицки не охота…)

SergDoc
alexmos:

Это прям как миф про теплый ламповый звук

тёплый ламповый звук - это реальность ))) у ламп, в отличии от полупроводников, вольтамперная характеристика линейная и до сих пор профф оборудование на лампах - даже микрофоны! недавно разбирал - просто шедевр… и тут таже песня - ну лампы ставить не получится, но прецизионные операционники вполне можно впихнуть между датчиками и ацп)))

alexmos
SergDoc:

у ламп, в отличии от полупроводников, вольтамперная характеристика линейная и до сих пор профф оборудование на лампах - даже микрофоны

С изобретением обратной связи линейность уже не так актуальна (впрочем есть и вполне линейные усилители A, AB класса), а с изобретением ШИМ-усилителей транзисторные вообще вне конкуренции. Прецезионные усилители сенсору есть смысл ставить только если его точность выше точности “обычного” операционника. А я сильно сомневаюсь что MEMS имеют высокую точность. В датащитах нелинейность точно больше 1% а шумит просто ужас - так накой ему точный и малошумящий операционник с 10-ым знаком ошибки после запятой?

rual
Gapey:

вычислять изменение положения по каждому отсчету АЦП за время одного отсчета .

только так

Gapey:

в конце концов получим тоже самое положение через тоже время

с учетом погрешности датчика и вычислений

alexmos:

Усреднять одномерным фильтром в любом случае надо, но он есть и в цифровых датчиках и работает на достаточно приличной скорости. чтобы ничего не пропустить. А запускать обсчет AHRS для сведения трех осей можно гораздо реже, думаю даже 100 Гц будет вполне достаточно.

Вполне вариант, но опять же нельзя пропускать отсчеты датчика, и при быстрых маневрах будет накапливаться “неучтенка” взаимовлияния осей между расчетами ориентации.

SergejK:

теоретически достаточно выборки с удвоеной максимальной частотой в спектре сигнала

Это теорема Котельникова

SergejK:

Так при любой частоте петли с датчика считаем те же самые 1000°/с, откуда тут возьмутся ошибки?

например, пропустили 2 отсчёта. Взяли в расчет 0 гр/сек, потом быстро дернули креном -650 гр/с и обратно 605 гр/с, потом пришла петля и взяла опять 0гр/с. Интегратор угла покажет 0гр, а на самом деле будет -45гр. Потому я пишу, что нужно собирать ВСЕ отсчеты физ.датчика, если не хватает скорости проца, то виде интеграла между расчетами (в т.ч. аналоговым интегралом).

SergDoc:

у ламп, в отличии от полупроводников, вольтамперная характеристика линейная

Не только, у них нелинейность весьма “круглая” и адаптивная (при длительной перегрузке каскад “сползает” в линейный участок), а у ПП нелинейность “острая” - “клыки” ( у биполярных), и “квадратная” у полевых - насыщение.

SergejK
rual:

Это теорема Котельникова

Сори, это было не патриотично 😃

rual:

например, пропустили 2 отсчёта. Взяли в расчет 0 гр/сек, потом быстро дернули креном -650 гр/с и обратно 605 гр/с, потом пришла петля и взяла опять 0гр/с. Интегратор угла покажет 0гр, а на самом деле будет -45гр.

Так вот возвращаясь к теореме Котельнкова - если на мпушке использовать фильтр (188Гц или 250Гц, как советует главный разработчик) то как бы мы не дергали, считывая с нее данные с периодом соответсвующим >500Гц (тоесть начиная с удвоеной максимальной частоты в выходном спектре сигнала 188Гц или 250Гц) мы учтем все те всплески, вызваные дерганьем.

Глобальная особенность тут в другом - разработчики и пользователи говорят на разных языках. Например, продвинутый пользователь залил последнюю прошивку с новой в два раза большей частотой петли, чуток поднапрягся, сделал пару красивых флипов и пролетов (ну а как иначе, он же продвинутый пользователь 😃 ) - значит повышеная частота работает и это уже закон! И никакие теоремы тут не докажут обратного 😃
А уж если разговор о бизнесе, то против законов тем более не попрешь 😉

rual
SergejK:

Глобальная особенность тут в другом - разработчики и пользователи говорят на разных языках.

Не пользователи, а маркетологи. Выдергивают громкие фразы (“быстрей, выше, сильней!”) из речей разработчиков и вставляют в рекламные слоганы.

oleg70
SergejK:

сделал пару красивых флипов и пролетов (ну а как иначе, он же продвинутый пользователь ) - значит повышеная частота работает и это уже закон!

Золотые слова… Чистота эксперимента и анализ результатов зачастую вызывают сомнения,
или выдаётся желаемое за действительное… всёж теорию/мат часть знать надо, и почаще к ней обращаться.

Gapey

на самом деле все зависит от характеристик самого коптера … а именно от того какие максимальные угловые ( да и линейные тоже) ускорения может обеспечивать аппарат …
чем больше ускорения , тем чаще имеет смысл проводит расчеты и выдавать команды на управление …
так что по мере миниатюризации (снижении массогабаритов) , а также повышении эффективность моторов , регулей , аккумуляторов реально необходимая частота циклов обработки будет расти …

rual
Gapey:

ак что по мере миниатюризации (снижении массогабаритов) , а также повышении эффективность моторов , регулей , аккумуляторов реально необходимая частота циклов обработки будет расти …

Совершенно так. Сам с проблемой недостаточной скорости регулей столкнулся только на 150м размере, 550й летал на 50Гц стандартных ХК-регулях.

7 days later
oleg70
SergDoc:

F7BY начало )))

Лучше сразу ARM11BY… чтоб, так сказать, “на пике прогресса”…

8 days later
ИльяПРо

Привет, единомышленники! спустя год работы от начала освоения стм32 и освоения алгоритмов коптеров мне удалось наконец осуществить свою мечту - создать собственный контроллер коптера. Сразу говорю, что летает он ни чуть не лучше, а местами и хуже коммерческих аналогов. Вообщем то получен огромный опыт в отладке, программировании, поиске проблем и многом другом. Математика довольно простая, никаких фильтров Калмана (следующий этап), в основе простые П, ПИ регуляторы компенсирующие дрейф относительных датчиков абсолютными датчиками.
Теперь по платформе - летает все это на плате STM32F407Discovery, ДУС/акселерометр - MPU6500, барометр - MS5611, магнитометр - HMC5883l, ЖПС/ГЛОНАСС датчик - Ublox Neo 8n. Дополнительно установлен Bluetooth передатчик/приемник для связи с землей, Buzzer, SD-карта для записи логов. Организация логов такова - каждый интересующий меня блок пишется в свой файл в бинарном виде, разбивается по времени, с разной частотой. Платформа летает под FreeRTOS.
Хотелось бы отдельное спасибо сказать Александру Русакову (rual) за большущую помощь и подсказки в начале пути!
Несколько видео:

oleg70
ИльяПРо:

летает он ни чуть не лучше, а местами и хуже

Судя по видео, аппарат весьма достойно “цепляется” и за GPS и за горизонт, так что не надо скромничать…), если софт рукотворный и написан за год, то вообще просто гениально…

SitulaAqua
ИльяПРо:

Привет, единомышленники! спустя год работы от начала освоения стм32 и освоения алгоритмов коптеров мне удалось наконец осуществить свою мечту - создать собственный контроллер коптера. Сразу говорю, что летает он ни чуть не лучше, а местами и хуже коммерческих аналогов. Вообщем то получен огромный опыт в отладке, программировании, поиске проблем и многом другом. Математика довольно простая, никаких фильтров Калмана (следующий этап), в основе простые П, ПИ регуляторы компенсирующие дрейф относительных датчиков абсолютными датчиками.
Теперь по платформе - летает все это на плате STM32F407Discovery, ДУС/акселерометр - MPU6500, барометр - MS5611, магнитометр - HMC5883l, ЖПС/ГЛОНАСС датчик - Ublox Neo 8n. Дополнительно установлен Bluetooth передатчик/приемник для связи с землей, Buzzer, SD-карта для записи логов. Организация логов такова - каждый интересующий меня блок пишется в свой файл в бинарном виде, разбивается по времени, с разной частотой. Платформа летает под FreeRTOS.
Хотелось бы отдельное спасибо сказать Александру Русакову (rual) за большущую помощь и подсказки в начале пути!

Здорово.
А как ваша система ведет себя в АТИ режиме ?
Если возможно сделайте видео АТИ режима.
АТИ интересует так как это наиболее сложный режим работы.
Заранее спасибо.

ИльяПРо
oleg70:

Судя по видео, аппарат весьма достойно “цепляется” и за GPS и за горизонт, так что не надо скромничать…), если софт рукотворный и написан за год, то вообще просто гениально…

есть некоторые моменты, например небольшие колебания, перерегулирования, унитазинг, а в конце одного из видео аппарат вообще потерял устойчивость (сейчас уже поправил), у visasta летает идеально, к тому же еще в 2012.

Здорово.
А как ваша система ведет себя в АТИ режиме ?
Если возможно сделайте видео АТИ режима.
АТИ интересует так как это наиболее сложный режим работы.
Заранее спасибо.

Под АТИ режимом понимается простое управление угловым положением? в Арду он зовется Stabilize - он проще режима удержания позиции и высоты. Другое дело, что его надо тщательно настроить, вот в этом вся сложность.
Видео есть еще полугодичной давности

Управление высотой, но наклон аппарата контролируется непосредственно стиком пульта

oleg70
ИльяПРо:

Платформа летает под FreeRTOS.

Ваши оценки системы: задержка прерываний, надежность, сложность в настройке ??? ну и вообще впечатления…
(я мучаю CoOS, поэтому интересно сравнить…)

ИльяПРо

Даже сравнить не с чем, вся моя работа с FreeRTOS -это несколько задач и прием и передача семафоров. Мьютексов, таймеров, динамической памяти я не юзал. По надежности ну у меня иногда зависало, но это 99 процентов мои косяки. По началу были глюки, но потом разобрался, что нужно следить за стеком задач, объемом кучи и тд. Эта РТОС достаточно популярна, так что любые баги выявляются быстро, я б сказал что надежна. Ставится легко. Но из всей работы фриртос была одной из самых простых во многом благодаря Курницу. Задержки прерываний есть, но я не замерял. Не представляю задачи, где будут ощутимы на работе задержки ядра РТОС. При том, что в моем проекте ядро имеет наибольший приоритет среди прерываний.

ИльяПРо

У меня тут идея возникла. Что можно полностью отказаться от магнитометра и акселерометра в перспективе (для коррекции горизонта). Вот если посудить что магнитометр, что акселерометр всего лишь вносят небольшую коррекцию в угловую скорость ДУСа, а по факту вносят еще и шумы и ошибку, связанную с неравномерным магнитным полем, магнитными полями от тока в случае магнитометра, линейные ускорения в случае акселерометра. Так вот если так посудить, то коррекцию угловой скорости ДУСа может выполнять любой другой АБСОЛЮТНЫЙ датчик ориентации. Идея такая - есть ЖПС датчик на борту, есть ЖПС датчик у оператора, по радиоканалу на борт передаются координаты оператора. В мозге аппарата есть свои координаты и координаты оператора, соответственно можно построить ТРЕХМЕРНЫЙ вектор, который как раз и будет служить корректирующим для скорости гир. Если применить технологию RTK для ЖПС то можно еще и отказаться от акселерометра. Может я ошибаюсь где то, как вам идейка?

SergDoc
ИльяПРо:

Может я ошибаюсь где то, как вам идейка?

без акселя и компаса мне как-то плохо представляется переход из локальных координат к глобальным, если при движении ешё можно отказаться от компаса то в висении он нужен… а акселерометр по-моему ничему не мешает особенно при использовании либо отдельных датчиков, либо как в тех же 6500 - 9250 настраиваются они отдельно, и если с ДУС-ов мы може мзять те же 8 килогерц то аксель можно “зажать” по самое небалуйся…
и вообще у меня создаётся впечатление, что траблы с компасом преследуют только арду, хотя например в либрепилоте и таулабсе калибровка компаса вообще никакая… если кто не в курсе я добавил (сделал HAL и попросил добавить) F4BY в betaflight - выйдет в 3.0 релизе, так вот там компас намного лучще работает, и это без всяких страшных слов типа EKF… и ешё пытал betaflight чисто на 9250 без компаса и барометра - довольно приятно управляется и высоту “держит” без барометра… конечно не держит, но не дёргается как арду в стабе - вечно стиком дёргай…

jShadow
ИльяПРо:

Может я ошибаюсь где то, как вам идейка?

GPS это датчик не ориентации, а положения. Вне зависимости от положения и угловых скоростей коптера координаты коптера и оператора не поменяются, если коптер не меняет положения.

Плюс к тому, как быть, если GPS “потерялся” или врет?

Компас, при правильном его использовании довольно точный инструмент, про аксель я вообще молчу. Кстати, аксель - критически важная штука не только для ориентации, но и для ИНС.