Перейти к содержимому

Урок 27 из 43 · Модуль 3. EKF3: как автопилот определяет своё положение

Mission Planner для технического персонала · Урок 27 из 43 · Модуль 3. Тюнинг и автономный полёт

Принцип работы фильтра Калмана, диагностика по дисперсиям и гибкая настройка источников навигационных данных.

Дисперсии EKF — самый ранний индикатор проблемы. Они растут задолго до того, как аппарат начнёт вести себя странно.

Содержание

1. Цели урока

После этого урока вы будете понимать:

  • из каких этапов состоит цикл работы EKF
  • как читать дисперсии и что означает каждая
  • как настроить наборы источников EK3_SRC*
  • как определять курс без компаса через GSF
↑ К оглавлению

2. Что делает EKF

Расширенный фильтр Калмана (Extended Kalman Filter, EKF) объединяет данные разнородных датчиков в единую оценку состояния аппарата: положение, скорость, ориентацию, а также смещения гироскопов и акселерометров.

Логика работы:

  1. Предсказание. По данным IMU (интегрирование ускорений и угловых скоростей) фильтр предсказывает, где аппарат окажется через шаг времени. Точно на коротком интервале, но накапливает ошибку.
  2. Коррекция. Приходят измерения от GPS, компаса, барометра, дальномера. Фильтр корректирует предсказание, взвешивая источники по их предполагаемой точности.
  3. Оценка доверия. Для каждой оценки вычисляется дисперсия — мера неуверенности. Именно она отображается в индикаторе EKF.

ArduPilot запускает несколько экземпляров EKF3 (по одному на каждый IMU) и выбирает наиболее «здоровый» — это защита от отказа отдельного датчика.

↑ К оглавлению

3. Дисперсии как диагностический инструмент

В DATA → Status и в логе (XKF4, NKF4) доступны:

Величина Что означает Норма
Velocity Variance Расхождение оценки скорости с измерениями GPS ≤ 0,5
Pos Horiz Variance Расхождение горизонтального положения ≤ 0,5
Pos Vert Variance Расхождение по высоте (барометр против GPS) ≤ 0,5
Compass Variance Расхождение курса по компасу с оценкой по движению ≤ 0,5
Terrain Alt Variance Расхождение высоты над рельефом ≤ 0,5

Значение выше 0,8 означает, что фильтр серьёзно сомневается в соответствующем источнике. При превышении FS_EKF_THRESH срабатывает failsafe.

Что растёт Вероятная причина
Compass Variance Магнитные помехи, неверная калибровка, влияние тока
Velocity Variance Вибрации (акселерометры «врут»), потеря спутников, многолучёвость
Pos Vert Variance Барометр «дует» от воздушного потока, негерметичный корпус, резкие перепады давления
Pos Horiz Variance Плохой приём GPS, отражения от зданий
Все сразу Сильные вибрации или clipping акселерометра
Барометр и воздушный поток: Классическая проблема: барометр открыт потоку от винтов или солнечному свету (датчик чувствителен к освещению). Симптом — «дыхание» по высоте в ALT_HOLD и рост Pos Vert Variance. Лечение: накрыть датчик кусочком открытоячеистого поролона и заклеить корпус от прямого света.
↑ К оглавлению

4. Система источников EKF3

Начиная с ArduPilot 4.1, источники данных для EKF настраиваются гибко: до трёх наборов, переключаемых в полёте.

Параметр Назначение
EK3_SRC1_POSXY Источник горизонтального положения: 0 — нет, 3 — GPS, 4 — Beacon, 6 — ExternalNav
EK3_SRC1_VELXY Горизонтальная скорость: 0 — нет, 3 — GPS, 5 — OpticalFlow, 6 — ExternalNav, 7 — WheelEncoder
EK3_SRC1_POSZ Высота: 1 — Baro, 2 — RangeFinder, 3 — GPS, 4 — Beacon, 6 — ExternalNav
EK3_SRC1_VELZ Вертикальная скорость: 0 — нет, 3 — GPS, 6 — ExternalNav
EK3_SRC1_YAW Курс: 1 — Compass, 2 — GPS, 3 — GPS с компасом как резерв, 6 — ExternalNav, 8 — GSF
EK3_SRC2_*, EK3_SRC3_* Второй и третий наборы источников
EK3_SRC_OPTIONS Опции комбинирования

Переключение наборов в полёте назначается на канал: RCn_OPTION = 90 (EKF Source Set).

Типовые конфигурации

Обычный полёт на открытой местности:

EK3_SRC1_POSXY = 3  (GPS)
EK3_SRC1_VELXY = 3  (GPS)
EK3_SRC1_POSZ  = 1  (Baro)
EK3_SRC1_VELZ  = 3  (GPS)
EK3_SRC1_YAW   = 1  (Compass)
Text

Полёт в помещении с оптическим потоком и лидаром:

EK3_SRC1_POSXY = 0  (нет)
EK3_SRC1_VELXY = 5  (OpticalFlow)
EK3_SRC1_POSZ  = 2  (RangeFinder)
EK3_SRC1_VELZ  = 0  (нет)
EK3_SRC1_YAW   = 1  (Compass)
Text

Полёт при сильных магнитных помехах (GPS-Yaw / moving baseline RTK):

EK3_SRC1_YAW   = 2  (GPS)
Text
GSF — курс без компаса: Значение EK3_SRC1_YAW = 8 включает Gaussian Sum Filter: автопилот определяет курс по несоответствию между направлением ускорения и направлением движения по GPS. Работает только в движении и требует манёвров для сходимости, но полностью снимает зависимость от компаса. Полезно для аппаратов с непреодолимыми магнитными помехами.
↑ К оглавлению

5. Чек-лист самопроверки

Урок освоен, если каждый пункт выполнен на практике:

  • Умею открыть панель EKF и прочитать составляющие
  • Знаю, какая дисперсия за что отвечает
  • Понимаю логику настройки EK3_SRC1_*
  • Знаю, когда применять GSF вместо компаса
Результат: все пункты выполнены — переходите к следующему уроку.
↑ К оглавлению

6. Что дальше

  • Предыдущий урок: 26. Failsafe: реакции на отказы и организация безопасности
  • Следующий урок: 28. RTK, дальномеры и оптический поток
  • Полный перечень тем — в статье «Содержание курса».
↑ К оглавлению
  • Четверг, 30 июля 2026