Перейти к содержанию

Архитектура EKF на 4.6.3

Эта прошивка отличается от стока ArduPlane 4.6.3 семью load-bearing коммитами, которые меняют поведение EKF3 в сценарии «GPS-denied + редкие коррекции от внешнего источника».

Что есть EKF3 в нашем сценарии

EKF3 в Plane по умолчанию работает в режиме AID_ABSOLUTE — у него есть глобальная привязка через GPS, и фильтр оценивает позицию относительно этой привязки. Эта прошивка переведена в режим «ExternalNav как primary source»: глобальная привязка приходит не от GPS, а от наземного оператора (или внешней навигационной системы) через MAVLink-канал.

Семь кастомных коммитов поверх стока

# Коммит Что делает Зачем
1 8702e23 Параметры AHRS_WND_ENBL/SPD/DIR Унаследовано из 4.5. На текущей конфигурации не работает (см. wind)
2 23351a4 EKF3 init не требует GPS 3D-fix при SRC1_POSXY ∈ {4, 6} Чтобы прошивка вообще загружалась без GPS
3 5257387 Снят guard PV_AidingMode на setLatLng Чтобы CMD 43003 работала вне AID_NONE
4 d04f9d1 Zholobov latch — first-call snap, далее soft-correction. Новый параметр EK3_EXTNAV_DRIFT Чтобы редкие коррекции не сбивали полёт скачком
5 5913765 V1.2.0: восстановлен AID_NONE guard для НЕ-ExtNav, FAKE airspeed в mandatory checks Защита от случайного использования bench-фичей в полёте
6 46c32e6 FAKE airspeed backend (TYPE=17) Bench-only, на полётной сборке выключен через AP_AIRSPEED_FAKE_ENABLED=0
7 02ea64f Tools/scripts/extra-hwdef-valkyrie-bench.dat Отдельная bench-сборка

Карта разделов

EXTNAV — почему выбран

В чём разница EXTNAV (6) и BEACON (4), почему мы используем именно EXTNAV.

CMD 43003 — канал коррекций

Что физически делает CMD 43003, через какие функции проходит, какие гарды есть.

SET_GPS_GLOBAL_ORIGIN

Почему этот шаг обязателен, что произойдёт без него, set-once природа.

Zholobov latch

Что делает first-call vs repeat-call, как widened R_OBS управляется через EK3_EXTNAV_DRIFT.