System Workbench for STM32

Problems mems sensor fusion


I use the demo FP-SNS-ALLMEMS1 firmware. For my application, I need to use the sensor fusion 6 axes (accelerometer + gyroscope) so I choose as a result the quaternion 6 axes.
The data returns by the sensor are weird: when I rotate physically the sensor to 90 degrees, i measure a rotation about 50-60 degrees! eek
Moreover, the sensor never finds its reference position.

The sensor fusion is from the MotionFX library. It implements a sensor fusion algorithm for estimation of 3D orientation in space. Based on Kalman theory to fuse data, there is two function:

  • MotionFX_propagate: estimate the orientation in 3D space. The gyroscope is given more weight in this phase.
  • MotionFX_update: adjusts the predicted value when necessary. In this phase, the accelerometer is given more weight.

In the program I only change the choice of the result of the quaternion 9 axes to 6 axes and activate the fusion for the 6 axes.

How can I fix it?