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, режим полёта и доступные источники навигации.
Правильная постановка задачи
Нужно разделить три разных сценария:
- Ручной полёт без горизонтального позиционирования. Аппарат не должен изображать наличие координат, которых у него нет. Возможность конкретного режима определяется его требованиями к position/velocity estimate.
- Полёт без GPS, но с другим источником навигации. Например, Optical Flow + rangefinder или ExternalNav. В этом случае настраиваются источники EKF3, а не просто отключается GPS-проверка.
- Переход между 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.
Безопасный порядок проверки
- Определите задачу: ручной полёт без позиции, Optical Flow, ExternalNav или переход GPS ↔ альтернативный источник.
- Сохраните параметры перед изменениями и не переносите битовые маски из старых инструкций вслепую.
- Настройте EKF3 под реальные датчики и источники, а не под желаемый режим полёта.
- Проверьте аппарат без пропеллеров: Pre-Arm, статус датчиков, направления, EKF и переключение источников.
- Повторите сценарий в ArduPilot SITL Lab, если он моделируется в учебной среде. SITL не доказывает исправность реального железа, но помогает проверить логику действий.
- Сделайте контролируемый реальный тест на минимально необходимой высоте и в безопасной зоне, с готовым ручным режимом возврата управления.
- Снимите DataFlash лог и проверьте факт, а не ощущения: анализатор логов ArduPilot.
- Меняйте одну вещь за раз и повторяйте тест.
Что больше не нужно копировать из старых гайдов
| Старый рецепт | Что делать в 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-проверок не является заменой правильной конфигурации.
