Создание собственной системы стабилизации
обе матрицы H и A(F) обычно заменяются нелинейными уравнениями f(x) и h(x), которые EKF линеаризует вычисляя Якобиан, UKF идет другим путем, пропуская пробные точки непосредственно через нелинейные уравнения. Кстати говоря в простом случае если вы просто хотите найти угловую ориентацию из акселя и гиры, вам нужно составить нелинейные уравнения f(x) и h(x) и тут простым линейным калманом не справится, только EKF либо UKF. Завтра я расскажу что это за уравнения, вы их уже сто раз видели, так что все там довольно просто…
Оценка его эффективности должна (ИМХО) даваться для конкретного частного случая, а не в общем и везде…
(жаль что бюджет, на улетевшие в неизвестном направлении коптеры, ограничен )))
Не обязательно тратить коптеры в большом количестве 😃
Я делал логгер гиры+акселя, который писал данные на флешку. Потом в спокойной обстановке анализировал данные за компом, применяя разные алгоритмы к одному и тому же набору данных.
Здесь можно почитать rcheliclub.ru/index.php?topic=14535.0
Н вроде
это новые данные…
H - это оценка, чего мы ожидаем увидеть от датчика
Кстати говоря в простом случае если вы просто хотите найти угловую ориентацию из акселя и гиры, вам нужно составить нелинейные уравнения f(x) и h(x) и тут простым линейным калманом не справится, только EKF либо UKF.
Не совсем понятно, где нелинейные уравнения. Все действия происходят в рамках линейной алгебры.
это новые данные…
Чтоб подробно поразбираться надо бы взять какую-то опорную статью, иначе запутаемся в терминах и буквах матриц. Серег, есть годная статья на русском ?
H - это оценка, чего мы ожидаем увидеть от датчика
Вот, это матрица связи состояния и датчика. Илья, дай ссылку на опорный материал. Только так можно предметно разговаривать.
Не совсем понятно, где нелинейные уравнения. Все действия происходят в рамках линейной алгебры.
Нелинейность заключается в том, что сами по себе данные с ДУСа участвуют только в моделе, то есть фишка в том, что в фильтре данные с ДУСа не являются данными с датчика(не участвуют в update), они используются только в той самой функции f(x). Плюс операция вычисления кватерниона из угловых скоростей нелинейна.
Если на русском, то вот:
habrahabr.ru/post/121904/ . В качестве обозначений норм, но плохо изложенная и с разбегу не понятно будет.
Если на английском, то :
BAYESIAN FILTERING AND
SMOOTHING
Simo Sarkka
users.aalto.fi/…/cup_book_online_20131111.pdf
начиная со страницы 56
конкретно про UKF со страницы 81
Вообще лучше если вы начнете именно с тех ссылок которые я давал страницу назад, там с примерами, от простого к сложному разобрано, только на английском. Особенно рекомендую курс на Udacity
Я делал логгер гиры+акселя, который писал данные на флешку.
Т.е. экспериментальный алгоритм не влиял на полет (отключен от моторов) и просто выдавал данные ?
Да, наверно выход, но всё ж некоторые моменты увидеть не получится, особенно связанные с динамическими процессами, в них должен присутствовать сам аппарат с его массой и инерцией…
Примерно простой UKF выглядит так:
вектор состояния = {q0, q1, q2, q3, gx_bias, gy_bias, gz_bias}, где q - кватернион, g_bias - биасы гиры
Уравнение f(x):
УГЛОВАЯ СКОРОСТЬ = УГЛОВАЯ СКОРОСТЬ С ДУСА + БИАС + ШУМ ДУСА
функция вращения кватерниона угловой скоростью
БИАС = БИАС + ШУМ БИАСА
Уравнение h(x):
получение виртуального вектора свободного падения из кватерниона
ВИРТУАЛЬНЫЙ ВЕКТОР = ВИРТУАЛЬНЫЙ ВЕКТОР + ШУМ ВИРТУАЛЬНОГО ВЕКТОРА
Серег, есть годная статья на русском ?
нету, есть тетрадка в клеточку, где я матрицы вручную ворочал и смотрел что в них происходит )))
В дальнейшем я бы хотел поработать с камерой, и сделать его основным датчиком положения и ориентации, я вижу в этом перспективу коптеростроения.
Я тоже. Велкам, как говорится. В INAV очень нужна поддержка Optical Flow и других методов навигации в локальных координатах.
вот интересная работа www.mdpi.com/1424-8220/16/3/372/htm
ну и вообще ресурс отличный www.mdpi.com/search?q=ekf+ukf&journal=sensors&volu…
upd: rcopen.com/forum/f134/topic224458/3947
upd2: rcopen.com/forum/f134/topic224458/3700
SLAM перспективная вещь, но требует серьезных мощностей для вычисления в реальном времени. Жду с нетерпением, когда появятся оптические сенсоры адекватных размеров и энергопотребления, на выходе которых можно снимать хотя бы 3D координаты, а вместе с ними и 3D карту окружения. Тот кто первый сделает, сорвет банк 😃
Ну вот хотя бы habrahabr.ru/article/304762/
В основе технологии – точное соединение данных от всех сенсоров и их быстрая обработка. Данные устройство получает от инфракрасных датчиков, нескольких фотокамер, точных акселерометров, гироскопов и барометров. Все вместе это позволяет создать точную трехмерную картину мира вокруг устройства, обновлять в режиме реального времени, определять положение внутри нее, передавать эти данные всем приложениям, и накладывать слои с информацией поверх. Можно сказать, что в одном смартфоне у вас совмещены сразу два подхода – сканер трехмерного окружающего пространства и пульт управления, отслеживающий движения в нем.
Project tango - проект для смартфонов. Да, он содержит достаточно серьезные сесноры, но все же оптимизирован для интерфейса с пользователем, дополненной реальности. Зачем мне батарея, корпус, экран? Для робототехники и других прикладных применений нужен голый сенсор, желательно компактный и мало кушающий.
сканер трехмерного окружающего пространства
Интересен принцип указанного сканирования. стереокамеры ? (как расстояние до объекта определяется?)
Интересен принцип указанного сканирования. стереокамеры ? (как расстояние до объекта определяется?)
Mono SLAM. Вот еще пример:
Как и обещал запили пару тестов:
Как и обещал запили пару тестов:
Впечатляет. Игнорирование магнита особенно. Можно исходники? Попробую применить в INAV.
Как и обещал запили пару тестов:
Качественная работа, насчет Махони отметил - чрезвычайно низкий коэф. усиления для акселя, в реальном полете, даже на самоле, его приходится увеличивать… (а тогда результат ещё печальней)…
UKF - впечатлил, однако…
(пробую щас просто отключать аксель из коррекции при обнаружении линейных ускорений по осям, может и UKF не понадобится…)
пробую щас просто отключать аксель из коррекции при обнаружении линейных ускорений по осям, может и UKF не понадобится…
У меня сейчас сделано так: если |A-G| < 0.15*G (если то что намерил акселерометр отличается от гравитации не более чем на 15%), то аксель принимается во внимание в MARG, иначе отбрасывается.
Естественно, аксель должен быть калиброван - скомпенсированы смещения нуля и масштабы.
У меня сейчас сделано так: если |A-G| < 0.15*G
коптер ?
коптер ?
И коптер и самолет. Только у самолета до этой проверки из намеренного акселерометром убирается центростремительное ускорение v*omega (если GPS присутствует и работает).
и самолет.
У меня на самоле, при затяжных виражах (с отключенным аксом) уплывает гира сильно… надо с вибрациями наверно бороться, или фильтрами играть… пока в раздумьях…