We are developing a wheeled robot. The requirements for the IMU are somewhere between a vacumm cleaning robot and a drone.
I am not sure if this is the right place for these questions, but I would like to:
1 - Understand the differences/advantages/disadvantages between BMX055/160 and the BNO.
2 - Understand in which situations/conditions I would NOT be able to obtain absolute attitude from my 9 axis IMU. E.g., if I place it next to a DC or AC motor, will it be impacted? Or if my device travels over a metallic part? Or over a magnetic part?
Thanks for your inquiry.
It is true that BMX055/BMX160 and BNO055 have accel, gyro and mag sensors inside to form a 9-axis sensor. However, BMX055/BMX160 is a pure 9-axis sensor which means that they can only output raw data (signed integers) from accel, gyro and mag. In order to obtain absolute attitude or Euler angles, users need to implement sensor fusion algorithms and sensor calibration algorithms in their own host MCU. BNO055 is a plug & play sensor that has Cortex M0+ MCU Atmel SAMD20J18 inside running Bosch BSX sensor fusion library. It can directly output the absolute attitude.
When BNO055 alone or BMX055/BMX160 with user's MCU running sensor fusion algorithms is calibrated for magnetometer, then it means that the current environment around the sensor should not change. If the DC motor is turned on, or if your device travels over a metallic part, or over a magnetic part, then the environment magnetic field around the 9-axis sensor has been changed. The mag needs to be recalibrated. Otherwise, the absolute heading output from BNO055 will not be accurate. So usually users use 6DoF sensor fusion mode without the mag to obtain relative heading for the robot or vacuum cleaner. For drones the mag can be placed far away from the motor or you can use some kind of shielding method to isolate the magnetic field from the motor.