The compass was calibrated without knowing where it is
What ArduPilot says:
- MagCal: No location, fix_radius skipped
The calibration finished while ArduPilot had no position (no GPS fix yet), so it could not compare the measured field strength with the one expected at your location. The offsets are saved, but the scale factor (COMPASS_SCALE) is left at 0, and the code notes that the position estimator then does not use the world magnetic map for this compass.
What to do, most likely first
The calibration was done indoors, or before the GPS had a fix.
FixNothing is broken. For the complete check, calibrate again outdoors once the GPS has a 3D fix, then reboot.
Bit 0 of COMPASS_OPTIONS makes ArduPilot refuse to start a calibration until the GPS has a fix, so that this cannot happen unnoticed.
Parameters to look at
| Parameter | What it is |
|---|---|
COMPASS_SCALE | Compass1 scale factor |
COMPASS_OPTIONS | Compass options |
The code that sends it
MagCal: No location, fix_radius skipped
libraries/AP_Compass/CompassCalibrator.cpp CompassCalibrator::fix_radius() · Open in ArduPilot Copter-4.7.1