Обчислення дало щось, що не є числом
Що пише ArduPilot:
- Internal errors 0x400 (constraining_nan)
- Internal errors 0x20000000 (invalid_arg_or_result)
constraining_nan: функція, що тримає значення між мінімумом і максимумом, отримала «не число» (NaN) — результат неможливого обчислення, як-от нуль поділити на нуль. Натомість вона повертає середину діапазону, а число l: — рядок, що до неї звернувся. invalid_arg_or_result: математична функція (планувальник траєкторії, формування швидкості й прискорення, PID-регулятор, налаштування фільтра) отримала неможливий вхід — наприклад, межу нуль чи менше або від'ємний крок часу — чи її результат не був числом.
Що робити: найімовірніше спершу
Параметр швидкості, прискорення, ривка чи фільтра дорівнює нулю або від'ємний там, де має бути додатним.
Перевірте«Порівняння й міграція параметрів» покаже, що відрізняється від типових значень: шукайте нулі серед значень навігації й керування позицією.
ВиправтеПоверніть значення в діапазон, указаний в описі параметра, і перезавантажте.
Оцінка позиції й орієнтації (EKF) або датчик видали неможливе значення.
ПеревіртеУ лозі подивіться перед рядком ERR повідомлення EKF чи датчиків і значення, що стрибають до величезних чисел.
ВиправтеЗнайдіть і усуньте ту першу несправність; ця помилка — її наслідок.
Помилка в прошивці.
ВиправтеЯкщо жодне з наведеного не підходить — повідомте, навівши рядок повністю (число l: важливе) і додавши лог.
Не літайте, доки це не пояснено: щонайменше одну мить регулятор працював із вигаданим числом.
Де це зробити:Налаштування й тюнінгПорівняння й міграція параметрів