Расширенный фильтр Калмана (EKF)
Кратко
EKF (extended Kalman filter, расширенный фильтр Калмана) — алгоритм, который сводит показания всех сенсоров аппарата в единую наилучшую оценку его состояния: где он, с какой скоростью движется и как ориентирован. Каждый сенсор врёт по-своему — IMU дрейфует, GNSS шумит, барометр реагирует на погоду, — а EKF взвешивает их показания и выдаёт согласованную картину. Это ядро навигации и ArduPilot, и PX4.
Для чего используется
- Навигация: оценка положения, скорости и ориентации — то, чем пользуются полётные режимы и автоматика.
- Слияние сенсоров (sensor fusion): IMU, GNSS, компас, барометр, дальномер, оптический поток, VIO — в одну оценку.
- Отбраковка сбоев: объединяя измерения, фильтр отклоняет данные сенсора, выпадающие из общей картины.
- Инерциальная навигация между обновлениями GNSS — и продолжение счисления при кратких пропаданиях спутников.
Как работает
Идея фильтра Калмана — чередовать два шага, как штурман на корабле:
- Предсказание. По модели движения и данным IMU фильтр прогнозирует, где аппарат окажется через мгновение, — и честно оценивает, насколько прогнозу можно верить (ковариацию ошибки).
- Коррекция. Пришло измерение (например, координата GNSS) — фильтр сравнивает его с прогнозом. Разница называется невязкой (инновацией); насколько сильно ей верить, решает коэффициент усиления Калмана: точному сенсору — больше веса, шумному — меньше.
Классический фильтр Калмана (Р. Э. Калман, 1960) работает с линейными системами. Движение летающего аппарата нелинейно, поэтому применяется расширенная версия — EKF: модель линеаризуется вокруг текущей оценки (через матрицы Якоби), после чего работают стандартные уравнения. EKF — фактический стандарт нелинейной оценки состояния в навигационных системах и GPS.
У подхода есть ограничения: для сильно нелинейных систем EKF не оптимален, при плохой инициализации или неточной модели может расходиться. Альтернативы — UKF (несцентированный фильтр, без линеаризации) и фильтры частиц, но в бортовой навигации доминирует EKF.
Основные компоненты
- Вектор состояния. EKF2 в PX4 оценивает 24 величины: кватернион ориентации, скорость, положение, смещения гироскопа и акселерометра, магнитное поле Земли и магнитное смещение корпуса, скорость ветра, высоту рельефа.
- Входы: IMU (не менее 100 Гц), GNSS, магнитометр (не менее 5 Гц), барометр, дальномер, оптический поток, VIO, датчик воздушной скорости.
- Буферы задержек. Данные сенсоров приходят с разным запаздыванием; EKF2 буферизует их (FIFO) и учитывает с правильной временной меткой (параметры EKF2_*_DELAY).
- Резервирование. PX4 запускает параллельные экземпляры фильтра по комбинациям IMU × магнитометр (multi-EKF, теоретически до 16); ArduPilot (EKF3) при нескольких IMU ведёт несколько «ядер» и выбирает то, где данные согласованнее (lane switching), с резервным алгоритмом DCM.
Примеры
- В ArduPilot EKF3 оценивает положение, скорость и ориентацию по гироскопам, акселерометру, компасу, GPS, датчику воздушной скорости и барометру.
- В PX4 фильтр называется ECL EKF (EKF2) и реализован в error-state формулировке — так устойчивее оценивается ориентация.
- Подключение оптического потока или VIO к EKF даёт навигацию без GNSS — в помещениях и под мостами.
Связанные темы
- Инерциальная навигация
- IMU
- GNSS
- Магнитометр
- Барометр
- Оптический поток
- Визуально-инерциальная одометрия (VIO)
Источники
- Kalman R.E. (1960) — оригинальная статья о фильтре.
- Wikipedia: Extended Kalman filter — линеаризация, этапы, ограничения, альтернативы.
- PX4: Using the ECL EKF — 24 состояния, входы, задержки, multi-EKF.
- ArduPilot: EKF — EKF3, lane switching, DCM.