I am working on a maritime application of surface vessel in which the 9-axis BNO055 is useful for attitude determination and aventual linear acc evaluation. I have some doubts not clear in forums:
1. Is the default mode the NDOF?
2. In the default mode are the Euler Angles referred to north?
(in my case did not, neither after some time.. leading to the 1st doubt)
3. Does anybody obsersve drift in the Euler Angle heading (once rotated to refer to nord across magnetometers at initial time?)?
In my case drifts a lot in time: hence again the doubt 1.. Shouldn't the fusion process unbias measurments across Mag? In my tests the Euler heading result much much more similar to a trapeze integration than a fusion.
In figure below:
Mag Heading in blue,
Euler heading (manually initialized to Mag heading) in orange,
external GPS course over ground in black (confirming MAG)
brutal trapeze integration of gyro (very similar to Euler) in red
I tested two different IMU on two different vessels, leading to the same qualitative conclusions.
The calibration of GYRO and ACC is executed in lab and stored in order to be reloaded, while MAG are calibrated all start up.
Finally: I heard the about the euler mismatch with quaternions, but just when tilting the IMU. Does it affect also heading fusion?
My setup: Arduino Mega 2560
It's quite hard to say what is the definite case of your issues without more information, but here are some answers and common causes for issues :
- The library that you are using is not from Bosch but from Adafruit, I do not know what is the default config. We always recommend to use the official BNO055 driver
- Heading drift in NDOF mdoe is almost always caused by magnetometer distortions. Please also log the acc, gyr and mag calibration statuses. The BNO055 cannot compensate for distortions of the magnetic field, only offsets. Therefore please place the sensor far away from ferromegnetic pieces.
-An offset between BNO055 heading (magnetic north) and GPS is expected, due to magnetic declination
- You data seems to have discontinuities in the heading which I would instinctively attribute to tilting. (especially around 520). I would recommend to use the quaternion output directly.