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

LEGACY / важное обновление. Эта страница сохранена по прежнему URL, но старые рецепты с ARMING_CHECK, FS_GPS_ENABLE=0 и обязательным FENCE_ENABLE=0 больше не являются рекомендуемой настройкой. Ниже — безопасный порядок действий для актуальной ветки ArduPilot.

Проверено для ArduPilot 4.7.1. Полёт без GPS — это не одна настройка и не «отключение GPS-проверки». Сначала нужно определить, какой источник горизонтальной позиции и скорости реально доступен аппарату и нужен ли выбранному режиму полёта валидный position estimate.

Что изменилось относительно старой инструкции

  • ARMING_CHECK в актуальной схеме заменён на ARMING_SKIPCHK. Это не обычное переименование: смысл битовой маски инвертирован — теперь указываются проверки, которые нужно пропустить. Переносить старое числовое значение вручную нельзя.
  • Отключение Pre-Arm проверок не должно быть способом «починить» аппарат. Сначала устраняется причина сообщения Pre-Arm; пропуск отдельной проверки допустим только как осознанное исключение.
  • Старый GPS Failsafe относится к архивной логике Copter. Современная защита при проблемах позиционирования опирается на состояние EKF и EKF failsafe, поэтому рецепт FS_GPS_ENABLE=0 из старой статьи здесь больше не используется.
  • FENCE_ENABLE=0 не является обязательным условием «полёта без GPS». Геозону нельзя отключать автоматически только потому, что возникла проблема с GPS: сначала нужно понимать тип fence, режим полёта и доступные источники навигации.

Правильная постановка задачи

Нужно разделить три разных сценария:

  1. Ручной полёт без горизонтального позиционирования. Аппарат не должен изображать наличие координат, которых у него нет. Возможность конкретного режима определяется его требованиями к position/velocity estimate.
  2. Полёт без GPS, но с другим источником навигации. Например, Optical Flow + rangefinder или ExternalNav. В этом случае настраиваются источники EKF3, а не просто отключается GPS-проверка.
  3. Переход между GPS и альтернативным источником. Это отдельный сценарий. Наличие GPS-приёмника или появление 3D Fix само по себе не означает, что EKF уже имеет корректную горизонтальную позицию и что можно безопасно включать Loiter/PosHold.

EKF3: что настраивается на самом деле

Для EKF3 источники задаются группами EK3_SRCn_*. Например, EK3_SRC1_POSXY определяет источник горизонтальной позиции, а EK3_SRC1_VELXY — горизонтальной скорости. Для GPS и Optical Flow это разные конфигурации. Набор Source 2 или Source 3 не становится «автоматическим резервом» только потому, что он заполнен; переключение источников должно быть спроектировано и проверено отдельно.

Разобрать эту схему без догадок: как работает EKF3 в ArduPilot. Для Optical Flow: проверка датчика и безопасное переключение источников EKF.

Pre-Arm: не лечим предупреждение отключением проверки

В ArduPilot 4.7 используется ARMING_SKIPCHK. Нормальное состояние для рабочего аппарата — не пропускать проверки без причины. Если автопилот сообщает Pre-Arm ошибку, сначала выясните, какой именно датчик, источник EKF или параметр не соответствует требованиям выбранной конфигурации.

Практическая инструкция: ArduPilot не даёт армиться: читаем Pre-Arm и не ломаем safety.

Loiter и PosHold: когда переключаться нельзя

Для режимов удержания позиции важен не факт «GPS подключён», а валидное состояние оценки положения и скорости EKF. Если источник появился после старта, если есть скачок координат, несовпадение yaw, плохие инновации или нестабильная оценка, переключение в режим удержания позиции может вызвать резкое движение аппарата.

Перед реальным переключением сначала проверяются EKF status и логи. Не используйте появление значка 3D Fix как единственный критерий готовности Loiter.

Безопасный порядок проверки

  1. Определите задачу: ручной полёт без позиции, Optical Flow, ExternalNav или переход GPS ↔ альтернативный источник.
  2. Сохраните параметры перед изменениями и не переносите битовые маски из старых инструкций вслепую.
  3. Настройте EKF3 под реальные датчики и источники, а не под желаемый режим полёта.
  4. Проверьте аппарат без пропеллеров: Pre-Arm, статус датчиков, направления, EKF и переключение источников.
  5. Повторите сценарий в ArduPilot SITL Lab, если он моделируется в учебной среде. SITL не доказывает исправность реального железа, но помогает проверить логику действий.
  6. Сделайте контролируемый реальный тест на минимально необходимой высоте и в безопасной зоне, с готовым ручным режимом возврата управления.
  7. Снимите DataFlash лог и проверьте факт, а не ощущения: анализатор логов ArduPilot.
  8. Меняйте одну вещь за раз и повторяйте тест.

Что больше не нужно копировать из старых гайдов

Старый рецептЧто делать в 4.7.1
ARMING_CHECK и вычитание старого GPS-битаНе переносить. Используется ARMING_SKIPCHK с обратной семантикой; сначала исправить причину Pre-Arm.
FS_GPS_ENABLE=0 как универсальное решениеНе использовать как актуальный рецепт. Проверять EKF health, EKF failsafe и требования конкретного режима.
FENCE_ENABLE=0 «потому что нет GPS»Не отключать автоматически. Отдельно проектировать ограничения и навигацию.
«Появился GPS — EKF сам подхватит и можно Loiter»Сначала подтвердить валидную оценку EKF и корректный источник position/velocity.

Итог: полёт без GPS в ArduPilot 4.7.1 настраивается через корректную архитектуру источников EKF и требования конкретного режима. Отключение safety-проверок не является заменой правильной конфигурации.

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