Как использовать расширенный фильтр Калмана для слияния IMU и датчика оптического потока?

Я строю квадрокоптер и использую систему автопилота pixhawk с датчиком px4flow, подключенным для данных оптического потока. px4flow — это высокоскоростная интеллектуальная камера (процессор руки) со встроенным гироскопом и датчиком высоты, которая выводит линейные скорости из внутреннего алгоритма оптического потока.

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

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

*edit: Вот статья, описывающая модуль px4flow и то, как он вычисляет скорости. (забыл добавить ссылку, теперь она есть)

https://pixhawk.org/_media/modules/px4flow_paper.pdf


person trudesagen    schedule 02.10.2015    source источник
comment
Если вы хотите показать свою работу, вы, вероятно, получите лучшую обратную связь. Чтобы использовать EFK, вам нужна модель измерения, основанная на вашем датчике. Я не уверен, что вы предоставили достаточно информации для кого-то, чтобы помочь в деталях по этому вопросу. Чтобы использовать EFK, вам также понадобятся якобианы (первые производные) этих функций, что может быть непросто. Альтернативой может быть фильтр Калмана без запаха или какая-либо другая формула без производных. Прежде чем вы слишком углубитесь в сложную модель, вы можете подумать о своей конечной игре и в этом отношении.   -  person Brick    schedule 02.10.2015
comment
Я только что добавил статью, описывающую, как датчик px4flow рассчитывает скорости. Я думаю, что в этой статье есть ответ для меня, но я не могу экстраполировать его. Я уже разрабатывал EKF для слияния датчиков IMU и GPS, поэтому хорошо понимаю, как это работает. Я также изучил фильтр Калмана без запаха, но мне все еще нужна функция измерения, чтобы использовать его.   -  person trudesagen    schedule 02.10.2015


Ответы (1)


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

Если это ваш случай, вы можете выбрать между:

  • Если вектор состояния не включает ориентацию, предварительно преобразуйте скорость оптического потока в мировые координаты, а затем используйте линейную модель наблюдения (нулевая матрица с единицами в положении X, скорость Y в вашем векторе состояния)
  • Если вектор состояния включает ориентацию, вы можете написать полную модель наблюдения, которая преобразует координаты мирового тела с использованием углов.

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

person dunadar    schedule 01.12.2015