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

alexeykozin

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

SergDoc

А чё Макс не сказал? я ж давал для выкладки схему и сборочный в ПДФ… Да и смысла схему прятать нет - всё в коде видно, герберы другое дело - нечего плодить халяву…
Парадокс, я сейчас в состоянии полностью повторить OP REVO, практически по памяти (а вы знаете что они 2-х версий?), но мне это ни к чему, а без герберов чёт я не видел “левых” в продаже…

rual
oleg70:

Предлагаю совместные усилия в этом направлении, обмен опытом так сказать…

Не вопрос, предлагаю обсуждать общетеретические вопросы прямо здесь, а отдельные частные вопросы через личку или мыло.
В данный момент у меня проблема с “глубоким” скрещиванием акселя и абсолютных датчиков координат (барик+ ГПС). Под глубоким слиянием я понимаю прямое объединение кинематических параметров ЛА (ускорения, скорости, координат) от акселя через ВЧ фильтр и ГПС+барик через НЧ.
Вычисление идёт встречно ускорение акселя-> скорость ИНС-> координата ИНС; координаты ГПС+барик -> скорость ГПС+барик. Потом скорости и координаты объединяются через фильтр.
Всё в принципе работает, но не правильно работает интегральная корректировка горизонта… У меня получается положительная обратная связь, чем больше разгоняется ЛА тем больше наклоняется горизонт в противоположную сторону, а стабилизатор наклоняет его в сторону вектора скорости.

SergDoc:

“Бандой” работать, конечно удобней, но на одном железе и в одной среде ибо, что работает в gcc, кеил может убить при оптимизации, ну и сами понимаете, что 407-й и 427-й камень вроде из одного теста а работают не совсем одинаково тот же SDOI…

Я пока вижу работу “банды” исключительно в обмене идеями на уровне принципов и математики, хотя в обмене “принципиальным” кодом тоже проблем не вижу. У меня например железо и алгоритмы полностью разделены, есть небольшой АПИ.

oleg70
rual:

Под глубоким слиянием я понимаю

Замысел нехилый… Насколько я понял, (такие вещи лучше воспринимаются в виде блок-схемы) сразу “бросается в глаза” явная “закольцовка”: аксель>скорость>координаты и ГПС.координаты>скорость (?),
не понял - “кто кого” корректирует… (параметры одновременно корректируются что ль ??)

SergDoc

Да никто никого не корректирует, не совсем правильное слово, система сама себя должна корректировать, а вот как? другой вопрос, аксель в краткосрочной перспективе, ЖПС и баро в долгосрочной…

oleg70
SergDoc:

Да никто никого не корректирует

А как же фраза:

rual:

Вычисление идёт встречно

??

SergDoc:

система сама себя должна корректировать

“система” - это есть: координаты, скорость, высота…

rual
oleg70:

не понял - “кто кого” корректирует… (параметры одновременно корректируются что ль ??)

Есть набор параметров которые получаются интегрированием акселя (параметры ИНС), скорость и координаты слабо, но постоянно корректируются ГПСом и бариком. Абсолютная скорость получается дифференцированием барика и ГПСа. Если моск резко дернуть в сторону, то аксель “подкидывает дровишек” в интегратор, а ГПС и барик пытаются его “успокоить”.

oleg70:

система" - это есть: координаты, скорость, высота…

Все параметры в декартовом пространстве в виде 3хмерных векторов.

oleg70:

такие вещи лучше воспринимаются в виде блок-схемы

Это можно, но не сегодня.

По сути сам фильтр есть ПИД, только ступенчатый. Вверх идёт интеграция акселя, вниз дифференциация ГПС и баро. Потому я и пишу -“встречно”, предполагаю что таким образом подбором весовых коэффициентов можно получить приемлемую ИНС. Алхимия короче ))))
И всё это более менее работает, но вот беда с горизонтом, его нужно корректировать производной ошибки скорости (ускорением исправления 😎 ) ИНС… Вот тут вся собака порылась.

SergDoc
rual:

Алхимия короче ))))

алхимия у Саши Маховика ))) там на вие автоматический подбор коэффициентов )))

rual
SergDoc:

там на вие автоматический подбор коэффициентов )))

Это круто! Смотрел как то его старые ролики, полет весьма качественный.

Тоже надо какнить кино снять. Сравнить работу АП и моей ИНС на параллельных Ф4БЫ по коррекции центростремительного ускорения, но всё руки не доходят карусельку сляпать…

Geniok
SergDoc:

А что в консоли пишет?
может надо sd вставить или фрам стереть, а может и то и другое?

При подключении через консоль выводит стандартное меню команд.

При подключении на других страницах пишет вот это (скрин 2). При нажатии на детали, показывает данный экран (скрин 3)

На СД карте создана директория APM, в ней файл BOOT.txt, с записью: "External hmc5883 start failed "

SergDoc

это консоль оси, арду не запущен…
вытащить sd
из консоли
mtd start
mtd erase
лучше действовать так:
подключиться терминалом к первому усарту на скорости 57600 и включить плату - выдаст полный стартовый лог оси - можно посмотреть что не так при старте…

oleg70
rual:

набор параметров которые получаются интегрированием акселя

Я тоже пробовал интегрировать аксель… , первый интеграл - “ещё ладно”, а второй - “сразу в небо” (шумы дают своё)… , короче попробовал и бросил… его (интеграл) надо чем то зверски тормозить… а если нет GPS (например плохой приём…?),
короче бросил… мыслей пока нет… и не факт что появятся…

SergDoc
Geniok:

"External hmc5883 start failed "

внешний компас, его нет…

oleg70:

короче бросил… мыслей пока нет… и не факт что появятся…

оно даже на АВР работает…
в вие первые наработки маховика по альхолду есть, можно подглядеть…

rual
oleg70:

Я тоже пробовал интегрировать аксель… , первый интеграл - “ещё ладно”, а второй - “сразу в небо” (шумы дают своё)… , короче попробовал и бросил… его (интеграл) надо чем то зверски тормозить… а если нет GPS (например плохой приём…?),

У меня всё работает, интегрирование как раз проще. По сути это осреднение показаний акселя. Единственная причина по которой интеграл координат неконтролируемо улетает - это уплывание скорости ИНС. В моём случае скорость (первый интеграл) придерживается диф. значением с абсолютных датчиков и корректируется ошибкой координат ИНС. Интегральная скорость также начинает ползти при отклонении искусственного горизонта (ИГ) от истинного, при этом в покое вектор акселя -вектор G не равны нулю, появляется ошибочное. Эта же ошибка корректируется накапливаясь в интеграле скорости корректирует ИГ.

SergDoc:

оно даже на АВР работает…

С точки зрения алгоритма тип вычислителя не важен, главное чтобы справлялся с объёмом, тем более что всё пишется на С/С++. Я изначально выбирал СТМ32, т.к. не хотел столкнуться потолком производительности в “самый интересный момент”.

SergDoc:

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

Тут у меня всё в порядке, какнить кино покажу. Сейчас проблема именно в коррекции горизонта по ошибке линейной скорости.

rual
oleg70:

а если нет GPS (например плохой приём…?),

Здесь вообще нет проблем: абсолютные координаты постоянны, скорость постоянна и равна нулю. ИНС в долгосрочной перспективе (в переделах 1 секунды) подтягивается к этим значениям, при этом может определять, а стаб парировать, резкие толчки.

SergDoc
rual:

скорость постоянна и равна нулю.

где? скорость чего равна нулю? Ты в курсе, что снайперы стреляя на дальние расстояния учитывают скорость вращения земли? А ты аппарат намного медленней пули оставляешь лететь неизвестно куда? Блин вот где-то ж видел/читал в ins учёт этих дел… именно скорость вращения земли было…
Линейная скорость вращения Земли (на экваторе) — 465,1013 м/с (1674,365 км/ч).

rual
SergDoc:

где? скорость чего равна нулю?

Я имею ввиду при сбое ГНСС. Мнимые координаты по ГНСС постоянны, скорость соответственно равна нулю.

SergDoc:

Ты в курсе, что снайперы стреляя на дальние расстояния учитывают скорость вращения земли? А ты аппарат намного медленней пули оставляешь лететь неизвестно куда? Блин вот где-то ж видел/читал в ins учёт этих дел… именно скорость вращения земли было…

Это всё понятно, но снайпер (артиллерист и тд) формирует траекторию в самом её начале, поэтому должен ЗАРАНЕЕ учесть все коррекции. ИНСка (на МЕМСах) же сама не способна без ПОСТОЯННОЙ коррекции от ГНСС на таком расстоянии приемлемо отобразить траекторию.

SergDoc:

Линейная скорость вращения Земли (на экваторе) — 465,1013 м/с (1674,365 км/ч).

Это как бы не важно, потому что закон Ньютона гласит, что “существуют такие системы отсчета … и они называются инерциальными”. В моей интерпретации за начала прямоугольной системы отсчета берется точка взлета “дом”, и эта точка привязана к поверхности Земли в данном географическом месте. И эту систему отсчета условно можно считать инерциальной, т.е. всё в ней движется прямолинейно равномерно. Для дальних полетов и на больших скоростях данная теория была бы не точна, но а в нашем случае методическая точность на пару порядков выше инструментальной…

SergDoc
rual:

ИНСка (на МЕМСах) же сама не способна без ПОСТОЯННОЙ коррекции от ГНСС на таком расстоянии приемлемо отобразить траекторию.

ну как мы видели из кино где-то выше, то может на довольно большом расстоянии, нам же надо продержаться-то несколько секунд-минут…
блин мне не хватает визуализации всего происходящего 😦 а в голове я как-то не могу всё представить…

oleg70
SergDoc:

мне не хватает визуализации всего происходящего

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

oleg70

Интересный факт (к теме о качестве стабилизации): на GitHabe недавно появился готовый “драйвер” по работе с моим BMX055.
Так вот, автор софта использует для температурной коррекции показаний магнитометра данные из НЕ-существующих регистров сенсора (в даташите они указаны как “reserved” !! и ни слова по их использованию)… теория заговора ? (😃), а ведь факт на лицо… (так же наверно и с DMP MPU6000 было…)