← Усі інструменти

Пояснення повідомлень і помилок

Що означає повідомлення ArduPilot і що з ним робити

English

Скрипт dead reckoning: політ додому без GPS

Діяти негайноФейлсейфи й аварійні ситуації в польотіЛише Коптер

Що пише ArduPilot:

Тут пояснено ще: 7
  • DR: failed to set attitude target
  • DR: flying home
  • DR: waiting for dist:… need:…
  • DR: NEXT_MODE=-1 but fallingback to RTL
  • DR: GPS and EKF recovered
  • DR: pilot retook control
  • DR: failed to change to mode …

Рядки, що починаються з «DR:», надсилає Lua-скрипт copter-deadreckon-home, а не прошивка. Він стежить за GPS (супутників менше за DR_GPS_SAT_MIN, точність швидкості гірша за DR_GPS_SACC_MAX) і за фейлсейфом EKF. «DR: waiting for dist» та «DR: enabled» — це норма: він напоготові, щойно коптер відлетить на DR_ENABLE_DIST метрів від дому. «DR: GPS or EKF bad» — сама подія: в Auto, Guided, RTL, Circle, Land, Brake чи SmartRTL він перемикає в Guided_NoGPS, 5 с вирівнює коптер, а потім нахиляє його на DR_FLY_ANGLE градусів у бік, де був дім («DR: flying home»). Коли GPS та EKF справні 3 с або минуло DR_FLY_TIMEOUT секунд, він перемикає в DR_NEXT_MODE.

Що робити: найімовірніше спершу

  1. GPS справді погіршився: глушіння, спуфінг або закритий огляд неба.

    ПеревіртеУ лозі — GPS.NSats і GPS.SAcc за секунди перед «DR: GPS or EKF bad», порівняно з DR_GPS_SAT_MIN і DR_GPS_SACC_MAX.

    ВиправтеСкрипт робить свою справу: він тримає курс, а не позицію, тож вітер зносить коптер із лінії додому. Щойно побачите коптер, перейдіть в AltHold чи Stabilize й ведіть його вручну («DR: pilot retook control»).

  2. Пороги жорсткіші за те, що цей GPS показує у звичайний день, тож скрипт спрацьовує в нормальних польотах.

    ПеревіртеПодивіться GPS.SAcc і GPS.NSats за весь нормальний політ: точність швидкості має лишатися помітно нижчою за DR_GPS_SACC_MAX (типово 0.8), а кількість супутників — вищою за DR_GPS_SAT_MIN (6).

    ВиправтеЗадайте обидва пороги із запасом від того, що показують ваші логи. DR_GPS_TRIGG_SEC мав би бути часом, який GPS має лишатися поганим, але у власній копії скрипта ArduPilot його порівнюють із мілісекундами, тож він спрацьовує відразу, хай що ви задали.

  3. «DR: failed to change to Guided_NoGPS mode», «DR: failed to set attitude target» або «DR: failed to change to mode …»: коптер відмовив скрипту.

    ПеревіртеРядок «Mode change to … failed: …» поруч називає причину від ArduPilot. DR_NEXT_MODE 6 (RTL) відхиляється, доки немає позиції.

    ВиправтеСкрипт пробує далі й тим часом лишається в Guided_NoGPS. Ведіть коптер додому вручну, а згодом виберіть DR_NEXT_MODE, який може стартувати без позиції, якщо очікуєте, що GPS не повернеться.

Скрипту потрібні SCR_ENABLE 1 і близько 80 кБ пам'яті для скриптів (SCR_HEAP_SIZE). DR_FLY_TIMEOUT 0 означає, що він летить за курсом, доки його не зупинить фейлсейф батареї або ви. У прошивки є власний dead reckoning («Dead Reckoning started») — це інша річ.

Параметри, на які варто глянути

ПараметрЩо це
DR_ENABLEDeadreckoning Enable
DR_ENABLE_DISTDeadreckoning Enable Distance
DR_GPS_SACC_MAXDeadreckoning GPS speed accuracy maximum threshold
DR_GPS_SAT_MINDeadreckoning GPS satellite count min threshold
DR_GPS_TRIGG_SECDeadreckoning GPS check trigger seconds
DR_FLY_ANGLEDeadreckoning Lean Angle
DR_FLY_TIMEOUTDeadreckoning flight timeout
DR_NEXT_MODEDeadreckoning Next Mode
Код, який це надсилає

DR: could not get home or vehicle location

libraries/AP_Scripting/applets/copter-deadreckon-home.lua update() · Відкрити в ArduPilot Copter-4.7.1

DR: enabled

libraries/AP_Scripting/applets/copter-deadreckon-home.lua update() · Відкрити в ArduPilot Copter-4.7.1

DR: failed to change to Guided_NoGPS mode

libraries/AP_Scripting/applets/copter-deadreckon-home.lua update() · Відкрити в ArduPilot Copter-4.7.1

DR: fly home yaw:… pit:… cr:……

libraries/AP_Scripting/applets/copter-deadreckon-home.lua update() · Відкрити в ArduPilot Copter-4.7.1

І ще 9 повідомлень, що надсилаються з тих самих місць.

Тут написано для: Коптер, 4.6. В інструменті можна вибрати свій апарат і версію, побачити значення власних параметрів поруч із названими тут і перетягнути лог польоту, щоб отримати пояснення до кожного повідомлення в ньому.

Відкрити в інструменті