Создание собственной системы стабилизации
нее… мпу я изменять не собираюсь))) разве что только с adxrs )))
А какой из MPU?
Я слышал мнение, что самый продвинутые сенсоры у Frescale, по датащиту так и есть. Кто-нибудь сравнивал с MPU6500 и гирами от ST?
наверное лучше нарисовать .
Картинку приложил, взята из неплохой методички kafpson.kpi.ua/bins1.pdf
Красным выделена как раз схема коррекции положения от ГНСС, а ты Алексей, как я понял говорил про блок 5, тот что осредняет смещение осей акселя, включая g.
При этом сигналы скорости и радиус вектор, которые входят в блок 2 влияют на вычисление ориентации.
по идее ахрс может определять положение координат для инс а линейные и центрифугальные ускорения могут исправлять горизонт в ахрс
Да, если АХРС представляет собой только угловой интегратор сигналов с гиры, я же не хочу разделять ахрс и инс, ибо там много взаимосвязей, и для меня это идеологически единая система, а ахрс и инс это только выходные функции ориентации и кинематики соответсвенно. Чистая ахрс дает истинную ориентацию только ограниченное время или длительно в состоянии покоя.
в самом деле у арду весьма точно работает 3д гирскоп, к примеру народ пробовал включать на север носом без компаса и утверждают что в полете уход не более пары градусов в минуту.
дык при длительных поворотах истинный курс легко привязывается к вектору движения через отслеживание центростремительного ускорения. Для висящего коптера не актуально, с другой стороны для него актуально использовать инерциалку и при мелких перемещениях не так важен истинный курс.
кроме того коэфициент коррекции гироскопа горизонта от “акселя” регулируется коэфициентом
собственно к вектору акселя логично сумировать горизонтальные ускорения для вычисления “надира” и уже к этому надиру тянуть горизонт.
Да, всё верно.
А какой из MPU? Я слышал мнение, что самый продвинутые сенсоры у Frescale, по датащиту так и есть. Кто-нибудь сравнивал с MPU6500 и гирами от ST?
6500 он же 9250-9255 (компАс в расчёт не берём), 6000 - как бы он не был хорош но устаревает, корпус большой и у 6500 - 9255, как уже говорил фильтры дус и акселей раздельные…
Freescale - это который в кролике, mma-чего-то там - 12-14 битные аксели для иму зажатые фильтрами может и да но не для ins, немцы вон до сих пор летают на аналоговом от ST, но у них ДУС-ы на несколько порядков лучше, но покупать 1 по цене всего моего контроллера (а их нужно 3) как-то страшновато))) можно конечно так: docs.google.com/spreadsheets/d/…/pubhtml но это уже совсем другая история (
Кто-нибудь сравнивал с MPU6500 и гирами от ST?
примерно одинаково, а вот с акселями ST как-то накосячили (но не со всеми - аналоговые работают хорошо, значит в обработке и фильтрации напортачили), компасы тоже ничего - можно сказать содраны с HMC
Да, всё верно.
ты хотел ответ - вот по твоей картинке выкидываем ГНСС, перед первым интегратором всовываем адаптивный фильтр (раньше нет смысла петля иму будет медленная) с учётом вектора управления (обратная связь с ПИД-а)…
фильтр примерно так работает:
получили данные - предсказали положение, получили следуюшие данные - ух-ты ёпрст - промахнулись с предсказанием - поменяли коэффициенты, вектор управления тоже обязателен иначе не будем знать или это мы полетели или сам…
мануал и схему буду тщательно изучать, сходу проникнуться неполучилось.
Тимур облетывает мои эксперименты по построению инерциалки (за что ему преогромнейшее спасибо)
вот что он обнаружил - что достаточно спокойное поведение при входе в удержание позиции из нулевой скорости
но очень плохой эффект если в режиме удержания позиции попробовать разогнаться и резко тормознуть - начинается раскачка.
мои наблюдения таковы- у данной системы есть частота собственных колебаний!
причем ка не меняй коэфициенты притяжки частота меняется мало.
приблизительная частота 1/5 герца . тоесть цикл за 5 секунд.
идея в том что неспроста в родном арду коде хранится история ошибки учитывающая задержку жпс данных.
чтто получается - у меня идет подтяг к отстающей позиции жпс (как минимум переодически ошибка сотсавляет 0,2 сек т.к. используется частота обновления жпс 5 гц) при этом подтяг к устаревшей позиции приводит к нарастанию обратной скорости инав, за это время жпс дает отставшие данные по позиции “вперед” но коптер уже удетел назад и подтяг начинает обратную работу - отсюда источник раскачки…
пока не разобрался в принципе работы интегратора Александра Русакова, возможно он и позвляет корректировать позицию не к чистым жпс данным а к данным жпс + краткосрочный прогноз инав за короткое время определенное временем задержки данных жпс модуля.
поскольку основное свойство инерциалки - достоверность результата обратно пропорциональна времени измерения,
т.е. гипербола где по оси икс время а по игреку - достоверность.
поскольку за короткое время задержки жпс данных данные инерциалки не успеют устареть то думаю попробовать такой вариант подтяга
вместо
инав_позиция = инав_позиция * 0.998 + жпс_позиция * 0.002
на
инав_позиция = инав_позиция * 0.998 + (жпс_позиция + прогноз_инав_за_время_задержки_жпс) * 0.002
аналогично со скоростью
пока вопрос в выборе незатратного алгоритма.
решение в лоб - сохранять ускорения и dt в массиве,
считать прогноз за константу времени задержки жпс (константу определить экспериментально)
т.е
суммировать ускорения из массива истории пока DT не достигнет времени задежки жпс
дельта позиция = at**2
дельта скорость = at
но имхо просядет производительность
но очень плохой эффект если в режиме удержания позиции попробовать разогнаться и резко тормознуть - начинается раскачка.
вот о чём я говорил выше - нет обратной связи с управлением==ошибка расчёта… ты реально предсказываешь положение для команды на ПИД - но ты не знаешь предыдущей реакции ПИД
т.е. в данном случае этот пид- интегратор это некая система вычисляющая собственный резонанс и работающая “амортизатором”
что напрягает в пид интеграторе. непонятна его временная храрактеристика и способность к деградации. будет ли он бесконечно деградировать в определенных ситуациях,
например при постоянной ошибке курса, к примеру если компас врет градусов на 30
Амортизатором служит только дифференциальная часть - всё остальное это по сути управление… Так вот вернёмся к КУК-у там как раз угловая скорость служит пропорцией угол- интегральной составляющей - развивая дальше мысль, можно пересмотреть пид для инерциалки, где скорость будет служить пропорцией, путь - интегральной составляющей, а ускорение дифференциальной! Главное в этом то, что нет лишних интеграторов!
ИМХО
если говорить о “идеальной инерциалке” должны быть не P I D смешивания датчиков а коэфициенты к лагам компонетов системы.
к примеру знаем что жпс запаздывает на 0,1 или 0,2 сек и компенсируем это
знаем скорость деградации инерциальной скорости по времени - принимаем ее изменения в пропорции с достоверностью
безусловно пиды. втч с ОС нужны, с тем чтобы скомпенсировать собственные погрешности датчиков но как бы фиксированный лаг жпс перекрывать пидом тоже как то неразумно
лаг ЖПС у тебя перекрывается уже здесь: инав_позиция = инав_позиция * 0.998 + жпс_позиция * 0.002 и служит это дело для долгосрочной коррекции “уплывания” интегратора и совершенно пофиг, что оно лагает пока ЖПС “доплывёт” до пределов способных существенно влиять на интегратор - оно усреднится так, что мама не горюй… короче показания будут правдоподобны…
развивая дальше мысль, можно пересмотреть пид для инерциалки, где скорость будет служить пропорцией, путь - интегральной составляющей, а ускорение дифференциальной! Главное в этом то, что нет лишних интеграторов!
Вот, золотые слова!
знаем скорость деградации инерциальной скорости по времени - принимаем ее изменения в пропорции с достоверностью
Как раз “угадывающие” фильтры с этим борятся, экстраполируя первообразные из производных, полученных с “быстрых” датчиков (ускорение, угловая сскорость/ускорение), подбирают коэффициенты экстраполятора по результатам сравнения с “медленными” датчиками абсолютных величин (скрость, путь, высота). В ПИДе экстраполятором является компонент И, демпфером Д.
лаг ЖПС у тебя перекрывается уже здесь: инав_позиция = инав_позиция * 0.998 + жпс_позиция * 0.002 и служит это дело для долгосрочной коррекции “уплывания” интегратора и совершенно пофиг
при условии что коэфициент подтяга маленький, а если он накручен сильно то может и подпортить - позиция слишком интенсивно будет догонять жпс.
и кроме позиции еще ведь подтягивется скорость…
накручен сильно то может и подпортить - позиция слишком интенсивно будет догонять жпс.
и кроме позиции еще ведь подтягивется скорость…
я вчера писал про демпфер по дельте ошибки, он притормозит проскок равновесия. В этом кстати причина раскачки.
я вчера писал про демпфер по дельте ошибки, он притормозит проскок равновесия.
я попробую это реализовать, но мне нужно сначала выкурить как следует доку…
может ли быть отсутствие “коробочки” следствием неточностей в компенсации наклонов?
Может как раз с этим связаны осцилляции? Всетаки при резком оттормаживании углы меняются очень сильно.
Может как раз с этим связаны осцилляции? Всетаки при резком оттормаживании углы меняются очень сильно.
и это тоже буду тестить, нужно сначала чтоб хоть плохенько но полетело…
но отработка малых перемещений с точки зрения тестирования - задача не такая сложная как полетные осциляции ибо легко проверить экспериментально.
непонравилось - поменял и снова пробуй
Кстати, на мой взгляд ахрс и инс не обязательно должны быть единым целым. Из углов в пространстве можно вычислить теоретические показания акселерометра и вычтя из них реальные показания найти результирующий вектор ускорения. Его потом по проекциям разложить.
Что-то мне подсказывает, что я щас возьму всё по@ерю и начну проект с нуля - задолбало в чужой код вклинивать свои задумки, а потом мужественно искать тот-же барометр 😦
если честно пугают 2 вещи:
станция - вообще не представляю как это рисовать и общаться потом с ней
модули и драйвера - нарисовать не проблема, а как их “зацепить” и контролировать - х.з. я тут намедни hardfault поймал с SPI - наверно неделю не мог догнать, что нога cs2 = 1 не существует, есть cs1 = 0 компилятор пропустил я в отладке дооолго не мог понять что за порт у меня такой - вот такой из меня программер))) а всё потому что spi и датчики в одном файле, а процедура общения с ними в другом… короче надоело…
ладно за зиму что-нибудь накорякаю, блин да ещё под 2 железяки - ну эт не страшно обе помню, если других проблем не будет, надо ж как-то арду допиливать, а я совсем в другую степь пошел…
Кстати, на мой взгляд ахрс и инс не обязательно должны быть единым целым. Из углов в пространстве можно вычислить теоретические показания акселерометра и вычтя из них реальные показания найти результирующий вектор ускорения. Его потом по проекциям разложить.
не ну вроде ж так все и делают)))
Что-то мне подсказывает, что я щас возьму всё по@ерю и начну проект с нуля - задолбало в чужой код вклинивать свои задумки, а потом мужественно искать тот-же барометр
интуиция показывает что в ходе переписывания сначала найдется баро и появится желание откатиться до точки входа,
а если оно будет преодолено то все равно в результате взаимствования (и знания того как сделали другие) можно поцепить логические, математические ошибки и программные баги
😃
глаза боятся, а руки - крюки))) мне очень многое не нравится в известных мне проектах ( и как правило - это так глубоко всё завязано, что менять - руки опускаются… это как и с домом - купить или строить, вот купил, а щас понимаю, что лучше было строить… я столько переделал и понимаю, что стою до сих пор в начале пути, что надо перепланировать ещё половину дома (половину я переделал) и достроить отдельную кухню, а существующую превратить в прихожую - Макс был у меня в гостях, может подтвердить что кухня - не кухня)))
это как и с домом - купить или строить, вот купил, а щас понимаю, что лучше было строить… я столько переделал и понимаю, что стою до сих пор в начале пути, что надо перепланировать ещё половину дома (половину я переделал) и достроить отдельную кухню, а существующую превратить в прихожую - Макс был у меня в гостях, может подтвердить что кухня - не кухня)))
это тоже проходили… анализируя чужой опыт решили сразу строить…
вот что получилось my.mail.ru/mail/kozinanatoliy/photo/138
я папе посылал эскизы - он мне обмеры и руководил там.
зы прошу прощенья за отклонение от темы
зы прошу прощенья за отклонение от темы
Тоже немного отклонюсь )) Как человек мало в чем искушенный (особо в строительстве), удивлен, что сначала ставили декоративную стену, а потом внутри обкладывали пеноблоком. Дом отличный получился!
Теперь, как обещал Алексею, выложу наработки по “виртуальной лаборатории”. Вот так я это назвал )))
Вот демка, прошу прощение за качество, снято авторегистратором
для связи АП с симом использовал “прокладку” на Питоне.
Если кому интересно может сам запустить на STM32F4Discovery или F4BY. Спрашивайте, расскажу как запустить. Полётник подключается к компу через порт GPS, визуализация (тоже написанная на питоне) соединяется через USB или модемный порт. Приемник подключается по SBUS или SPPM. Прошива и питоновские скрипты в архиве.