Архитектура 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.