Процесор не встигає за головним циклом
Що пише ArduPilot:
- PreArm: Main loop slow (NHz < NHz)
ArduPilot виконує цикл керування SCHED_LOOP_RATE разів на секунду: типово 400 для Copter і 50 для Plane. Повідомлення показує частоту, якої він справді досягає, і ту, якої від нього просять; армування заборонене, коли перша менша за 90% другої. Цикл, що запізнюється, означає запізнілі команди моторам.
Що робити: найімовірніше спершу
Увімкнено більше, ніж цей процесор здатен виконувати на такій частоті.
ПеревіртеЗазвичай це старіші плати F4 і малі F7. Перше число в повідомленні показує, наскільки він відстає.
ВиправтеВимкніть те, чим не користуєтеся: FFT гіроскопа (
FFT_ENABLE), Lua-скрипти (SCR_ENABLE), друге чи третє ядро EKF (EK3_IMU_MASK), швидкі варіанти логування вLOG_BITMASK. Перезавантажте й прочитайте повідомлення знову.SCHED_LOOP_RATEабоINS_GYRO_RATEпідняли вище, ніж може плата.ВиправтеПоверніться до типових значень (
SCHED_LOOP_RATE400 на коптері,INS_GYRO_RATE0) і перезавантажте; піднімайте їх знову лише на платі H7.Прошивку зібрано для іншого, швидшого варіанта плати або з додатковими можливостями.
Перевірте«Аналізатор прошивки» показує, для якої плати і з якими можливостями зібрано файл прошивки.
ВиправтеЗавантажте стабільну прошивку саме для вашої плати.
Параметри, на які варто глянути
| Параметр | Що це |
|---|---|
SCHED_LOOP_RATE | Scheduling main loop rate |
INS_GYRO_RATE | Gyro rate for IMUs with Fast Sampling enabled |
FFT_ENABLE | Enable |
SCR_ENABLE | Enable Scripting |
EK3_IMU_MASK | Bitmask of active IMUs |
LOG_BITMASK | Log bitmask |
Код, який це надсилає
PreArm: Main loop slow (NHz < NHz)
libraries/AP_Arming/AP_Arming.cpp AP_Arming::system_checks() · Відкрити в ArduPilot Copter-4.7.1