Виміряне поле не збігається з полем Землі в цьому місці
Що пише ArduPilot:
- PreArm: Check mag field (z diff:N.N>N)
- PreArm: Check mag field (xy diff:N.N>N)
Щойно є позиція, ArduPilot бере з вбудованої карти світу, яким тут має бути магнітне поле Землі, за своєю оцінкою орієнтації розкладає показ першого компаса на північ, схід і низ та порівнює. Відхилення на північ чи схід більше за ARMING_MAGTHRESH (типово 100 мілігаусів) дає «xy diff» з різницею та межею. Вертикальній складовій задумано подвійну межу («z diff»), але в цій версії через помилку в коді ця перевірка ніколи не спрацьовує. Перевірка починається лише після GPS-фікса, тому армування може вдаватися в приміщенні й не вдаватися надворі.
Що робити: найімовірніше спершу
Сталь чи магніт поблизу викривляє поле: машина, металевий стіл, залізобетон.
ПеревіртеРізниця в повідомленні змінюється, коли ви відносите апарат на кілька метрів.
ВиправтеПеред армуванням вийдіть на відкрите місце.
Калібрування робили в місці із завадами або до того, як на апарат додали щось магнітне.
ВиправтеВідкалібруйте знову надворі, з усім обладнанням і з GPS-фіксом, потім перезавантажте.
Компас встановлено догори дном або під нахилом, а
COMPASS_ORIENTцього не враховує.ПеревіртеУ північній півкулі нахил носа вниз має збільшувати значення X компаса, а переворот апарата догори дном — зменшувати Z; у південній півкулі навпаки.
ВиправтеЗапустіть калібрування з
COMPASS_AUTO_ROT2 (типове значення): воно знаходить орієнтацію зовнішнього компаса й зберігає її вCOMPASS_ORIENT. Для компаса на платі виправтеAHRS_ORIENTATION.
У 4.7 вертикальну перевірку виправлено. Тому компас, з яким ця версія армується, після оновлення може дістати відмову з «z diff»: похибка була й раніше, її лише не перевіряли.
Параметри, на які варто глянути
| Параметр | Що це |
|---|---|
ARMING_MAGTHRESH | Compass magnetic field strength error threshold vs earth magnetic model |
COMPASS_ORIENT | Compass orientation |
COMPASS_EXTERNAL | Compass is attached via an external cable |
AHRS_ORIENTATION | Board Orientation |
COMPASS_AUTO_ROT | Automatically check orientation |
COMPASS_SCALE | Compass1 scale factor |
Де це зробити:Налаштування й тюнінгНалаштування й тюнінг
Код, який це надсилає
PreArm: Check mag field (z diff:N.N>N)
libraries/AP_Arming/AP_Arming.cpp AP_Arming::compass_checks() · Відкрити в ArduPilot Copter-4.7.1
PreArm: Check mag field (xy diff:N.N>N)
libraries/AP_Arming/AP_Arming.cpp AP_Arming::compass_checks() · Відкрити в ArduPilot Copter-4.7.1