In-flight compass learning has started, or finished
What ArduPilot says:
- CompassLearn: Finished
- CompassLearn: Initialised
COMPASS_LEARN is 3: ArduPilot works out the compass offsets in flight instead of from a calibration on the ground. “Initialised” appears at start-up. While learning is on, the compass is not used for heading at all. Once the aircraft has been flying for 3 s and the heading worked out from GPS movement is known to better than 5 degrees, the offsets are set from it, COMPASS_LEARN is saved back to 0 and “Finished” appears.
Until “Finished” the compass arming checks do not run, and the parameter's own description warns that position control modes cannot be used. The result contains offsets only; a full calibration on the ground is more exact.
Parameters to look at
| Parameter | What it is |
|---|---|
COMPASS_LEARN | Learn compass offsets automatically |
COMPASS_OFS_X | Compass offsets in milligauss on the X axis |
COMPASS_OFS_Y | Compass offsets in milligauss on the Y axis |
COMPASS_OFS_Z | Compass offsets in milligauss on the Z axis |
The code that sends it
CompassLearn: Finished
libraries/AP_Compass/Compass_learn.cpp CompassLearn::update() · Open in ArduPilot Copter-4.7.1
CompassLearn: Initialised
libraries/AP_Compass/Compass_learn.cpp CompassLearn::CompassLearn() · Open in ArduPilot Copter-4.7.1