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

Troubleshooting

Симптом → диагноз → действие. Сгруппировано по фазе.

Pre-flight / на стенде

EKF3 init failure: No GPS lock

Диагноз: EK3_SRC1_POSXY ≠ 6. Прошивка ждёт GPS-fix потому что источник всё ещё GPS, init-bypass из commit 23351a4 не срабатывает.

Действие:

  1. Проверить EK3_SRC1_POSXY = 6 через GCS.
  2. Если не 6 — поправить, перезагрузить.
  3. Если поправлено и всё равно ругается — проверить что прошивка из ветки valkyrie/plane-4.6.3 (flight_custom_version = 59137650).

EKF3: origin already set

Диагноз: В этой сессии уже был успешный SET_GPS_GLOBAL_ORIGIN. Origin set-once.

Действие:

  1. Перезагрузить полётник.
  2. Начать процедуру с шага 1 (boot).

Pre-arm passes, но EKF status показывает только ATTITUDE

Диагноз: Шаги SET_GPS_GLOBAL_ORIGIN и/или CMD 43003 ещё не выполнены.

Действие:

  1. Проверить что наземная команда отправила SET_GPS_GLOBAL_ORIGIN. Должен прийти ack GPS_GLOBAL_ORIGIN.
  2. Проверить что первая CMD 43003 отправлена.
  3. После двух шагов флаги должны стать ATTITUDE | POS_HORIZ_REL | POS_HORIZ_ABS.

CMD 43003 отправлена, но EKF в POS_HORIZ_ABS не входит

Диагноз: setLatLng отвергнут. Вероятные причины:

  • validOrigin = false — SET_GPS_GLOBAL_ORIGIN не выполнен или не дошёл.
  • Координаты невалидны (например, lat=0, lng=0).
  • Команда поступила в неправильном формате.

Действие:

  1. Проверить ack от SET_GPS_GLOBAL_ORIGIN.
  2. Проверить что в CMD 43003 lat/lng в правильных единицах (× 1e7 для int32).
  3. Включить debug-логирование наземной команды — посмотреть что физически отправлено.
  4. В логе борта посмотреть DAL-записи SetLatLng.

Pre-arm: Need 3D fix / GPS Configuration

Диагноз: ARMING_CHECK бит 3 (GPS lock) или 12 (GPS Configuration) не выключен.

Действие:

  1. Проверить ARMING_CHECK. Бит 3 (значение 8) должен быть выключен. У production-baseline 771810 = 0b10111100011000010 — бит 3 не установлен.
  2. Опционально выключить бит 12 (GPS Configuration) если есть.
  3. Если GPS физически не нужен — GPS_TYPE = 0, тогда даже статусные warnings уйдут.

Pre-arm: Airspeed not healthy

Диагноз: pitot не работает или ARSPD_USE = 0.

Действие:

  1. Проверить ARSPD_USE = 1, ARSPD_TYPE соответствует физически установленному (4.5 baseline: TYPE=8 = DLVR).
  2. Дуть в pitot — ARSPD value должен меняться.
  3. Без airspeed coast не работает (нет TAS-обзёрвации для замораживания ветра). Не лети без airspeed.

В полёте

pos_horiz_variance стремительно растёт

Возможные причины:

  1. Coast (нет коррекций) — нормально, расти будет постепенно.
  2. Plохой airspeed — TAS-fusion даёт шумные обзёрвации, drift растёт быстрее.
  3. Сильный ветер при плохо инициализированном wind state — оценка позиции дрейфует на разницу true_wind − estimated_wind за такт.

Действие:

  1. Если есть связь с наземной командой коррекций — попросить отправить CMD 43003.
  2. Если variance > 500 (drift > 22 м) и коррекции не помогают — RTL/abort.
  3. После полёта анализировать log .bin: XKF1.PNV, XKF1.PEV, XKF1.VWN, XKF1.VWE.

velocity_variance высокая (> 5)

Возможные причины:

  1. Airspeed нездоровый — pitot забит, повреждён трубопровод.
  2. EKF lost track — длительный coast + неточная wind initialization.
  3. IMU vibration — высокие шумы на акселерометре корраптят IMU integration.

Действие:

  1. Попробовать получить CMD 43003 для re-aiding.
  2. Если не помогает — RTL или MANUAL.
  3. После полёта — проверить лог на XKF1.IVN/IVE/IVD (velocity innovations) и IMU.AccZ (вибрация).

Иконка борта на карте «застряла»

Диагноз: EKF в POS_HORIZ_ABS, но коррекций давно нет. EKF отображает свою последнюю оценку, наземное ПО видит её как «застывшую».

Действие:

  • Это не ошибка EKF — фильтр работает, просто visualization не обновляется без новых данных.
  • Если ожидался поток коррекций — проверить связь.

STATUSTEXT: EKF3 unhealthy

Диагноз: EKF потерял aiding (AID_NONE) или сильно расходится с обзёрвациями.

Действие:

  1. С AHRS_OPTIONS=32 AHRS НЕ переключится на DCM — будет failsafe.
  2. Failsafe action зависит от FS_LONG_ACTN (у тебя 1 — это RTL).
  3. Пилот должен быть готов взять MANUAL.

После полёта (анализ логов)

Не уверен что Zholobov latch сработал

Что искать в .bin логе:

  1. MAVExplorer.py, открыть XKF1 сообщения.
  2. Смотреть на PN, PE (позиция NE). На первой CMD 43003 — должен быть резкий step (snap path). На последующих — плавная кривая (soft path).
  3. Если все 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 + текстовое описание ситуации отправляй разработчикам прошивки.