Hi,
I would appreciate if someone could please explain the various readings provided by the BNO086 library in more detail. I have gone through the hookup guide, tried most of the library examples and did read all BNO086 related posts, but still there are some ??? in my head.
So far I think I figured this out:
- enableRotationVector()
- absolute rotation of the IMU in space, using magnetometer + gyroscope + accelerometer
- absolute = it does not matter in which rotation the device is turned on, orientation will always stay the same, e.g. North is North
- provides rotation in either Quaternions or Vector3 (roll, pitch, yaw)
- problem: gets inaccurate with close magnetic fields, plus at least I get a deviation of around 0-20 degress when turning the devices 360 degrees around itself once.
- enableGyroIntegratedRotationVector()
- relative rotation of the IMU in space, using gyroscope + accelerometer (but not the magnetic orientation)
- relative = in whatever rotation the IMU is turned on, this is rotation zero.
- provides rotation in Quaternions or angle velocity in Vector3
- Magentometer is not involved, therefore the rotation will be less errorprone to magnetic interference… is it faster? is it more accurate? (need further testings)
And then there are readings like
- enableGameRotationVector() (I’ve read it should give faster readings, but more precise?)
- enableARVRStabilizedRotationVector()
- enableARVRStabilizedGameRotationVector
What is it good for, advantages, disadvantages.. ? (E.g. it is mentioned in this thread that GameRotationVector is faster, but what does it mean by “its faster”?)
Also, when testing enableARVRStabilizedGameRotationVector I tried using getRoll(), getPitch() and getYaw() to get Euler Angles (as there are no methods like “getARVR…Vector”, and it seems to me that the readings are independent from magnetometer. So I assume that via roll pitch yaw I get the proper readings here?
- I assume that all readings are provided as Quaternions, but with roll pitch yaw its always possible to access those readings as Euler Angles, no matter what kind of report is set. Is that assumption correct? (With other words, to roll pitch yaw always report the current readings set?)
All in all I think it would be great to have such an overview in the hookup guide along with the examples, like “For use case X use readings Y because Z..”