The quick (fixed-heading) compass calibration failed
What ArduPilot says:
- Mag: WMM table error
- Mag[N]: unhealthy
- Mag: no position available
- Mag[N]: bad uncorrected field
This calibration does not need the aircraft turned: given its true heading, ArduPilot looks up the Earth's field for the position and sets the offsets to match. In-flight learning (COMPASS_LEARN 3) uses it too. It needs a position and a compass that delivers readings. “no position available”: neither the position estimator nor the GPS (3D fix) has one. “unhealthy” and “bad uncorrected field”: the compass with that number, counted from 0, gave no data. “WMM table error”: the position is outside the built-in magnetic map.
What to do, most likely first
There is no GPS fix yet.
FixWait outdoors for a 3D fix, then repeat the calibration.
A compass that is switched on for heading is not sending data.
CheckIts values in the ground station are frozen or zero; a pre-arm message about the compass usually comes with it.
FixCheck the compass cable and reboot, or switch that compass off for heading (
COMPASS_USE,COMPASS_USE2orCOMPASS_USE3to 0) if it is not fitted.
This method sets the offsets only and trusts the heading it is given: an error of 10 degrees in the heading becomes an error in the calibration. The full calibration, turning the aircraft, is the better one whenever the aircraft can be turned.
Parameters to look at
| Parameter | What it is |
|---|---|
COMPASS_LEARN | Learn compass offsets automatically |
COMPASS_USE | Use compass for yaw |
COMPASS_USE2 | Compass2 used for yaw |
COMPASS_USE3 | Compass3 used for yaw |
The code that sends it
Mag: WMM table error
libraries/AP_Compass/AP_Compass_Calibration.cpp Compass::mag_cal_fixed_yaw() · Open in ArduPilot Copter-4.7.1
Mag[N]: unhealthy
libraries/AP_Compass/AP_Compass_Calibration.cpp Compass::mag_cal_fixed_yaw() · Open in ArduPilot Copter-4.7.1
Mag: no position available
libraries/AP_Compass/AP_Compass_Calibration.cpp Compass::mag_cal_fixed_yaw() · Open in ArduPilot Copter-4.7.1
Mag[N]: bad uncorrected field
libraries/AP_Compass/AP_Compass_Calibration.cpp Compass::mag_cal_fixed_yaw() · Open in ArduPilot Copter-4.7.1