Калибровка магнитометра с помощью расширенного фильтра Калмана
Вставка
- Опубліковано 19 кві 2024
- В этом видео я покажу, как откалибровать магнитометры с помощью расширенного фильтра Калмана. Такая задача часто встречается при построении магнитных компасов.
- Наука та технологія
Здравствуйте с уважением к вашему делу много усилий сделано и вложено для достижения цели подскажите как найти схему для накачки импульсом лампы ксенола для рубинового лазера как собрать схему где найти и как сделать.
С уважением к вам и вашему делу огромных успехов достижений здоровья счастья.
Надо попробовать сигнал с электроэрозии пропустить через фильтра Калмана.
Ну фильтр Калмана - классика цифровой обработки сигналов
Спасибо за ролик, есть вопрос.
В ютубе есть ряд буржуинских материалов на эту тему, в частности матлабовские видео. Ссылки ютуб не переваривает, но по названию можно найти: Understanding Sensor Fusion and Tracking, Part 2: Fusing a Mag, Accel, & Gyro Estimate
В этом ролике обсуждается как раз калибровка, и тоже объясняется, что есть вектор смещения, и матрица поворота. Вот только там почему-то в качестве калибрующего соседа используется акселерометр, причем не совсем ясно, в сочетании с гироскопом или нет. У вас в статье на Хабре описана матрица поворота R, вроде как происходящая только из данных гироскопа. Я так понимаю, что наилучший вариант для матрицы R - это создать ее на базе данных акселя и гиро, с использованием допустим EKF (расширенного калмана).
Я это к чему веду. Какой вообще порядок действий то при работе с IMU? Ну скажем мы запустили все это, данные идут, нам что калибровать первым? Магнитометр зависит от акселерометра, гироскоп с акселерометром проходят стадию sensor fusion вместе, при этом у всех них есть смещение (у гиро как минимум, приводящее к дрейфу, у акселя тоже), у магнитометра аж еще и смещение плюс деформация из-за магнитных полей.
И что делать со смещением датчиков? Методика расчета калмана может решить проблему с постоянно меняющимся смещением допустим прямо во время работы датчика? Я видел варианты, где данные акселя фильтруют предварительно через LPF, а гироскопа - через HPF (фильтры).
И вообще, какой вот взять материал исследовательского характера, где прям будет расписано, что к чему и зачем? Совсем не хочется изобретать велосипед, просто хочется разобраться в вопросе, прям на уровне исходной математики.
Спасибо, если ответите. Я понимаю, как фильтр работает, но прям причинно-следственного понимания нет. Без него нереально что-то свое создать, или оптимизировать.
Да, лучше всего матрицу R (точнее, нужна только матрица dR) получить из фильтров Мэджвика или Калмана по данным акселерометров и гироскопов. Так вот, акселерометры и гироскопы перед получением углов с помощью фильтра нужно откалибровать - определить матрицы их взаимной привязки (у них оси не обязаны совпадать) и смещения с масштабными коэффициентами (для акселерометров калибровать масштаб не обязательно - от них нужен только вектор направления). Для акселерометров это можно сделать используя только вектор силы тяжести G. Кстати, можно для определения их смещений использовать вышеприведённый фильтр Калмана, как и для магнитометров, только убрать из него матрицу W (и фильтр станет линейным). Для гироскопов же потребуется стенд, способный задавать постоянную скорость вращения. Это для определения масштабных коэффициентов. Смещения же гироскопов определяются очевидно - это просто показания в состоянии покоя. Таким образом, сначала привязываете оси устройств друг к другу матрицами вращения. Потом определяете смещения. Потом определяете масштаб. А потом уже калибруете магнитометры.
Варианты с LPF и HPF - это, вероятно, комплементарный фильтр вместо фильтра Калмана/Мэджвика.
А где взять исследовательский материал... В целом, есть статьи по отдельным направлениям, есть специализированные журналы ("Гироскопия и навигация").
@@danieolivo2438 Спасибо за ответ!
Честно говоря, про масштабирование я вообще не думал. Обычно даже вопросы калибровки не рассматриваются, сразу делают упор на фльтрации сигналов, и что самое смешное, оно работает.
У меня есть устройство на базе STM32F103C8T6 и модуля MPU6050 (гир+аксель), и я смог залить туда код с использозванием либы I2Cdevlib (Jeff Rowberg). Там типа проприетарный код для DMP содержится. И оно выводит вполне адекватные данные на ПК по прерыванию пина int (через uart с частотой 100Гц), но понятное дело, неизвестно как. Есть дрейф по времени для оси Z, а оси XY норм все показывают. Я это к тому, что в начале там функция калибровки отрабатывает (что-то скрытое от глаз), а дальше просто все работает. В чем загвозка например - с течением времени и изменением температуры смещение (bias) для того же гироскопа (и скорее всего для прочего) плавает, и я не могу понять, каким образом происходит компенсация его в процессе работы. Где-то слышал в одном из буржуйских роликов, что сам фильтр в процессе подстраивает это смещение. Вот если взять пример с магнитометром, он ведь тоже может в процессе работы проводить "докалибровку"? В целом, можем ли мы вообще отказаться от функции начальной калибровки, если она возможна в процессе работы? Ну взяли там прошили какие-то примерные смещения.. Потом фильтр уже сам их подгоняет и меняет в процессе работы?
Так вот зачем телефон крутить восьмеркой для калибровки магнитометра
Да. Но там может калибровка быть сделана на другом принципе. Но суть та же.