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

ИльяПРо
alexmos:

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

Дело то в том, что зависимости неизвестны. В какие то моменты времени зависимости могут уменьшаться и вообще переменные не будут коррелировать, фильтр калмана это вычислит и перестанет связывать переменные.(Лаги ЖПС, наводки на компас). В какие то моменты времени зависимости могут появляться в неожиданных местах, что будет учитывать калман и результат улучшиться. Просто зависимости выявляются статистически, а не аналитически - в это его сила. Даже самые завуалированные зависимости калман сможет определить.
А если самому попробывать определять все зависимости будет гигантский конечный автомат, который еще надо будет настроить.

alexmos:

Ещё один минус я вижу в том, что он подстраивается итеративно, т.е. требуется время, чтобы система настроилась и подорала коэффициенты… А в реальности нужно начать правильную работу сразу после включения питания.

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

jShadow:

В итоге - прошивку, пригодную как для гоночных мелколетов, так и для более крупных коптеров/самолетов, работающую на широком спектре плат от супер-дешевых CC3D до PixHawk и OpenPilot Revolution.

А в конечном итоге какова цель? Заработать денег? Или просто хобби? Чем не устраивают опенсорсные прошивки?

jShadow
ИльяПРо:

А в конечном итоге какова цель? Заработать денег? Или просто хобби?

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

ИльяПРо:

Чем не устраивают опенсорсные прошивки?

Отвечу вопросом на вопрос - что из имеющегося в природе умеет полет по точкам на контроллере за $10? INAV умеет и INAV открытый.

ИльяПРо

Проект интересный, спасибо. Советую приглядеться к Autoquad - можно просто взять оттуда фильтр Калмана. Разработчиком INAV я к сожалению не могу стать, времени надо больше и цели у меня немножечко другие - научиться матану. Если дорасту до вашего уровня - то может быть свяжусь. В дальнейшем я бы хотел поработать с камерой, и сделать его основным датчиком положения и ориентации, я вижу в этом перспективу коптеростроения.

jShadow
ИльяПРо:

цели у меня немножечко другие - научиться матану

По-моему реализация фильтра Калмана вместо Альфа-Бета-Гамма фильтра вполне тянет на “научиться матану” 😁

ИльяПРо:

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

Я тоже. Велкам, как говорится. В INAV очень нужна поддержка Optical Flow и других методов навигации в локальных координатах.

alexmos
ИльяПРо:

В какие то моменты времени зависимости могут появляться в неожиданных местах, что будет учитывать калман и результат улучшиться. Просто зависимости выявляются статистически, а не аналитически - в это его сила

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

jShadow
alexmos:

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

Я тоже так считаю. Кальман на самом деле штука линейная, если в векторе состояния нет нелинейных составляющих, Кальман их не найдет.

ИльяПРо
ИльяПРо:

Первая считает ковариацию( меру похожести или линейной зависимости между двумя величинами) между переменными вектора состояния

Я так и написал. Поэтому вот и интересно как он будет реагировать, если зависимости нелинейные. У меня есть некоторые подозрения, что он справится даже с нелинейными зависимостями, потому что, ковариацию UKF вычисляет исходя не из самих переменных, а прогоняя через нелинейные уравнения сигма точки и только после этого вычисляет ковариацию, то есть сводит нелинейность к линейности (EKF вообще тупо каждый раз линеаризует). Но это только мое предположение и его надо проверить, но есть основания полагать, что оно правильно.

alexmos:

А закон скорости как дифференциал расстояния, который как вы говорите, он нашел - вы сами скорее всего ввели в фильтр как одно из полей вектора состояния.

я ввел только то что скорость равна скорости в предыдущий момент, а позиция равна позиция в предыдущий момент плюс скорость, нигде дифференциала я не вводил. Если внимательно посмотреть уравнения Калмана, то единственный способ фильтру менять скорость - это через инновации (Update), то есть непосредственно измеряя позицию, как по вашему он может оценить скорость, измеряя только позицию? Посмотрите внимательно на пример

Самое простое объяснение Калмана
www.bzarg.com/p/how-a-kalman-...s-in-pictures/

Там наглядно показано как определяется ковариация между переменными и как наблюдаемая переменная влияет на ненаблюдаемую.
Опять же повторю, что в примере рассмотрен простой случай с линейным фильтром калмана.
Используя же UKF или EKF можно определять даже нелинейные зависимости (мне так кажется).

kasmirov

Сам фильтр ничего не определяет.
Он подбирает коэф. матрицы для минимизации ошибки оценивания.
Если не указана напрямую модель наблюдаемого об’екта, то он вырождается в комплиментарный.
Обсуждать пользу ФК не указывая прямые зависимости между управляющим вектором и реакцией ОУ довольно странно.
А тут идет обсуждение сферического ФК в вакууме. Без мат. модели он не будет иметь преимуществ перед комплиментарным.
А матмодель у каждого аппарата своя

ИльяПРо

обсуждение велось по поводу общих черт любого фильтра калмана. Что такое по вашему матмодель? Где доказательства ваших слов (есть готовая реализация UKF или EKF)? в комплиментарный он выродится в самом простом случае, если вектор состоит из независимых переменных. Что такое ОУ? Причем здесь управляющий вектор? я его могу вообще не включать в расчет.

Возвращаясь к линейным зависимостям… Если б фильтр мог определять только линейные зависимости, то он бы не нашел такого широкого применения. Сам по себе KF нигде не используется, а используется только EKF и UKF, которые как раз могут определять нелинейные зависимости.

rual
kasmirov:

А тут идет обсуждение сферического ФК в вакууме. Без мат. модели он не будет иметь преимуществ перед комплиментарным.

А вот это архиверно! С интересом наблюдаю за дискуссией, тоже хотел об этом написать. Я хоть не гуру в калмане, но по сути на РАЗДЕЛЯТЬ ФК, как способ автоподбора коэффициентов преобразования входного вектора в выходной, и алгоритм получения выходного вектора из данных входного, т.е. матмодель объекта управления (наблюдения).

ИльяПРо:

Что такое по вашему матмодель?

Это Мат описание зависимостей объекта (матрица Фк).

ИльяПРо
rual:

Я хоть не гуру в калмане, но по сути на РАЗДЕЛЯТЬ ФК, как способ автоподбора коэффициентов преобразования входного вектора в выходной, и алгоритм получения выходного вектора из данных входного, т.е. матмодель объекта управления (наблюдения).

Не понял, простите, можно поподробнее?

rual:

Это Мат описание зависимостей объекта (матрица Фк).

Какая именно? H? A(F)?

естественно без мат модели ничего не имеет смысл, но что мешает вам ее составить? Более того я пример привел со скоростью и позицией, где была мат модель и привел объяснение как он вычисляет ненаблюдаемую скорость. Почему сферический конь в вакуме, такое ощущение, что просто хочется сказать умные слова, не прочитав предыдущие сообщения

rual
ИльяПРо:

Не понял, простите, можно поподробнее?

Я о том, что говоря, что “такой-то проект использует ЕКФ для определения положения/ориентации”, мы не можем точно сказать как этот алгоритм выглядит. Ибо гораздо важнее понимать как в этом ЕКФ описан САМ ОБЪЕКТ, который в МАРГах описывается отдельными уравнениями, а не универсальной матричной формой. То есть в МАРГе описан ЧАСТНЫЙ случай матричной формы, без алго автоподбора коэффициентов эволюции модели. Как следствие из этих рассуждений делаем вывод, что само использование ЕКФ совершенно не гарантирует качества работы алго на его основе.

ИльяПРо

Нет, строение фильтра калмана отлично от марга и основывается на совсем других принципах, это вовсе не частный случай - это совсем иной подход к решению задачи, и я считаю, что он не так эффективен как фильтр калмана. Опять же повторюсь в марге все зависимости описываются явно - АНАЛИТИЧЕСКИ. В калмане - зависимости можно задать не явно, он использует СТАТИСТИЧЕСКИЙ метод.

oleg70
ИльяПРо:

Нет, строение фильтра калмана отлично от марга и основывается на совсем других принципах

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

rual
ИльяПРо:

Какая именно? H? A(F)?

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

ИльяПРо
rual:

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

правильно. не рекомендую читать ту статью…

SergDoc
rual:

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

это просто “формула” нахождения ненаблюдаемых величин из наблюдаемых: угол из угловой скорости, скорость из ускорения, путь из скорости и т.д.
p.s. на ноуте давно стёрлись буковки, могу иногда натыкать не того - простите…

rual
ИльяПРо:

не рекомендую читать ту статью…

Так я и не читал, хотел другую найти, но не нашел …

SergDoc:

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

так это и есть матмодель. В другой статье ещё была какая-то матрица для связки датчиков (не дисперсионная) с состоянием системы.

SergDoc
rual:

так это и есть матмодель. В другой статье ещё была какая-то матрица для связки датчиков (не дисперсионная) с состоянием системы.

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

rual
SergDoc:

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

Нее… там другая… Н вроде

ИльяПРо

обе матрицы H и A(F) обычно заменяются нелинейными уравнениями f(x) и h(x), которые EKF линеаризует вычисляя Якобиан, UKF идет другим путем, пропуская пробные точки непосредственно через нелинейные уравнения. Кстати говоря в простом случае если вы просто хотите найти угловую ориентацию из акселя и гиры, вам нужно составить нелинейные уравнения f(x) и h(x) и тут простым линейным калманом не справится, только EKF либо UKF. Завтра я расскажу что это за уравнения, вы их уже сто раз видели, так что все там довольно просто…