Для запуску EKF не вистачило пам'яті
Що пише ArduPilot:
- EKF2 IMUNGSF: allocation failed
- EKF3 allocation failed
- EKF3 not enough memory
- NavEKF2: memory allocation failed
- NavEKF2: core N setup failed
- NavEKF2: not enough memory available
Тут пояснено ще: 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 не вдалося підготувати і спробу буде повторено.
Що робити: найімовірніше спершу
Мала плата (F4 або F7 з малим обсягом RAM) водночас тримає забагато «важких» функцій: скрипти Lua, рельєф, великий буфер логів.
ПеревіртеНаземна станція показує вільну пам'ять (freemem). Найчастіший винуватець —
SCR_ENABLE1 з великимSCR_HEAP_SIZE.ВиправтеВимкніть те, чим не користуєтеся (
SCR_ENABLE,TERRAIN_ENABLE), зменштеSCR_HEAP_SIZEіLOG_FILE_BUFSIZE, потім перезавантажте.Запитано більше копій EKF, ніж уміщує плата, або ввімкнено і EKF2, і EKF3.
Перевірте
EK3_IMU_MASKдорівнює 3 чи 7 (дві чи три копії);EK2_ENABLEдорівнює 1 разом зEK3_ENABLE.ВиправтеЗадайте
EK2_ENABLE0. На малій платі задайтеEK3_IMU_MASK1 — одна копія на першому IMU — і перезавантажте.
Параметри, на які варто глянути
| Параметр | Що це |
|---|---|
EK3_IMU_MASK | Bitmask of active IMUs |
EK2_ENABLE | Enable EKF2 |
EK3_GSF_RUN_MASK | Bitmask of which EKF-GSF yaw estimators run |
SCR_ENABLE | Enable Scripting |
SCR_HEAP_SIZE | Scripting Heap Size |
LOG_FILE_BUFSIZE | Logging File and Block Backend buffer size max (in kilobytes) |
TERRAIN_ENABLE | Terrain 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 повідомлень, що надсилаються з тих самих місць.