06-16-2022 10:22 AM
I am currently usinga BNO055 sensor fitted on the Arduino Nine-axis motion shield to measure ocean wave heights and periods. To do this, I'd like to use the quaternions provided, however I have a slight issue. A quaternion should be <cos(theta/2), X*sin(theta/2), Y*sin(theta/2), Z*sin(theta/2)>, with X, Y and Z the coordinates of a unit vector and theta the angle of rotation around that vector. Therefore, I expect all three to be inferior to one.
However, when I run a simple code to see the raw data, the W given by my sensor when on the table is 16 375, and X, Y and Z values are in the high hundreds range...
This gives me a wave height of hundreds of thousands of kilometers 🙂
Does anyone know why this happens? Do I need to divide the quaternion by it's norm to get the correct result? Or maybe I am misunderstanding the use of a quaternion?
Thanks in advance for your help
06-16-2022 11:29 AM
Before you use output data, BNO055 should be calibrated.
06-16-2022 03:43 PM
Thank you for your answer BSTRobin,
However, this did not change anything. Indeed, even if uncalibrated, no cosine should be larger than 1, let alone in the hundreds of thousands...
Unfortunately I can't use the Euler angles because I expect to encounter gimbal lock in this equation
07-01-2022 10:27 AM
Can we know how to reproduce your feedback?