-
Notifications
You must be signed in to change notification settings - Fork 904
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
Odometry drift caused by acceleration drift removal in relative mode #846
Comments
Seems like you are using "relative" orientation to remove the gravity. The basis of line 2737 are three assumptions:
I wonder how you configured the gravity removal previously, given that your IMU is mounted at an angle? Another change to acceleration processing, as you have mentioned in #753 , is the compensation of angular acceleration and centrifugal acceleration to the off-center IMU measurement. This processing assumes your IMU is rigidly attached to the same link (rigid body) as base_link, and the translation from base_link to the IMU sensor frame is also defined in your TF tree. I would appreciate it if you could share some of your faulty data so that I can help identify the problem. |
This is true. Is this not a valid use case?
I used the same configuration in version 2.7.3 without problems.
This is only partly valid.
So you're saying the IMU measurement should be such that after transformation to
This is perfectly valid in my case. Maybe I should elaborate on our reason for setting
This assumption seems valid in my case. Also, I'm quite sure this is not causing any problems for me at this point. I'll see if I can make a minimal bag file that shows the difference between releases 2.7.3 and 2.7.4 and share that this week. |
The following piece of code (introduced in #753), causes my odometry state to drift due to a nonzero resulting acceleration vector after removing the gravitational acceleration.
robot_localization/src/ros_filter.cpp
Lines 2730 to 2738 in 804729e
My
r_l
configuration is as followsI'm aware that no position data is being fused here, so odom might drift with a random walk, but I'm seeing a significant deterioration (and nonzero mean drift, so not purely random) caused by the referenced code. I'm not sure what the theory behind this piece of code is. Could someone please elaborate? @HaoguangYang maybe?
The text was updated successfully, but these errors were encountered: