I'm using the BHI260AB hosted by an STM32.
In my application, I use the Game Rotation Vector for getting the current orientation of the device. But I noted that if I apply a constant vibration (3Hz) on the device, the Game Rotation Vector quaternion got from the chip starts shifting over time. The vibration applied is really slow and has low amplitude, it's just a subtle shaking of the device.
At the beginning of the test the resulting quaternion of the Game Rotation Vector was:
After 1 minute of shaking the device, the resulting quaternion on the same position was:
Solved! Go to Solution.
The device is mounted on a testing device that has some external reference marks for having known positions.
Besides that, please answer if is it possible that the Game Rotation Vector drifts over time?
As far as I know, the main difference between the Rotation Vector and the Game Rotation Vector is that the first one is based on the accel/gyro/mag, while the second one is based on accel/gyro.
So the Rotation Vector creates an absolute frame of reference that depends on two absolute magnitudes: gravity and Earth's magnetic field. Which are perpendicular to each other.
On the other hand, the Game Rotation Vector is based only on gravity. So, I suppose that for getting the actual position of the device, the Fusion algorithms must basically integrate the acceleration and velocity of the accelerometer and gyroscope respectively. And we know that integration means the accumulation of errors over time.
So I just want to be sure if all this is correct, maybe the Fusion library does something else, but I don't think so.
The video is for BNO055, and it really works for BNO055. But it does not work for BHI260. The accuracy for accel would not change if I use the same way as BNO055.
So you should use the traditional 6 direction calibration method for accelerometer, and make sure both accuracy of accelerometer and gyro to be 3 before using game rotation vector.