Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

imu_complementary_filter: Steady state based gyro bias estimation might provide erroneous estimates #87

Open
skohlbr opened this issue Apr 10, 2018 · 3 comments

Comments

@skohlbr
Copy link
Contributor

skohlbr commented Apr 10, 2018

I noticed that using imu_complementary_filter, sometimes yaw rotation is severly underestimated on a tracked platform I tested. Looking further, I noticed that the steady state estimation used when do_bias_estimation is true (which is the default) often thinks the system is in a steady state when it is in fact turning slowly. This leads to the gyro biases getting updated, screwing up the estimator and making the estimated rotation far too small. I plan on making the steady state estimator parameters configurable, but this don't have the cycles to spare right now. Wanted to have this mentioned here, in case somebody else observes issues. The quick fix is turning off the do_bias_estimation param.

@tejakg
Copy link

tejakg commented May 6, 2021

I noticed that using imu_complementary_filter, sometimes yaw rotation is severly underestimated on a tracked platform I tested. Looking further, I noticed that the steady state estimation used when do_bias_estimation is true (which is the default) often thinks the system is in a steady state when it is in fact turning slowly. This leads to the gyro biases getting updated, screwing up the estimator and making the estimated rotation far too small. I plan on making the steady state estimator parameters configurable, but this don't have the cycles to spare right now. Wanted to have this mentioned here, in case somebody else observes issues. The quick fix is turning off the do_bias_estimation param.

Hi there,
I am a beginner, could you please tell me how to over come this issue with yaw.
Thanks in advance.

@robertogl
Copy link
Collaborator

robertogl commented May 6, 2021

I noticed that using imu_complementary_filter, sometimes yaw rotation is severly underestimated on a tracked platform I tested. Looking further, I noticed that the steady state estimation used when do_bias_estimation is true (which is the default) often thinks the system is in a steady state when it is in fact turning slowly. This leads to the gyro biases getting updated, screwing up the estimator and making the estimated rotation far too small. I plan on making the steady state estimator parameters configurable, but this don't have the cycles to spare right now. Wanted to have this mentioned here, in case somebody else observes issues. The quick fix is turning off the do_bias_estimation param.

@skohlbr, this is already configurable. See the parameters:
kAngularVelocityThreshold
kDeltaAngularVelocityThreshold

One thing that might be useful is to separate the single check to three checks so to update the biases of the three angular velocities independently. The only drawback would be the increased number of parameters, from two to six.

@robertogl robertogl removed the bug label May 6, 2021
@qiayuanl
Copy link

qiayuanl commented Sep 28, 2021

I noticed that using imu_complementary_filter, sometimes yaw rotation is severly underestimated on a tracked platform I tested. Looking further, I noticed that the steady state estimation used when do_bias_estimation is true (which is the default) often thinks the system is in a steady state when it is in fact turning slowly. This leads to the gyro biases getting updated, screwing up the estimator and making the estimated rotation far too small. I plan on making the steady state estimator parameters configurable, but this don't have the cycles to spare right now. Wanted to have this mentioned here, in case somebody else observes issues. The quick fix is turning off the do_bias_estimation param.

@skohlbr, this is already configurable. See the parameters:
kAngularVelocityThreshold
kDeltaAngularVelocityThreshold

One thing that might be useful is to separate the single check to three checks so to update the biases of the three angular velocities independently. The only drawback would be the increased number of parameters, from two to six.

It may be more convenient to add these parameters to the ROS params.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants