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

Centripetal acceleration #203

Open
jcremona opened this issue Jul 24, 2024 · 1 comment
Open

Centripetal acceleration #203

jcremona opened this issue Jul 24, 2024 · 1 comment

Comments

@jcremona
Copy link

I have some IMU/Mag data recorded from a Gazebo simulation. The robot is a ground robot that navigates in plain terrain. I've run the Madgwick filter on this data. I have some issues when the robot is turning. I think that what affects the estimation is the centripetal acceleration. Does the Madgwick implement some kind of compensation for the centripetal acceleration? (blue is the estimation and green is the ground-truth)
trajectory
madgwick

Just to run a quick test, I've set the acceleration to the constant vector [0,0,9.802], and the results of Madgwick are much more accurate (I have not modified the gyroscope measurements).
madgwick_seteando_acc_cero_del_robot

@mintar
Copy link
Collaborator

mintar commented Aug 8, 2024

Just to be sure that I understood this correctly: The first two plots are without gravity (just the centripetal acceleration) and the last plot is with gravity? If yes, then it is expected that with gravity, you get much better results.

The madgwick filter uses the acceleration vector to determine which way is "up" (i.e., which way the z axis should point).

The assumption is that when averaged over longer time scales, the acceleration vector is dominated by the gravity vector. All other accelerations (linear acceleration, centripetal force etc.) are considered "noise" and disturb this correction. The Madgwick filter does not compensate for these accelerations; it only observes the accelerations reported by the IMU. The gravity correction is averaged over a longer time scale (10-20 seconds or so) in the hope that shorter bursts of "noise" acceleration average out.

It would be a pretty cool addition to compensate for the accelerations (at least for those that are caused by a control input). In most cases, they don't disturb the orientation excessively though (unless you switch off gravity!).

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

No branches or pull requests

2 participants