I'm trying to use a BNO085 in its full 9-DOF mode (i.e. with magnetometer enabled) and have found its calibration process to be both opaque and ineffective. Wondering if anybody here has intimate experience with it and can tell me what I might have got wrong.
The calibration process described in datasheet 1000-4044 is;
- Enable dynamic calibration on all 3 sensors.
- Enable Game Rotation Vector output (this is accelerometer+gyroscope only).
- Enable Magnetic Field output and monitor the accuracy level (0-3) in the report status field.
- Perform described motions to calibrate the accelerometer, gyroscope & magnetometer in turn.
When I do this accuracy is usually already reported at 3 (Highest) or very quickly climbs to 3 while I'm still doing the first set of accelerometer orientations. From there it will sometimes fluctuate between 2 or 3 while I complete the other motions but definitely doesn't impart any sense of improvement or progression. Nevertheless I read the DCD content and save it to reload on restart.
If I follow the process to first clear the Dynamic Calibration Data (Reset, Erase DCD FRS, Clear DCD & Reset) I see a slightly different progression where accuracy starts at 0 but then quickly climbs to 3 per the above.
In all of the above cases when I subsequently try and use the 9-DOF Rotation Vector quarternion the heading is prone to large movements (sometimes by as much as 45 or 90 degrees), I think in particular, but not only, after periods of high motion.
I actually get much better results just using the 6-DOF Game Rotation Vector but really want to remove the periodic drift and I have no idea how I might improve on the 9-DOF performance since as far as I can tell I'm following the data sheet guidance.