Troubleshooting¶
Симптом → диагноз → действие. Сгруппировано по фазе.
Pre-flight / на стенде¶
EKF3 init failure: No GPS lock¶
Диагноз: EK3_SRC1_POSXY ≠ 6. Прошивка ждёт GPS-fix потому что источник всё ещё GPS, init-bypass из commit 23351a4 не срабатывает.
Действие:
- Проверить
EK3_SRC1_POSXY = 6через GCS. - Если не 6 — поправить, перезагрузить.
- Если поправлено и всё равно ругается — проверить что прошивка из ветки
valkyrie/plane-4.6.3(flight_custom_version = 59137650).
EKF3: origin already set¶
Диагноз: В этой сессии уже был успешный SET_GPS_GLOBAL_ORIGIN. Origin set-once.
Действие:
- Перезагрузить полётник.
- Начать процедуру с шага 1 (boot).
Pre-arm passes, но EKF status показывает только ATTITUDE¶
Диагноз: Шаги SET_GPS_GLOBAL_ORIGIN и/или CMD 43003 ещё не выполнены.
Действие:
- Проверить что наземная команда отправила
SET_GPS_GLOBAL_ORIGIN. Должен прийти ackGPS_GLOBAL_ORIGIN. - Проверить что первая CMD 43003 отправлена.
- После двух шагов флаги должны стать
ATTITUDE | POS_HORIZ_REL | POS_HORIZ_ABS.
CMD 43003 отправлена, но EKF в POS_HORIZ_ABS не входит¶
Диагноз: setLatLng отвергнут. Вероятные причины:
validOrigin = false— SET_GPS_GLOBAL_ORIGIN не выполнен или не дошёл.- Координаты невалидны (например,
lat=0, lng=0). - Команда поступила в неправильном формате.
Действие:
- Проверить ack от SET_GPS_GLOBAL_ORIGIN.
- Проверить что в CMD 43003 lat/lng в правильных единицах (× 1e7 для int32).
- Включить debug-логирование наземной команды — посмотреть что физически отправлено.
- В логе борта посмотреть DAL-записи
SetLatLng.
Pre-arm: Need 3D fix / GPS Configuration¶
Диагноз: ARMING_CHECK бит 3 (GPS lock) или 12 (GPS Configuration) не выключен.
Действие:
- Проверить
ARMING_CHECK. Бит 3 (значение 8) должен быть выключен. У production-baseline771810 = 0b10111100011000010— бит 3 не установлен. - Опционально выключить бит 12 (GPS Configuration) если есть.
- Если GPS физически не нужен —
GPS_TYPE = 0, тогда даже статусные warnings уйдут.
Pre-arm: Airspeed not healthy¶
Диагноз: pitot не работает или ARSPD_USE = 0.
Действие:
- Проверить
ARSPD_USE = 1,ARSPD_TYPEсоответствует физически установленному (4.5 baseline: TYPE=8 = DLVR). - Дуть в pitot —
ARSPDvalue должен меняться. - Без airspeed coast не работает (нет TAS-обзёрвации для замораживания ветра). Не лети без airspeed.
В полёте¶
pos_horiz_variance стремительно растёт¶
Возможные причины:
- Coast (нет коррекций) — нормально, расти будет постепенно.
- Plохой airspeed — TAS-fusion даёт шумные обзёрвации, drift растёт быстрее.
- Сильный ветер при плохо инициализированном wind state — оценка позиции дрейфует на разницу true_wind − estimated_wind за такт.
Действие:
- Если есть связь с наземной командой коррекций — попросить отправить CMD 43003.
- Если
variance > 500(drift > 22 м) и коррекции не помогают — RTL/abort. - После полёта анализировать log
.bin:XKF1.PNV,XKF1.PEV,XKF1.VWN,XKF1.VWE.
velocity_variance высокая (> 5)¶
Возможные причины:
- Airspeed нездоровый — pitot забит, повреждён трубопровод.
- EKF lost track — длительный coast + неточная wind initialization.
- IMU vibration — высокие шумы на акселерометре корраптят IMU integration.
Действие:
- Попробовать получить CMD 43003 для re-aiding.
- Если не помогает —
RTLилиMANUAL. - После полёта — проверить лог на
XKF1.IVN/IVE/IVD(velocity innovations) иIMU.AccZ(вибрация).
Иконка борта на карте «застряла»¶
Диагноз: EKF в POS_HORIZ_ABS, но коррекций давно нет. EKF отображает свою последнюю оценку, наземное ПО видит её как «застывшую».
Действие:
- Это не ошибка EKF — фильтр работает, просто visualization не обновляется без новых данных.
- Если ожидался поток коррекций — проверить связь.
STATUSTEXT: EKF3 unhealthy¶
Диагноз: EKF потерял aiding (AID_NONE) или сильно расходится с обзёрвациями.
Действие:
- С
AHRS_OPTIONS=32AHRS НЕ переключится на DCM — будет failsafe. - Failsafe action зависит от
FS_LONG_ACTN(у тебя1— это RTL). - Пилот должен быть готов взять MANUAL.
После полёта (анализ логов)¶
Не уверен что Zholobov latch сработал¶
Что искать в .bin логе:
MAVExplorer.py, открытьXKF1сообщения.- Смотреть на
PN, PE(позиция NE). На первой CMD 43003 — должен быть резкий step (snap path). На последующих — плавная кривая (soft path). - Если все CMD 43003 дают step — латч не сработал. Возможно
EK3_SRC1_POSXY ≠ 6.
Проверить сколько коррекций было принято¶
Что искать: DAL-записи SetLatLng. Каждая успешная коррекция = одна запись. Если в логе их меньше чем отправляла наземная команда — какие-то отверглись.
Возможные причины отказа:
validOrigin = falseна момент отправки.- Координаты невалидны.
- CMD 43003 пришла в неподходящее время (нет связи).
Анализ wind state¶
Что искать: XKF1.VWN, XKF1.VWE (NE-компоненты ветра).
- Должны стабилизироваться через 5–10 секунд после момента когда groundspeed превысила 5 m/s.
- Во время coast'а должны быть постоянными (
treatWindStatesAsTruth=true). - При re-aiding должны быстро переобучаться (если ветер изменился).
Если ветер «прыгает» во время coast'а — treatWindStatesAsTruth не сработал. Возможно posTimeout не сработал, или dead_reckoning=false. Глубокий разбор.
Контакты / эскалация¶
Если симптом не покрыт здесь — лог .bin + текстовое описание ситуации отправляй разработчикам прошивки.