Using extenally Calibrated Compass for 9-axis

By gshera , 9 March 2016

For the MPU9250, and motion 6.12 library, it would be beneficial to be able to save the hard-iron calibration values and load to the MPU library on startup without requiring a Figure 8 motion to calibrate. This is desired for equipment mounted applications where calibration after mounting is not trivial and would be inconvenient following system restart.

Is there any interface read or write the compass bais values for the hard iron calibration?

Our implementation for 9-axis fusion orientation is operating and inv_got_compass_bias() returns true when the figure 8 is completed.

If there is no hard-iron bais value read / write interface, can 9-axis fusion orientation be enabled using externally calibrated compass values?
The 9-axis does not appear to operate even if inv_set_compass_bias is used.

The inv_build_compass() function comment block for calibration outside MPL appears to be referring to soft iron calibration when code is investigated.
@param[in] compass Compass data, if it was calibrated outside MPL, the units are uT scaled by 2^16.
* Length 3.
@param[in] status Lower 2 bits are the accuracy, with 0 being inaccurate, and 3 being most accurate.
* The upper bit INV_CALIBRATED, is set if the data was calibrated outside MPL and it is
* not set if the data being passed is raw. Raw data should be in device units, typically
* in a 16-bit range.

The INV_CALIBRATED enables soft-iron adjustment which must be determined externally, but these are also not applied unless the internal hard-iron values are set via figure 8.
Is there a way to force 9-axis fusion orientation using externally compensated compass values?

phpbb Topic ID
33661