Skip to main content
Explorer
November 20, 2023
Question

MotionFx start_automatic_gbias_calculation and sensor calibration

  • November 20, 2023
  • 7 replies
  • 2821 views

We are feeding Gyro/Accel uncalibrated into motionFx as per app note UM2220 (getting started with sensor fusion). The app note says one does not have to feed calibrated and the library does gyro calibration on the fly.

 

We have been seeing some drift issues in readings and as part of investigations have tried to use the "start_automatic_gbias_calculation".

The get knobs seems to be returning gyro th 0.007, acc th 0.0028 and mag th .0008; this is just after the library initialisation; just reading the defaults. If we then run sensors and fusion for 10 seconds and read back these knobs we see no change in the values.

Where does the library get the values of these thresholds?
I was hoping to see a change in the values between library inititialisation and 10 seconds after firing up imu / fusion.
At 10s on reading the knobs we have these values...

Atime 0.899
Mtime 1.5
Frtime 0.667
Lmode 1
gbias_mag_th_sc 0.00079999
gbias_acc_th_sc 0.0006999
gbias_gyro_th_sc 0.00279
acc_orinet nwu
gyro_orinet nwu
mag_orinet "enu"
output_type MFX_ENGINE_OUTPUT_ENU
start_automavtic_gbias_calculation = 0

We are using 6X fusion; fusion being fed at 100Hz. We are using LSM6DSL in fifo mode. Gyro and Accel are being run at 833Hz; 2000 degrees/second and 16G.

As we have no example of how to use the "start_automatic_gbias_calculation"; all we ave done is set the flag in our fusion init routine and 10 seconds after starting the IMU and fusion we have read back the knobs. We are still feeding fusion with propogate/update.

Are our thresholds reasonable; what units are they in?
Are we doing the 

Is what we are seeing reasonable


    This topic has been closed for replies.

    7 replies

    ST Employee
    December 14, 2023

    Hello,
    would you be able to share input dat which you send to MotionFX library?

    Explorer
    January 5, 2024

    Hi Miroslav,

    Sorry for the late reply.

    Which data do you want; the initialisation structure, that any the raw sensors being fed to the fusion?

    Also we have been using 6X gyro calibration mode 1, rather than 2. This relies on the unit being stationary to calibrate; but the unit is wrist mounted; so "never" really gets to be stationary. If we choose dynamic calibration; when will the calibration kick in?

    Do you think using 9X will give us better results?

    Regards,
    Owain

    Explorer
    January 5, 2024

    I get the feeling if we start the unit stationary; using LMode 1 it behaves quite well; but if we hold the device and start quats seem to tumble. Placing unit stationary then seems to stabilise the device but we still see the device cumulatively drifting (yaw). This is irrespective of 6X or 9X with unclaibrated Mag.

    I think most of the current issues are caused by Gyro drift and us not understanding how/when the Fusion package will do its gyro calibration.

    This leads us to the initial post of thresholds?
    Is the best solution for us to do a manual Gyro calibration, persist that calibration and feed the fusion with calibrated gyros?

    ST Employee
    January 9, 2024

    Would you please share more details about you application? I would like to know what type of device it is and what is the expected usage. What is the accuracy you expect?

    If you can share logs of MotionFX input and output data we can analyze it. You should capture the log in some typical use case like you mentioned: "I get the feeling if we start the unit stationary; using LMode 1 it behaves quite well; but if we hold the device and start quats seem to tumble. Placing unit stationary then seems to stabilise the device but we still see the device cumulatively drifting (yaw)."

    I think using 9X mode with magnetometer will improve the performance but you have to calibrate the magnetometer at first. I doesn't make sense to use uncalibrated magnetometer.

    I'm trying to get more information about the LMode 2, I will come back to you soon.

    Concerning you question: "Is the best solution for us to do a manual Gyro calibration, persist that calibration and feed the fusion with calibrated gyros?" The problem is that the gyro offset can change with temperature so your calibration values won't be correct and you will see a drift.

    Explorer
    January 10, 2024

    Hi Miroslav,

    Unit is a wrist mounted HID; on the requirements side it is a bit vague; but I would expect moving the device around and placing it in the same orientation would show it in the same position.

    We have tried our own non-temperature compensated Gyro calibration; I have also tried pulling in uncalibrated Magnetometer. I have also tried turning on the fusion internal magnetometer calibration; but we have some bugs here.

    I would like to change this to a private ticket and speak with you.
    Is this possible; what time zone are you in?

    Regards,
    Owain

    ST Employee
    January 11, 2024

    We have escalated your request to the Online Support (OLS) who can discuss the issue with you directly.

    ST Employee
    January 11, 2024

    Hi @owain-home 

     

    The forum moderator had marked your post as needing a little more investigation and direct support. An online support case has been created on your behalf, please stand by for just a moment and you will hear from us.

     

    Regards,

    Billy

    Explorer
    July 31, 2025

    Hi everyone! Great discussion.
    I was wondering,@Billy OWEN , @Miroslav BATEK , where are the results of this posted?

    @owain-home, did you get this resolved? I am facing similar problems.

    Visitor II
    December 23, 2025

    Hi,

    I am also facing same issue with "iKnobs.LMode = 2".
    if its resolved, kindly share the resolution.