First of all, thank you for your products. We have been using the BNO055 sensor in NDOF operating mode to get the absolute orientation of the sensor. I believe that this fusion mode combines magnetometer measurements along with the other sensor measurements to obtain the yaw/heading estimates of the sensor.
We would like to understand how the disturbances in the magnetometer measurements due to indoor magnetic fields are compensated during the heading/yaw angle estimation. Mainly, is there any underlying logic that understands when not to use the magnetometer measurements for the yaw estimation and instead uses some fallback mechanisms in its place? It would be great if you provide us with some pointers or reference documentation from your knowledge base.
Thank you in advace.
Solved! Go to Solution.
Thanks for your inquiry.
Regarding NDOF sensor fusion and magnetometer calibration please refer to online article at https://www.edn.com/sensor-data-fusion-enhancing-gaming-navigation-and-vr-experiences/.
BNO055 NDOF sensor fusion has 2 bits magnetometer calibration status in register 0x35. 3 means the mag is fully calibrated and the heading output of BNO055 has good accuracy. 0 means that the mag is not calibrated and the heading output has large error. 1 and 2 mean the mag is being calibrated or partly calibrated. Performing figure-8 motions in 3D space can calibrate the mag automatically.
So when BNO055 is operating at indoor magnetic inference situation, you can always monitor the mag calibration status value. When the value is 3, you can trust the heading. When the value is 0, you need to perform mag calibration.
Thank you for the details.
The link you had attached, https://www.edn.com/sensor-data-fusion-enhancing-gaming-navigation-and-vr-experiences/ mentions about a fast-magnetometer calibration software.
> Bosch Sensortec has focused on meeting the challenge head-on by developing “natural-use” fast magnetometer calibration software that is configured to the typical uses of each of the different types of devices, even when they are in constant motion. The objective is to ensure that even without any specific, intentional action from user, the inertial sensor in a device is automatically and accurately calibrated for use across changing environments.
We would like to understand if this fast-calibration software is already internally running at the stock firmware level of BNO055 (this is not entirely clear also from the article and the user guide manuals) and especially the gyroscope corrections for the magnetometer offsets are already considered with the sensor firmware in the NDOF operating mode?
Also, by any chance, is there a white paper detailing the theoretical developments of this fusion, publicly available?
BNO055 has BSX sensor fusion library running inside Atmel SAMD20J18 MCU. BNO055 has built-in two 9-axis sensor fusion modes called NDOF and NDOF_FMC_OFF. If you chose NDOF mode, then gyro data will be used to quickly calibrate the mag. This means that you don't even need to finish a full round of Figure-8 motion to calibrate the mag. Maybe before the half way of Figure-8 motion the mag is already fully calibrated and ready to go. If you chose NDOF_FMC_OFF mode, then only mag data will be used to calibrate the mag.
Sorry that there is no publicly document available for BSX library running inside BNO055.