cancel
Showing results for 
Search instead for 
Did you mean: 

MotionFx start_automatic_gbias_calculation and sensor calibration

owain-home
Associate III

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


7 REPLIES 7
Miroslav BATEK
ST Employee

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

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

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?

Miroslav BATEK
ST Employee

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.

owain-home
Associate III

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

Miroslav BATEK
ST Employee

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

Billy OWEN
ST Employee

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