I recently did a drive test for the BNO055 chip that involved driving around in tight circles in an empty parking lot.
I recorded fused yaw/pitch/roll data with the chip in IMU mode. I drove counter-clockwise at speeds of roughly 10 km/h, 20 km/h, and 30 km/h, then did the same going clockwise. At a speed of 10 km/h, the pitch and roll readings remained relatively constant (around 5 degrees for both), which is what I would expect under a constant angular speed. However, at higher speeds of 20 km/h and 30 km/h, the roll and pitch readings were oscillating, up to +/- 20 degrees.
What’s more, the roll’s oscillation was either leading or lagging the pitch’s oscillation by 90 degrees, depending on whether I was driving clockwise or counter-clockwise. The period of the oscillations appeared to match the period of the yaw (I was completing circles every few seconds), but I’d need to run more tests to confirm this. Also, the magnitudes of the oscillations grew in proportion to the speed of the car.
I’m surprised to see these oscillations - I expected the roll and pitch values at the higher speeds to be similar to those at lower speeds. Does anyone have an idea of why this happening and what I can do to possibly remedy the issue?
Corresponding plot attached.
Solved! Go to Solution.
This behavior is related to the BSX sensor fusion software inside BNO055. It was primarily developped for human motion tracking at first. It does not expect large accelerations due to movement to last that long.
What happens is that when there is a large acceleration that lasts a long time, the algorithm's will include this as a component of earth's gravity and start adjusting the horizon. Usually this would not happen during normal driving, unless braking from a high speed (100+ km/h) down to a very low speed.
I see from you graph over 0.6 lateral g, that is some serious driving right there.
Does anyone have an idea of why this happening and what I can do to possibly remedy the issue?