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

SergDoc

лаг ЖПС у тебя перекрывается уже здесь: инав_позиция = инав_позиция * 0.998 + жпс_позиция * 0.002 и служит это дело для долгосрочной коррекции “уплывания” интегратора и совершенно пофиг, что оно лагает пока ЖПС “доплывёт” до пределов способных существенно влиять на интегратор - оно усреднится так, что мама не горюй… короче показания будут правдоподобны…

rual
SergDoc:

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

Вот, золотые слова!

alexeykozin:

знаем скорость деградации инерциальной скорости по времени - принимаем ее изменения в пропорции с достоверностью

Как раз “угадывающие” фильтры с этим борятся, экстраполируя первообразные из производных, полученных с “быстрых” датчиков (ускорение, угловая сскорость/ускорение), подбирают коэффициенты экстраполятора по результатам сравнения с “медленными” датчиками абсолютных величин (скрость, путь, высота). В ПИДе экстраполятором является компонент И, демпфером Д.

alexeykozin
SergDoc:

лаг ЖПС у тебя перекрывается уже здесь: инав_позиция = инав_позиция * 0.998 + жпс_позиция * 0.002 и служит это дело для долгосрочной коррекции “уплывания” интегратора и совершенно пофиг

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

rual
alexeykozin:

накручен сильно то может и подпортить - позиция слишком интенсивно будет догонять жпс.
и кроме позиции еще ведь подтягивется скорость…

я вчера писал про демпфер по дельте ошибки, он притормозит проскок равновесия. В этом кстати причина раскачки.

alexeykozin
rual:

я вчера писал про демпфер по дельте ошибки, он притормозит проскок равновесия.

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

SergejK
DChernov:

может ли быть отсутствие “коробочки” следствием неточностей в компенсации наклонов?

Может как раз с этим связаны осцилляции? Всетаки при резком оттормаживании углы меняются очень сильно.

alexeykozin
SergejK:

Может как раз с этим связаны осцилляции? Всетаки при резком оттормаживании углы меняются очень сильно.

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

SergejK

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

SergDoc

Что-то мне подсказывает, что я щас возьму всё по@ерю и начну проект с нуля - задолбало в чужой код вклинивать свои задумки, а потом мужественно искать тот-же барометр 😦
если честно пугают 2 вещи:
станция - вообще не представляю как это рисовать и общаться потом с ней
модули и драйвера - нарисовать не проблема, а как их “зацепить” и контролировать - х.з. я тут намедни hardfault поймал с SPI - наверно неделю не мог догнать, что нога cs2 = 1 не существует, есть cs1 = 0 компилятор пропустил я в отладке дооолго не мог понять что за порт у меня такой - вот такой из меня программер))) а всё потому что spi и датчики в одном файле, а процедура общения с ними в другом… короче надоело…
ладно за зиму что-нибудь накорякаю, блин да ещё под 2 железяки - ну эт не страшно обе помню, если других проблем не будет, надо ж как-то арду допиливать, а я совсем в другую степь пошел…

SergejK:

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

не ну вроде ж так все и делают)))

alexeykozin
SergDoc:

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

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

SergDoc

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

alexeykozin
SergDoc:

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

это тоже проходили… анализируя чужой опыт решили сразу строить…
вот что получилось my.mail.ru/mail/kozinanatoliy/photo/138
я папе посылал эскизы - он мне обмеры и руководил там.
зы прошу прощенья за отклонение от темы

rual
alexeykozin:

зы прошу прощенья за отклонение от темы

Тоже немного отклонюсь )) Как человек мало в чем искушенный (особо в строительстве), удивлен, что сначала ставили декоративную стену, а потом внутри обкладывали пеноблоком. Дом отличный получился!

Теперь, как обещал Алексею, выложу наработки по “виртуальной лаборатории”. Вот так я это назвал )))
Вот демка, прошу прощение за качество, снято авторегистратором

для связи АП с симом использовал “прокладку” на Питоне.
Если кому интересно может сам запустить на STM32F4Discovery или F4BY. Спрашивайте, расскажу как запустить. Полётник подключается к компу через порт GPS, визуализация (тоже написанная на питоне) соединяется через USB или модемный порт. Приемник подключается по SBUS или SPPM. Прошива и питоновские скрипты в архиве.

Облако (2).zip

SergDoc
alexeykozin:

это тоже проходили… анализируя чужой опыт решили сразу строить…

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

rual

Контроллер получает от сима угловые скорости и вектор ускорения (аксель), углы с сима используются только для формирования вектора магнитометра. По сути эмулируется плная работа ИНС. На видео управление самолем чисто коптерным ПО, естественно работает только режим угловой стабилизации, но даже этот режим позволяет управлять самолем по коптерному, на видео я задаю курс ВПП и просто подруливаю тангажем и креном, одним пальцем. Достаточно задать положение в пространстве и газ, самолет постарается занять указанную ориентацию в пространстве. Там где смоль выполняет спираль, я кручу задачу курса, если сделать это быстрее чем отработает эроплан, то он может выполнить полупетлю вверх или вниз, куда ему ближе. “Погоня за морковкой”))) Сейчас вот думаю как скрестить коптерный АП с самолетным, отдельно друг от друга (как в АРДУ) я их не рассматриваю. Видимые проблемы: раскачка на высоких скоростях, ну дописывание АП для управления аэродинамическим ЛА. Первая - нужно ввести в ПИД воздушную скорость, я так понимаю как квадратичный коэффициент; вторая - по большому счету нужно только поворачивать задающий вектор в сторону целевой точки.

HikeR
rual:

Контроллер получает от сима

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

rual:

как скрестить коптерный АП с самолетным

имхо, у вас основная ошибка — разделять АП по модельному признаку. вспоминая Openpilot, один и тот же АП используется для коптеров, самолетов, машинок и даже двухколесных моделей (которые статически неустойчивы). разница лишь в задействованных микшерах.

alexeykozin
rual:

Теперь, как обещал Алексею, выложу наработки по “виртуальной лаборатории”. Вот так я это назвал )))

это супер!
в самом деле это супер инструмент когда есть сим, ускоряет процесс на несколько порядков.
еще со времен ардупилота на 328 меге изучал ардупилот именно с xplane
потом появился апм и в мишен планере появилась возможность соединять контроллер и симулятор прямо по юсб
с использованием mission planner
но билд “hil” (hardware in loop) работал только с совсем редкими самолетными прошивами.
была мечта изучить поведение коптера и даже модель квадрика нашлась для иксплейна но заставить квадрик летать так и не смог.
после многих попыток он таки стал стабилизироваться но ни высоту не держал ни делал адекватных попыток пройти маршрут.
видимо нужные ардукоптеру значения акселей и компаса кудато нетуда шли

rual:

или F4BY. Спрашивайте, расскажу как запустить

это интересно.
но если это писать в этой ветке то инфа которая может понадобиться многим может потеряться
как минимум надо веточку начать

HikeR:

имхо, у вас основная ошибка — разделять АП по модельному признаку. вспоминая Openpilot, один и тот же АП используется для коптеров, самолетов, машинок и даже двухколесных моделей (которые статически неустойчивы). разница лишь в задействованных микшерах.

миксами получится УГ
хороший автопилот использует физику модели

SergDoc
rual:

или F4BY

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

rual
HikeR:

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

ХPlane 10 , арду тоже его пользует. Спасибо Алексею Козину за предоставленные материалы по АРДУ.

HikeR:

у вас основная ошибка — разделять АП по модельному признаку.

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

HikeR
alexeykozin:

миксами получится УГ

хороший АП принимает на вход фактическое и желаемое положение (направление/координаты/…) модели, а выдает только ошибку между этими параметрами. УГ — это использование “физики модели” в несвойственных задаче расчетах.

rual:

ХPlane 10

ох, ну и здоровенный же “микроскоп” для такой задачи 😉 AeroSim RC не желаете попробовать? размер и тех. требования намного более скромные, набор данных включает все что душеньке угодно. единственное ограничение у него заключается в частоте обновления 60 Гц (т. е. зависит от монитора).

alexeykozin
HikeR:

хороший АП принимает на вход фактическое и желаемое положение (направление/координаты/…) модели, а выдает только ошибку между этими параметрами. УГ — это использование “физики модели” в несвойственных задаче расчетах.

объясню вкратце чем разница.
вверх у коптера это +газ в случаях если на стабилизацию хватает мощности
вверх у самолета это рв на себя при условии что достаточно ВОЗДУШНОЙ скорости а газ должен контролировать воздушную скорость
повернуть у коптера - наклониться в нужную сторону
повернуть у самолета в зависимости от типа модели - можно на руле направления, можно на крене, можно на крене + рв на себя, можно на крене + рв + руддер
к примеру нужен маневр влево и вниз - коптер сбросил газ и дал крен.
для многих самолей это сложный маневр. при левом крене (для левого поворота) и руле высоты (от себя) очень многие модели совершают снижение и правый поворот
у самолета есть режим планирования, у коптера нельзя вырубать моторы (у некоторых моделей они не раскрутятся) самолету при наличии аирспида свойственен режим полета в котором он может определить курс не имея компаса, коптер этого не умеет (хотя будем учить)
если делать универсальный код который будет использовать только миксы то он будет настолько сложный и в разработке и в чтении и настройке что будет неприменим