Все статьи по ArduPilot

Материал обновлён: сентябрь 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-порогов в начале диагностики часто маскирует причину.

Как формируется удержание позиции

Вместо кастомной схемы удобнее использовать последовательность, которая одинаково читается на телефоне и на большом экране:

  1. GNSS или другой horizontal position source. Даёт внешние измерения положения и/или скорости. Для GNSS смотрят не только на число спутников и HDOP, но и на accuracy, timing и устойчивость решения.
  2. IMU. Гироскопы и акселерометры дают высокочастотную информацию о вращении и ускорении и позволяют EKF прогнозировать состояние между внешними обновлениями.
  3. Источник высоты. В типичной конфигурации основным источником vertical position остаётся barometer; другие варианты выбираются только под конкретную задачу.
  4. Yaw source. Compass, GPS yaw, GSF или ExternalNav должны давать согласованную оценку направления. Ошибка yaw превращает правильную навигационную команду в неправильную реакцию в body frame.
  5. EKF3. Объединяет измерения, оценивает position, velocity, attitude, biases и неопределённость и проверяет согласованность новых данных с прогнозом.
  6. Position controller / Loiter logic. Получает оценённое состояние и формирует требуемые ускорения и наклоны, чтобы тормозить аппарат и удерживать целевую позицию.

Что делает Loiter

В Copter Loiter автоматически старается удерживать текущие horizontal position, heading и altitude. Пилот может смещать аппарат стиками; после отпускания стиков контроллер тормозит и удерживает новое положение.

Официальная документация отдельно подчёркивает три базовых условия хорошего Loiter: качественный position source, низкие magnetic disturbances при использовании compass и низкие vibrations. Документация ArduPilot — Loiter Mode.

Откуда EKF берёт данные

У 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.

Хороший HDOP не гарантирует хороший Loiter

GPS.HDop описывает геометрию спутникового решения. Он не измеряет multipath, RF-interference, receiver timing, фактическую horizontal error или согласованность GNSS с IMU.

Для диагностики смотрите показатели в контексте:

Почему ошибка yaw портит удержание позиции

Контроллер должен правильно связать требуемое горизонтальное ускорение с body frame. Если heading estimate заметно ошибочен, аппарат может наклоняться не туда, куда ожидает navigation controller. На практике это проявляется дрейфом, дугами или характерным «toilet-bowling» поведением.

Vibrations и IMU

EKF непрерывно интегрирует inertial measurements между внешними обновлениями. Сильные vibrations, clipping или ошибки time alignment ухудшают prediction и могут приводить к росту innovations даже при хорошем GNSS.

Если Loiter дёргается, не начинайте с изменения LOIT_*. Сначала подтвердите, что attitude и velocity estimate здоровы, механика исправна, а вибрации находятся под контролем.

GPS position jumps и multipath

У зданий, металлических конструкций и других отражающих поверхностей GNSS может получать отражённые сигналы. При этом число спутников и HDOP иногда выглядят нормально, но position/velocity measurement смещается.

EKF сравнивает новое измерение с прогнозом по IMU и применяет innovation gating. Большое несоответствие может привести к снижению доверия к измерению или его отклонению. Поэтому «GPS показывает координаты» и «EKF считает их пригодными для управления» — не одно и то же.

Что означает pre-arm в Loiter

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

GPS_HDOP_GOOD относится к pre-arm проверкам. Если появляется High GPS HDOP, сначала улучшайте обзор неба, размещение антенны и RF-условия. Не используйте повышение порога как стандартный способ «починить Loiter».

EKF failsafe в Loiter

EKF failsafe отслеживает согласованность position, velocity и compass/yaw оценки. В Copter он срабатывает, когда два из контролируемых показателей превышают FS_EKF_THRESH в течение установленного условия проверки.

FS_EKF_ACTIONДействие Copter
0Report only
1Land
2AltHold
3Land, включая особый случай с Stabilize согласно логике параметра

FS_EKF_THRESH — advanced parameter чувствительности. Официальная документация приводит диапазон примерно 0.6–1.0 для настройки чувствительности и предупреждает о компромиссе между ранним срабатыванием и ложными срабатываниями при агрессивном полёте. Не ослабляйте его как первую реакцию на неразобранную проблему навигации. Документация EKF Failsafe.

Старый FS_GPS_* не использовать

Отдельная старая GPS failsafe-логика была объединена с современными EKF/DCM checks. Страницы с FS_GPS_ENABLE, FS_GPS_ACTION и похожими настройками относятся к архивным версиям и не должны копироваться в современные конфигурации.

Loiter без GPS возможен

Loiter не обязан использовать именно GPS. ArduPilot может работать с другими horizontal position sources — например ExternalNav/VIO; Optical Flow используется как источник horizontal velocity в соответствующих схемах. При исправном источнике позиционирования и корректном EKF origin Loiter может применяться и в помещении.

Правильная модель такая: Loiter требует качественную оценку position/velocity, а GPS — один из возможных источников этой оценки.

Как диагностировать плохой Loiter

  1. Проверьте механику и базовый tune. В Stabilize/AltHold аппарат должен быть предсказуемым, без сильных vibrations и clipping.
  2. Проверьте GNSS или другой position source. Status, accuracy, DOP, стабильность position/velocity, timing и RF indicators.
  3. Проверьте yaw. Согласованность compass/GPS yaw/GSF/ExternalNav с фактическим курсом.
  4. Проверьте EKF. Innovations/test ratios, source status и сообщения о variance.
  5. Проверьте положение GNSS-антенны. Если она заметно смещена от центра навигации, задайте lever arm через GPS1_POS_X/Y/Z.
  6. Только после этого настраивайте динамику Loiter/PSC.

Типичные симптомы

СимптомЧто проверить первым
Медленный дрейф при нормальном headingPosition quality, multipath, HAcc/accuracy, ветер и tune
Круги / toilet bowlingYaw source, compass interference, alignment
Рывки позицииGNSS jumps, multipath, EKF innovations, timing
Loiter хороший до включения VTX/modemSelf-interference, antenna/RF placement
EKF failsafe после перехода в LoiterPosition/velocity/yaw innovations, vibrations, source configuration
Высота плавает, XY держитсяBarometer/vertical source, airflow, vibrations, vertical innovations

Что не стоит делать

Связанные материалы

Официальные источники

Вывод

Loiter — проверка качества всей навигационной системы. GNSS даёт важные внешние measurements, но удержание позиции появляется только после их согласования с IMU, height и yaw sources в EKF. Диагностируйте цепочку сверху вниз, а не ищите один «правильный HDOP».

Прокрутить вверх
На связи