2023-12-04 01:08 PM
Hello ST Community,
I'm currently evaluating a project that requires accurate roll and pitch measurements under light to medium acceleration, preferably in quaternions. I initially tried the BNO085 sensor with its integrated sensor fusion processor, but was unhappy with its accuracy and repeatability, falling short of my 0.1 degrees target.
To explore ST's offerings, I used a Nucleo-F401RE in conjunction with the IKS01A3. For data visualization, I relied on the Unicleo-GUI to display the Dynamic Inclination data from the board (using the X-CUBE-MEMS1 software package and MotionDI middleware -> DynamicInclinometer example). I tested this setup with both the magnetometer enabled and disabled, aiming to minimize reliance on the mag moving forward. However, I found both configurations delivered similar results, which suggests the magnetometer may not be a deciding factor for the sensor fusion algorithm to correct the shortcomings of the accelerometer and gyro.
The measurement accuracy and repeatability are great, but an issue arose that the BNO085 had effectively counteracted: Linear acceleration affecting the Pitch and Roll measurements. With light shaking along a flat surface, the measurements are jumping by ± 5-10 degrees.
This Signalquest video from nine years ago concisely illustrates what I am trying to achieve. I was hoping for the Middle (green) indicator performance, but unfortunately, the end result mirrors the Right (orange) one when observing the Unicleo-GUI. Here's the link for reference:
https://youtu.be/g1q2Gat-yJo?si=sRHP5xYvyexavA26&t=58
Has anyone else tackled a similar issue or could point me towards useful resources? Any assistance would be greatly appreciated!
Thank you!
Something I noticed: The iPhone seems to do this very well too. I tested it using the “IMU Utility” app and the measurements are pretty precise and “acceleration proof”. Apple also seems to only rely on an off the shelf 6 axis IMU from Bosch to achieve this.
Solved! Go to Solution.
2023-12-05 06:30 AM
Hi @alexwall ,
As the UM2724 suggests, you should increase ATime and decrease FRTime to have an algorhytm more reliant on the gyroscope.
You can also try to adjust (increase) the AccThr parameter to have a wider set of stable points, and the other parameters of the MDI_gyro_cal_knobs_t (described at page 4 of the UM can help).
2023-12-05 01:03 AM
I read through the MotionDI documentation again and found the ATime parameter. After setting it to its maximum value of 5, the output got a lot better (for my use case). I will evaluate if that is good enough later. If you have any other input, it is still highly appreciated.
2023-12-05 06:30 AM
Hi @alexwall ,
As the UM2724 suggests, you should increase ATime and decrease FRTime to have an algorhytm more reliant on the gyroscope.
You can also try to adjust (increase) the AccThr parameter to have a wider set of stable points, and the other parameters of the MDI_gyro_cal_knobs_t (described at page 4 of the UM can help).
2023-12-05 02:05 PM
Thank you. Sometimes carefully reading the manual can work wonders. I will play around with the parameters in the next days :)