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

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

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

English

Для запуску EKF не вистачило пам'яті

Не даєОцінка позиції й орієнтації (EKF, AHRS)

Що пише ArduPilot:

Тут пояснено ще: 3
  • EKF3 IMUNGSF: allocation failed
  • EKF3 IMUN GSF: not enough memory
  • EKF2 IMUN GSF: not enough memory

EKF, оцінювач позиції й орієнтації ArduPilot, потребує великого блоку пам'яті для кожної своєї копії (по одній на IMU з EK3_IMU_MASK) і ще додаткового — для оцінювача рискання GSF. Під час запуску плата стільки не мала. Після «EKF3 not enough memory» чи «allocation failed» EKF вимкнено до наступного перезавантаження, і апарат не заармується. Рядки з GSF означають, що копію EKF для цього IMU не вдалося підготувати і спробу буде повторено.

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

  1. Мала плата (F4 або F7 з малим обсягом RAM) водночас тримає забагато «важких» функцій: скрипти Lua, рельєф, великий буфер логів.

    ПеревіртеНаземна станція показує вільну пам'ять (freemem). Найчастіший винуватець — SCR_ENABLE 1 з великим SCR_HEAP_SIZE.

    ВиправтеВимкніть те, чим не користуєтеся (SCR_ENABLE, TERRAIN_ENABLE), зменште SCR_HEAP_SIZE і LOG_FILE_BUFSIZE, потім перезавантажте.

  2. Запитано більше копій EKF, ніж уміщує плата, або ввімкнено і EKF2, і EKF3.

    ПеревіртеEK3_IMU_MASK дорівнює 3 чи 7 (дві чи три копії); EK2_ENABLE дорівнює 1 разом з EK3_ENABLE.

    ВиправтеЗадайте EK2_ENABLE 0. На малій платі задайте EK3_IMU_MASK 1 — одна копія на першому IMU — і перезавантажте.

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

ПараметрЩо це
EK3_IMU_MASKBitmask of active IMUs
EK2_ENABLEEnable EKF2
EK3_GSF_RUN_MASKBitmask of which EKF-GSF yaw estimators run
SCR_ENABLEEnable Scripting
SCR_HEAP_SIZEScripting Heap Size
LOG_FILE_BUFSIZELogging File and Block Backend buffer size max (in kilobytes)
TERRAIN_ENABLETerrain data enable
Код, який це надсилає

EKF2 IMUNGSF: allocation failed

libraries/AP_NavEKF2/AP_NavEKF2_core.cpp NavEKF2_core::setup_core() · Відкрити в ArduPilot Copter-4.7.1

EKF3 allocation failed

libraries/AP_NavEKF3/AP_NavEKF3.cpp NavEKF3::InitialiseFilter() · Відкрити в ArduPilot Copter-4.7.1

EKF3 not enough memory

libraries/AP_NavEKF3/AP_NavEKF3.cpp NavEKF3::InitialiseFilter() · Відкрити в ArduPilot Copter-4.7.1

NavEKF2: memory allocation failed

libraries/AP_NavEKF2/AP_NavEKF2.cpp NavEKF2::InitialiseFilter() · Відкрити в ArduPilot Copter-4.7.1

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

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

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