
BNO085 IMU Sensor Heading Readings
While testing the BNO085 sensor with the example code to find heading from Adafruit. I noticed that the readings for heading between "Rotation Vector" and "Geomagnetic Rotation Vector" drift from each other (up to 25° differences between the two at certain point). This is expected as the "Rotation Vector" reading is supposed to be more accurate with a fusion of magnetometer + gyro + accelerometer while the "Geomagnetic Rotation Vector" reading is only magnetometer + accelerometer (based on the provided documentation for the sensor).
However, what is strange is after relaunching the code for to find heading without moving the sensor at all, the "Rotation Vector" increases/decreases to the same reading as "Geomagnetic Rotation Vector" while the "Geomagnetic Rotation Vector" reading stays about the same after rerunning the code.
Ex:
1st run: Run the example code, rotate the sensor a bit, final reading: Rotation Vector: 100°, Geomagnetic Rotation Vector: 120°.
2nd run, without changing position or anything else, final reading: Rotation Vector: 119°, Geomagnetic Rotation Vector: 121°.
Why is this the case? Isn't the "Rotation Vector" supposed to be more accurate than "Geomagnetic Rotation Vector"? It can't be caused by surrounding magnetic field either cause both readings use the magnetometer, the only difference is the inclusion of the gyro.