⚠️ Важно: В ArduPilot 4.6/4.7 старый параметр FS_GPS_ENABLE устарел. Современная защита использует EKF Failsafe и Dead Reckoning Failsafe.
Что такое EKF Failsafe?
EKF Failsafe — это система мониторинга здоровья расширенного фильтра Калмана (EKF3), которая обнаруживает проблемы с оценкой позиции (GPS-глитчи, ошибки компаса, высокие вибрации) и предотвращает «улёты» дрона.
Когда срабатывает?
EKF failsafe активируется, когда любые две из отслеживаемых дисперсий EKF превышают значение параметра FS_EKF_THRESH в течение 1 секунды.
Дисперсии EKF — это числа от 0 до 1, показывающие уверенность фильтра в своих оценках:
- 0 = очень надёжно
- 1.0 = очень ненадёжно
EKF вычисляет дисперсии путём сравнения данных от нескольких сенсоров. Например, если GPS-позиция внезапно прыгает, но акселерометры не показывают ускорения — дисперсия позиции возрастет.
🔧 Параметры EKF Failsafe
Основные параметры
| Параметр | Описание | Значения | По умолчанию |
|---|---|---|---|
| FS_EKF_THRESH | Порог дисперсии для срабатывания | 0.0 — 1.0 | 0.8 |
| FS_EKF_ACTION | Действие при срабатывании | 0-3 | 1 |
| FS_EKF_POS | Какие дисперсии отслеживать (битовая маска) | 0-7 | 7 |
| FS_EKF_HOME | Срабатывание до взлёта | 0/1 | 0 |
FS_EKF_THRESH — чувствительность
| Значение | Описание | Рекомендация |
|---|---|---|
| 0 | EKF failsafe отключён | Только для тестов |
| 0.6 | Высокая чувствительность | Может сработать при агрессивных манёврах |
| 0.8 | Баланс (default) | ✅ Для большинства случаев |
| 0.9-1.0 | Низкая чувствительность | При частых ложных срабатываниях |
⚠️ Внимание: Увеличение порога снижает чувствительность, но при реальном сбое дрон улетит дальше перед посадкой.
FS_EKF_ACTION — что делать при срабатывании
| Значение | Действие | Когда использовать |
|---|---|---|
| 0 | Только сообщение на GCS | Для анализа, не рекомендуется |
| 1 | Land (посадка с контролем пилота) | ✅ По умолчанию |
| 2 | AltHold (зависание) | Если можете вручную посадить |
| 3 | Land даже в STABILIZE | Максимальная защита |
Pilot-controlled Land (FS_EKF_ACTION=1): пилот сохраняет контроль по крену и тангажу, но дрон снижается со скоростью LAND_SPD_MS и автоматически разоружает моторы после касания земли.
FS_EKF_POS — какие дисперсии отслеживать
Битовая маска, определяющая, какие дисперсии EKF учитываются при проверке порога:
| Бит | Значение | Дисперсия | Описание |
|---|---|---|---|
| 0 | 1 | Compass | Курс (магнитометр) |
| 1 | 2 | Position | Горизонтальная позиция |
| 2 | 4 | Velocity | Горизонтальная скорость |
Комбинации:
| Значение | Отслеживаемые дисперсии |
|---|---|
| 0 | Нет (failsafe отключён) |
| 1 | Только компас |
| 2 | Только позиция |
| 3 | Компас + позиция |
| 4 | Только скорость |
| 5 | Компас + скорость |
| 6 | Позиция + скорость |
| 7 | Все три (default) ✅ |
️ Важно: Failsafe требует превышения порога любых двух отслеживаемых дисперсий. Если в маске только одна — failsafe никогда не сработает.
FS_EKF_HOME — срабатывание до взлёта
| Значение | Описание |
|---|---|
| 0 | Failsafe игнорируется до взлёта (default) ✅ |
| 1 | Failsafe активен всегда, даже на земле |
Рекомендация: Оставьте 0, иначе при плохом сигнале GPS на земле дрон не даст взлететь.
🎯 Защита от GPS-глитчей: EK3_GLITCH_RAD
EK3_GLITCH_RAD — параметр для фильтрации резких скачков GPS-позиции.
| Параметр | Описание | Значения | По умолчанию |
|---|---|---|---|
| EK3_GLITCH_RAD | Максимальный скачок позиции между двумя GPS-измерениями | 0-100 м | 50 м |
Как работает
Параметр задаёт максимальное допустимое радиальное расстояние между двумя последовательными GPS-измерениями:
- Если разница превышает
EK3_GLITCH_RAD→ измерение считается глитчем и отклоняется - Если
EK3_GLITCH_RAD = 0→ измерения не отклоняются, но velocity innovations обрезаются (clipped) до gate size с использованиемEK3_VEL_I_GATE
Когда менять?
| Ситуация | Рекомендация |
|---|---|
| Стандартные полёты | Оставить default (50 м) |
| Акробатические полёты | Установить EK3_GLITCH_RAD = 0 |
| Частые GPS-глитчи (город, лес) | Увеличить до 70-100 м |
| Точные миссии, съёмка | Уменьшить до 30-40 м |
| RTK GPS | Уменьшить до 10-20 м |
⚠️ RTK GPS: При использовании RTK с сантиметровой точностью большое значение EK3_GLITCH_RAD может привести к тому, что RTK-коррекции будут приняты как «нормальные», а вот резкие скачки (многолучевость) не будут отфильтрованы. Уменьшение порога повышает строгость фильтрации.
Dead Reckoning Failsafe (ArduPilot 4.3+)
Dead Reckoning Failsafe позволяет дрону вернуться домой при потере GPS, используя инерциальные датчики и оценку ветра.
Главное условие
⚠️ DR работает ТОЛЬКО если ветер был оценён ДО потери GPS!
Если EKF не успел оценить ветер до потери сигнала → дрон не сможет корректно компенсировать снос и поведение будет непредсказуемым.
Параметры Dead Reckoning
| Параметр | Описание | Значения | По умолчанию |
|---|---|---|---|
| FS_DR_ENABLE | Режим DR failsafe | 0=Off, 1=Land, 2=RTL | 0 |
| FS_DR_TIMEOUT | Максимальное время полёта в режиме dead reckoning | 1-30 сек | 10 сек |
Как это работает
- Потеря GPS → дрон летит нормально 7-10 секунд (используя инерциальные датчики)
- Если за это время GPS не восстановился → «Dead Reckoning started» на GCS
- Дрон переключается в RTL и летит домой, используя последнюю оценку ветра
- Если за
FS_DR_TIMEOUTсекунд дрон не достиг точки RTL → срабатывает EKF failsafe → Land - Даже если GPS восстановился во время RTL → дрон продолжает RTL (не возвращается в предыдущий режим)
️ Важно: FS_DR_TIMEOUT — это НЕ время на возврат домой, а максимальное время полёта в режиме dead reckoning до принудительной посадки. По умолчанию всего 10 секунд — за это время дрон физически не успеет долететь до точки RTL на большом расстоянии.
Предварительная настройка
Для работы Dead Reckoning необходимо настроить оценку ветра:
# Коэффициенты сопротивления (для вашего аппарата)
EK3_DRAG_BCOEF_X = 0.1 # Коэффициент сопротивления по X
EK3_DRAG_BCOEF_Y = 0.1 # Коэффициент сопротивления по Y
EK3_DRAG_MCOEF = 0.05 # Коэффициент сопротивления моторов
⚠️ Важно: Без правильной настройки drag-коэффициентов оценка ветра будет неточной, и Dead Reckoning не даст полезного результата.
Что происходит при срабатывании failsafe?
Визуальная и звуковая индикация
- LED мигает красно-жёлтым
- Звуковой сигнал (tone alarm)
- На HUD GCS появляется предупреждение «EKF variance» (при наличии телеметрии)
- В логах записывается событие для последующего анализа
Поведение в разных режимах
| Режим полёта | Что происходит |
|---|---|
| Stabilize, Acro, AltHold | Ничего, но нельзя переключиться в GPS-режимы (Loiter, RTL, Auto) |
| Loiter, PosHold, RTL, Auto, Guided | Переключение в режим согласно FS_EKF_ACTION (по умолчанию Land) |
После срабатывания EKF failsafe пилот может вернуть управление, переключившись в ручной режим (AltHold/Stabilize) для самостоятельного возврата и посадки.
Диагностика в реальном времени
Мониторинг в Mission Planner
- Кнопка «EKF» на HUD — показывает текущие дисперсии
- Нажмите для просмотра графиков в реальном времени
- GPS статус — должен быть 3D Fix минимум
- Vibe — высокие вибрации ухудшают работу EKF
Параметры телеметрии для мониторинга
| Параметр | Описание | Норма |
|---|---|---|
EKF.VelTestRatio | Отношение инноваций скорости к gate | < 1.0 |
EKF.PosTestRatio | Отношение инноваций позиции к gate | < 1.0 |
EKF.MagTestRatio | Отношение инноваций компаса к gate | < 1.0 |
EKF.HgtTestRatio | Отношение инноваций высоты к gate | < 1.0 |
EKF.SSV | Дисперсия скорости (0-1) | < FS_EKF_THRESH |
EKF.SSP | Дисперсия позиции (0-1) | < FS_EKF_THRESH |
EKF.SSH | Дисперсия курса (0-1) | < FS_EKF_THRESH |
wind_vel | Оценка скорости ветра | Для DR failsafe |
wind_dir | Направление ветра | Для DR failsafe |
📈 Анализ логов
После полёта анализируйте данные flash-логов:
Графики EKF инноваций
В Mission Planner постройте графики:
- NKF4.SP — инновации позиции (position innovation)
- NKF4.SV — инновации скорости (velocity innovation)
- NKF4.SM — инновации компаса (compass innovation)
- NKF4.SSH, NKF4.SSP, NKF4.SSV — дисперсии EKF
Пример срабатывания: Если инновации позиции и скорости одновременно превышают FS_EKF_THRESH (0.8) → через 1 секунду срабатывает failsafe и дрон переходит в Land.
Рекомендуемые настройки
Для стандартного квадрокоптера (без RTK)
# EKF Failsafe
FS_EKF_THRESH = 0.8
FS_EKF_ACTION = 1 # Land с контролем пилота
FS_EKF_POS = 7 # Отслеживать все три дисперсии
FS_EKF_HOME = 0 # Не срабатывать на земле
# GPS-глитчи
EK3_GLITCH_RAD = 50 # Default
# Dead Reckoning (опционально)
FS_DR_ENABLE = 2 # RTL при потере GPS
FS_DR_TIMEOUT = 10 # 10 секунд max dead reckoning
# Оценка ветра (для DR)
EK3_DRAG_BCOEF_X = 0.1
EK3_DRAG_BCOEF_Y = 0.1
EK3_DRAG_MCOEF = 0.05
Для гоночного дрона (агрессивные полёты)
# EKF Failsafe
FS_EKF_THRESH = 0.9 # Меньше ложных срабатываний
FS_EKF_ACTION = 1
FS_EKF_POS = 7
FS_EKF_HOME = 0
# GPS-глитчи
EK3_GLITCH_RAD = 0 # Обрезка вместо отклонения
# Dead Reckoning — отключён (не нужен для FPV)
FS_DR_ENABLE = 0
Для миссий на большие расстояния
# EKF Failsafe
FS_EKF_THRESH = 0.8
FS_EKF_ACTION = 2 # AltHold (дать пилоту время)
FS_EKF_POS = 7
FS_EKF_HOME = 0
# GPS-глитчи
EK3_GLITCH_RAD = 30 # Более строгая фильтрация
# Dead Reckoning
FS_DR_ENABLE = 2 # RTL
FS_DR_TIMEOUT = 15 # Чуть больше времени
Для RTK GPS
# EKF Failsafe
FS_EKF_THRESH = 0.8
FS_EKF_ACTION = 1
# GPS-глитчи — строже для RTK
EK3_GLITCH_RAD = 15 # Для сантиметровой точности
# Dead Reckoning
FS_DR_ENABLE = 2
FS_DR_TIMEOUT = 10
Тестирование Dead Reckoning
В симуляторе (SITL)
- Запустите симулятор с GPS
- Взлетите в режиме Loiter, дайте EKF оценить ветер (подождите 30-60 секунд)
- Отключите GPS через MAVLink команду или переключатель
- Через 7-10 секунд должно появиться «Dead Reckoning started»
- Дрон переключится в RTL и полетит домой
- Через
FS_DR_TIMEOUTсекунд сработает EKF failsafe → Land
На реальном дроне (ОСТОРОЖНО!)
⚠️ Тестирование только на открытой площадке, вдали от людей и препятствий!
- Подготовьтесь к перехвату управления в режиме Stabilize/AltHold
- Настройте вспомогательный переключатель:
RC9_OPTION = 65 # Отключение GPS (любой канал RC)
- Взлетите в режиме Loiter на безопасной высоте (5-10 м)
- Дайте EKF оценить ветер — подождите 30-60 секунд, проверьте
wind_velв GCS (должен быть ненулевой) - Активируйте переключатель для отключения GPS
- Через 7-10 секунд → «Dead Reckoning started» → RTL
- Если дрон начинает дрейфовать → немедленно переключитесь в AltHold
- Выключите переключатель для восстановления GPS
- После теста скорректируйте
FS_DR_TIMEOUTи drag-коэффициенты по результатам
⚠️ Важные моменты
- Без GPS инерциальные датчики держат позицию ~10-30 секунд, потом дрейф становится критическим
- При срабатывании failsafe рекомендуется взять управление в режиме Stabilize/AltHold
- Не отключайте EKF failsafe (
FS_EKF_THRESH=0) — это основная защита от «улётов» дрона - Dead Reckoning требует правильной настройки drag-коэффициентов и предварительной оценки ветра
- Вибрации могут вызывать ложные срабатывания EKF failsafe — следите за уровнем вибраций в логах
- EKF failsafe записывается в dataflash логи для последующего анализа
- EK3_GLITCH_RAD — важный параметр для фильтрации GPS-глитчей, особенно для акробатических полётов и RTK
- RTK GPS требует уменьшения
EK3_GLITCH_RADдо 10-20 м для корректной работы
🔄 Что изменилось с устаревшими параметрами?
| Устаревший параметр | Современная замена |
|---|---|
FS_GPS_ENABLE | FS_EKF_ACTION + FS_DR_ENABLE |
GPSGLITCH_RADIUS | EK3_GLITCH_RAD |
GPSGLITCH_ACCEL | Встроено в EKF (не настраивается отдельно) |
Почему удалили? EKF3 анализирует все сенсоры комплексно, поэтому отдельные параметры защиты от GPS-глитчей больше не нужны — фильтр сам определяет ненадёжные данные и управляет их влиянием.
Источники и документация
- EKF Failsafe — официальная документация ArduPilot
- Dead Reckoning Failsafe
- GPS Failsafe and Glitch Protection (архив)
- Complete Parameter List
- Failsafe Overview
- EK3 Parameter Documentation
Версия статьи: для ArduPilot 4.6 и 4.7
Последнее обновление: Июнь 2026
Что исправлено в этой версии:
✅ Убраны цифровые ссылки в тексте
✅ Удалены фейковые видео-ссылки
✅ Добавлен параметр FS_EKF_POS с таблицей битовой маски
✅ Добавлен параметр FS_EKF_HOME
✅ Уточнено условие работы Dead Reckoning (ветер ДО потери GPS)
✅ Уточнено поведение EK3_GLITCH_RAD = 0
✅ Добавлен раздел про RTK GPS
✅ Уточнено описание FS_DR_TIMEOUT (НЕ время на возврат)
✅ Добавлены дисперсии EKF (EKF.SSH/SSP/SSV) в раздел диагностики
✅ Расширены рекомендуемые настройки (добавлен профиль для RTK)
