Материал обновлён: сентябрь 2026. Loiter удерживает не «GPS-точку напрямую», а состояние, которое EKF оценивает из доступных источников положения, скорости, ориентации и высоты.
Loiter — результат работы всей навигационной цепочки. GNSS обычно даёт горизонтальные position/velocity measurements, IMU прогнозирует движение между внешними измерениями, источник yaw задаёт ориентацию по курсу, барометр или другой выбранный источник участвует в оценке высоты, а EKF объединяет всё это в единое состояние.
Поэтому ситуация «25 спутников, HDOP 0,8, но коптер плавает или дёргается в Loiter» вполне возможна. Геометрия GNSS может быть хорошей, а проблема находиться в multipath, receiver accuracy, vibrations, yaw, lever arm, задержках или несогласованности сенсоров.
Диагностическое правило: сначала подтвердите качество состояния EKF и входных измерений. Только после этого настраивайте динамику Loiter/PSC. Случайное изменение PID или GNSS-порогов в начале диагностики часто маскирует причину.
Вместо кастомной схемы удобнее использовать последовательность, которая одинаково читается на телефоне и на большом экране:
В Copter Loiter автоматически старается удерживать текущие horizontal position, heading и altitude. Пилот может смещать аппарат стиками; после отпускания стиков контроллер тормозит и удерживает новое положение.
Официальная документация отдельно подчёркивает три базовых условия хорошего Loiter: качественный position source, низкие magnetic disturbances при использовании compass и низкие vibrations. Документация ArduPilot — Loiter Mode.
У EKF3 несколько source sets. Для первого набора используются параметры EK3_SRC1_POSXY, EK3_SRC1_VELXY, EK3_SRC1_POSZ, EK3_SRC1_VELZ и EK3_SRC1_YAW. Их значения должны соответствовать реальным датчикам и архитектуре аппарата.
EK3_SRC1_POSXY = 3 # пример: GPS для horizontal position
EK3_SRC1_VELXY = 3 # пример: GPS для horizontal velocity
EK3_SRC1_POSZ = 1 # типичный вариант: Baro
EK3_SRC1_YAW = 1 # типичный вариант: Compass
Это пример архитектуры, а не универсальный preset. ArduPilot поддерживает ExternalNav, Optical Flow для horizontal velocity, GPS yaw, GSF и другие схемы. Для vertical position barometer является обычным выбором; RangeFinder как прямой POSZ нужен лишь в специальных сценариях и не требуется для обычного Surface Tracking. EKF Source Selection.
GPS.HDop описывает геометрию спутникового решения. Он не измеряет multipath, RF-interference, receiver timing, фактическую horizontal error или согласованность GNSS с IMU.
Для диагностики смотрите показатели в контексте:
GPS.Status и GPS.NSats;Контроллер должен правильно связать требуемое горизонтальное ускорение с body frame. Если heading estimate заметно ошибочен, аппарат может наклоняться не туда, куда ожидает navigation controller. На практике это проявляется дрейфом, дугами или характерным «toilet-bowling» поведением.
EKF непрерывно интегрирует inertial measurements между внешними обновлениями. Сильные vibrations, clipping или ошибки time alignment ухудшают prediction и могут приводить к росту innovations даже при хорошем GNSS.
Если Loiter дёргается, не начинайте с изменения
LOIT_*. Сначала подтвердите, что attitude и velocity estimate здоровы, механика исправна, а вибрации находятся под контролем.
У зданий, металлических конструкций и других отражающих поверхностей GNSS может получать отражённые сигналы. При этом число спутников и HDOP иногда выглядят нормально, но position/velocity measurement смещается.
EKF сравнивает новое измерение с прогнозом по IMU и применяет innovation gating. Большое несоответствие может привести к снижению доверия к измерению или его отклонению. Поэтому «GPS показывает координаты» и «EKF считает их пригодными для управления» — не одно и то же.
Loiter требует пригодную оценку horizontal position. В обычной GPS-конфигурации для армирования в Loiter документация указывает 3D lock и HDOP ниже 1,4. Если используется другой исправный position source, например Optical Flow или Non-GPS Navigation, режим может работать без GPS при корректно заданном EKF origin.
Не превращайте 1,4 в универсальный полётный норматив. Это условие pre-arm стандартного GPS-сценария. Повышение допуска не улучшает геометрию спутников, RF-обстановку или реальную точность позиции.
GPS_HDOP_GOOD относится к pre-arm проверкам. Если появляется High GPS HDOP, сначала улучшайте обзор неба, размещение антенны и RF-условия. Не используйте повышение порога как стандартный способ «починить Loiter».
EKF failsafe отслеживает согласованность position, velocity и compass/yaw оценки. В Copter он срабатывает, когда два из контролируемых показателей превышают FS_EKF_THRESH в течение установленного условия проверки.
FS_EKF_ACTION | Действие Copter |
|---|---|
| 0 | Report only |
| 1 | Land |
| 2 | AltHold |
| 3 | Land, включая особый случай с Stabilize согласно логике параметра |
FS_EKF_THRESH — advanced parameter чувствительности. Официальная документация приводит диапазон примерно 0.6–1.0 для настройки чувствительности и предупреждает о компромиссе между ранним срабатыванием и ложными срабатываниями при агрессивном полёте. Не ослабляйте его как первую реакцию на неразобранную проблему навигации. Документация EKF Failsafe.
Отдельная старая GPS failsafe-логика была объединена с современными EKF/DCM checks. Страницы с FS_GPS_ENABLE, FS_GPS_ACTION и похожими настройками относятся к архивным версиям и не должны копироваться в современные конфигурации.
Loiter не обязан использовать именно GPS. ArduPilot может работать с другими horizontal position sources — например ExternalNav/VIO; Optical Flow используется как источник horizontal velocity в соответствующих схемах. При исправном источнике позиционирования и корректном EKF origin Loiter может применяться и в помещении.
Правильная модель такая: Loiter требует качественную оценку position/velocity, а GPS — один из возможных источников этой оценки.
GPS1_POS_X/Y/Z.| Симптом | Что проверить первым |
|---|---|
| Медленный дрейф при нормальном heading | Position quality, multipath, HAcc/accuracy, ветер и tune |
| Круги / toilet bowling | Yaw source, compass interference, alignment |
| Рывки позиции | GNSS jumps, multipath, EKF innovations, timing |
| Loiter хороший до включения VTX/modem | Self-interference, antenna/RF placement |
| EKF failsafe после перехода в Loiter | Position/velocity/yaw innovations, vibrations, source configuration |
| Высота плавает, XY держится | Barometer/vertical source, airflow, vibrations, vertical innovations |
GPS_HDOP_GOOD ради обхода pre-arm без понимания причины.FS_EKF_THRESH как первую реакцию на EKF failsafe.FS_GPS_*.Loiter — проверка качества всей навигационной системы. GNSS даёт важные внешние measurements, но удержание позиции появляется только после их согласования с IMU, height и yaw sources в EKF. Диагностируйте цепочку сверху вниз, а не ищите один «правильный HDOP».
На связи