Hello everyone,
I’m using the GameRotationVector function from BNO086 to get the quaternion and then find the Euler angles.
The axis of the sensor switches irregularly, causing the Euler angle to change.
Does anyone know of such a phenomenon?
The communication standard is I2C.
The library uses [SparkFun_BNO08x_Arduino_Library-main].
Please take good care of me.
Give more details about what is happening…which axis is switching, and what is it switching to?
Have you performed a calibration?
Thank you for your reply.
This phenomenon occurs by chance when the pitch angle is approximately 70° or more.
[What I did.]
The PVC pipe with the sensor fixed inside is dropped into a larger pipe fixed at a pitch angle of 70° or more.
By pulling the string attached to the PVC pipe, the sensor moves back and forth.
(At this time, it rotates randomly in the roll direction.)
When I pull the sensor out of the pipe, the yaw, pitch, and roll angles switch instantly.
The yaw and roll angles will vary randomly.
The pitch angle may not change or may flip sign.
It doesn’t happen all the time, maybe about 10% of the time.
Calibration only initializes the sensor when power is applied.
I wonder if the PVC pipes are causing any static interference (if they slide against one another they are likely generating some transient voltages)
Is it being positioned similarly each time after calibration?
Are you intending to get measurements while it is in-place, or only after removal from the larger pipe?
Sorry for the late reply.
Let me explain the situation again with an illustration.
・Calibration is performed by setting up the device as shown in illustration “Calibration” and inserting the USB port into a laptop.
At this time, roll, pitch, and yaw are all approximately 0 degrees.
・After calibration, insert the sensor into the iron pipe as shown in illustration “Situation” and move it back and forth.
Problems arise when trying to retrieve the sensor from the iron pipe.
・After this, when i return it to the “calibration” position in the illustration , the roll, pitch, and yaw values change randomly(which should remain unchanged and close to 0).
Q. Is it being positioned similarly each time after calibration?
A. The calibration location is the same every time.
Q. Are you intending to get measurements while it is in-place, or only after removal from the larger pipe?
A. As written above.
Have you experienced any similar issues?
thank you.
It could be a lot of things :-/
I would attempt a baseline calibration and a calibration with the apparatus in-place if possible, or try a 2nd IMU (different chipset) to see if the issue can be isolated or not
To be clear, it performs normally while in the pipe? I wonder if the fusion algo is going wonky bc of the angle and accel due to gravity isn’t as high as it expects?
I am able to reproduce the phenomenon.
This phenomenon occurs when a PVC pipe is rubbed against an iron pipe.
For reasons unknown, this problem tends to occur near the entrance to the iron pipe.
As you told me before, static interference could be the cause.
I also tried it with a 2nd IMU but the results were the same.
・This also happened with the second IMU, so it is probably not a product defect.
・This phenomenon rarely occurs deep inside iron pipes, but is more likely to occur near the entrance of the pipe.
I’ll look into static interference.
If this is caused by static electricity interference, do you have any ideas on how to solve it?
I don’t have many ideas, but I did a quick search and it looks like you might be able to either run a grounding wire, or if it won’t harm anything apparently you can apply a coating to make things less static-y
Since you have two, is it possible to try some testing with both at once for some new data? See if the shift occurs at the same time vs the same position as you draw them out. Try them at 180° from each other and see if the shift data is also rotated.