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

oleg70
alexmos:

К примеру в ICM20608 есть возможность получать данные, минуя фильтры, в том виде как их получает внутренний АЦП.

Дык, минуя фильтры, не означает минуя выходные регистры, в которые он пишет с частотой 2000 Кгц… не более.
(еслиб он писАл с частотой 32 Кгц то и чувствительнось у него была б не 2000 гр.сек , а 32000 гр.сек…, иначе никак по моему…)

alexmos:

Не вижу отличий аналогового от цифрового.

Тут то и разница - что у аналогового можно считывать показания “моментально” на частоте ограниченной только физическими свойствами микромеханики (возможно 32 Кгц), а уж как и чем оцифровывать/фильтровать уже другой вопрос.

alexmos:

думаю даже 100 Гц будет вполне достаточно

Может даже и меньше (зависит от “тушки” коптера)… Иными словами:
увеличивать частоту выборок = увеличивать чуйку сенсора=возможность отслеживания более мелких/плавных угловых скоростей скоростей=увеличивать точность ИМУ…
А уж насколько это реально оправдано в каждом конкретном случае - это дело вкуса.

alexeykozin
SergDoc:

а я и не знал) вот одно плохо в 6000 -й фильтр один и на дус и на аксель, вот 6500 - 9250 совсем другой разговор, мухи отдельно, котлеты отдельно…

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

alexmos
SergDoc:

ну тут как бы посчитать и повесить на выход датчика rc или lc фильтр на определённые частоты и жестко убить всё ненужное, а нужное дать на ацп, но стоимость и громоздкость конструкции - датчики, фильтры, ацп (24 бит или больше - 12 битный проца как-то не в кайф) - не надо усреднять чего-то программно - 8000 раз прочитали - 8000 раз выдали на регули…

Это прям как миф про теплый ламповый звук и про то, что грампластинки - до сих пор лучший носитель для аудио, а цифра “от лукавого” 😃 ИМХО, сейчас абсолютно все можно повторить в цифре, и если и будут потери в задержке/точности, то нужно просто понимать пороги, где это уже не критично. Коптеру цифрового гирика должно за глаза хватать при любых маневрах. В конце концов, реакция человека 200ms - самое узкое место тут, а задержки при частоте опроса 1кГц - всего 1 мс.

oleg70:

еслиб он писАл с частотой 32 Кгц то и чувствительнось у него была б не 2000 гр.сек , а 32000 гр.сек…, иначе никак по моему

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

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 процентов мои косяки. По началу были глюки, но потом разобрался, что нужно следить за стеком задач, объемом кучи и тд. Эта РТОС достаточно популярна, так что любые баги выявляются быстро, я б сказал что надежна. Ставится легко. Но из всей работы фриртос была одной из самых простых во многом благодаря Курницу. Задержки прерываний есть, но я не замерял. Не представляю задачи, где будут ощутимы на работе задержки ядра РТОС. При том, что в моем проекте ядро имеет наибольший приоритет среди прерываний.