Question concerning calibration of the Holybro DroneCAN RM3100 Professional Grade Compass

FCU: Holybro Pixhawk 6x mini
FCU software: ArduRover V4.6-dev
Compass #1: Holybro DroneCAN RM3100 Professional Grade Compass (External/Orientation None) Enabled
Compass #2: IST8310 Compass in Holybro M10 GPS (External/Orientation 270 deg) Disabled.
Compass #3: BMM150 (Internal/Orientation None) Disabled

I originally calibrated the Holybro DroneCAN RM3100 Professional Grade Compass on my ArduRover using the " Onboard Calibration" tutorial to calibrate the RM3100 Compass in the middle of my living room away from large metallic objects and external magnetic fields.
The resulting Compass offsets were as follows: COMPASS_OSF_X: 11.70581, COMPASS_OSF_Y: -12.42821, COMPASS_OSF_Z: 26.42866 which is positive as I live in the Northern Hemisphere.

The Heading in the Mission Planner Display accurately displayed the heading of the ArduRover in the living room and in the garage until I drove the ArduRover out on the street where the Heading in the Mission Planner Display would be off by around 30 degrees compared to the heading of the ArduRover that was determined by using a handheld compass and including the local declination value of -6 degrees.

So, I decided to do a “Large Vehicle MagCal” out in the street with the ArduRover pointing 180 degrees South using a handheld compass and including the local declination value of -6 degrees. After following the “Large Vehicle MagCal” tutorial, the Heading in the Mission Planner Display now accurately displays the heading of the ArduRover at all points of the Compass both out in the street and in the garage. However, the resulting Compass offsets are now as follows: COMPASS_OSF_X: 115.6724, COMPASS_OSF_Y: -6.072897, COMPASS_OSF_Z: -173.8112 which should be positive as I live in the Northern Hemisphere.
Can anyone explain why the COMPASS_OSF_Z value is now a negative value (Southern Hemisphere) even though I live in the Northern Hemisphere where it should be positive? Is this some kind of anomaly with the RM3100 Compass on my ArduRover?

I think your calibration methodology is slightly flawed. The indoor calibration was likely poor at best, since there are all kinds of sources of interference indoors, and without a GPS lock, you will lack world magnetic model data, which makes an initial calibration a bit tighter.

While I can’t explain the Z offset inconsistency, large vehicle mag cal is really only a starting point before you use either compass learn, or ideally, magfit.

My usual workflow is:

  • Calibrate with good GPS lock either via the “compass dance” or large vehicle mag cal.
  • If large vehicle mag cal was used, drive/fly with compass learn enabled.
  • Reboot and drive/fly large figure 8s at varying speeds (and/or altitudes) for a few minutes.
  • Download the log from the figure 8 session and use the magfit web app to refine.

Even with a really poor initial calibration, the last step of my somewhat cumbersome process is really all that’s needed. In other words, you can skip the compass learn step - it just makes me feel better to start with a half decent calibration.

The RM3100 is used on a fair number of vehicles. While I haven’t specifically looked, I don’t think it has a weird issue with calibration that should produce poor results (in theory, it should produce excellent results).

@Yuri_Rage,

Thanks for the detailed response, much appreciated.

Regards,
TCIII