Open jcremona opened 4 months ago
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!).
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)
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).