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

ИльяПРо

H - это оценка, чего мы ожидаем увидеть от датчика

rual
ИльяПРо:

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

Не совсем понятно, где нелинейные уравнения. Все действия происходят в рамках линейной алгебры.

SergDoc:

это новые данные…

Чтоб подробно поразбираться надо бы взять какую-то опорную статью, иначе запутаемся в терминах и буквах матриц. Серег, есть годная статья на русском ?

ИльяПРо:

H - это оценка, чего мы ожидаем увидеть от датчика

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

ИльяПРо
rual:

Не совсем понятно, где нелинейные уравнения. Все действия происходят в рамках линейной алгебры.

Нелинейность заключается в том, что сами по себе данные с ДУСа участвуют только в моделе, то есть фишка в том, что в фильтре данные с ДУСа не являются данными с датчика(не участвуют в 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

oleg70
kasmirov:

Я делал логгер гиры+акселя, который писал данные на флешку.

Т.е. экспериментальный алгоритм не влиял на полет (отключен от моторов) и просто выдавал данные ?
Да, наверно выход, но всё ж некоторые моменты увидеть не получится, особенно связанные с динамическими процессами, в них должен присутствовать сам аппарат с его массой и инерцией…

ИльяПРо

Примерно простой UKF выглядит так:
вектор состояния = {q0, q1, q2, q3, gx_bias, gy_bias, gz_bias}, где q - кватернион, g_bias - биасы гиры
Уравнение f(x):
УГЛОВАЯ СКОРОСТЬ = УГЛОВАЯ СКОРОСТЬ С ДУСА + БИАС + ШУМ ДУСА
функция вращения кватерниона угловой скоростью
БИАС = БИАС + ШУМ БИАСА
Уравнение h(x):
получение виртуального вектора свободного падения из кватерниона
ВИРТУАЛЬНЫЙ ВЕКТОР = ВИРТУАЛЬНЫЙ ВЕКТОР + ШУМ ВИРТУАЛЬНОГО ВЕКТОРА

SergDoc
rual:

Серег, есть годная статья на русском ?

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

mahowik
ИльяПРо:

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

jShadow:

Я тоже. Велкам, как говорится. В 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

alexmos

SLAM перспективная вещь, но требует серьезных мощностей для вычисления в реальном времени. Жду с нетерпением, когда появятся оптические сенсоры адекватных размеров и энергопотребления, на выходе которых можно снимать хотя бы 3D координаты, а вместе с ними и 3D карту окружения. Тот кто первый сделает, сорвет банк 😃

mahowik

Ну вот хотя бы habrahabr.ru/article/304762/

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

alexmos

Project tango - проект для смартфонов. Да, он содержит достаточно серьезные сесноры, но все же оптимизирован для интерфейса с пользователем, дополненной реальности. Зачем мне батарея, корпус, экран? Для робототехники и других прикладных применений нужен голый сенсор, желательно компактный и мало кушающий.

oleg70
mahowik:

сканер трехмерного окружающего пространства

Интересен принцип указанного сканирования. стереокамеры ? (как расстояние до объекта определяется?)

jShadow
ИльяПРо:

Как и обещал запили пару тестов:

Впечатляет. Игнорирование магнита особенно. Можно исходники? Попробую применить в INAV.

oleg70
ИльяПРо:

Как и обещал запили пару тестов:

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

jShadow
oleg70:

пробую щас просто отключать аксель из коррекции при обнаружении линейных ускорений по осям, может и UKF не понадобится…

У меня сейчас сделано так: если |A-G| < 0.15*G (если то что намерил акселерометр отличается от гравитации не более чем на 15%), то аксель принимается во внимание в MARG, иначе отбрасывается.

Естественно, аксель должен быть калиброван - скомпенсированы смещения нуля и масштабы.

oleg70
jShadow:

У меня сейчас сделано так: если |A-G| < 0.15*G

коптер ?

jShadow
oleg70:

коптер ?

И коптер и самолет. Только у самолета до этой проверки из намеренного акселерометром убирается центростремительное ускорение v*omega (если GPS присутствует и работает).

oleg70
jShadow:

и самолет.

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

SergejK
ИльяПРо:

Как и обещал запили пару тестов

А алгоритмы вы сами с нуля писали, или брали чтото готовое за базу?