robot_localization: yaw drift problems ( 2 imus, wheel odometry, low speed)

asked 2017-02-09 08:14:48 -0600

myros gravatar image

updated 2017-02-10 02:27:54 -0600

I am currently testing the localization for a robot, that has 2 imus mounted on the robot and the raw wheel odometry(I do not have access to modify the odometry calculations).

For that, I intended to use the robot_localization package. I have been through the other questions here, and some of the multiple things that I have tried myself were to set multiple combinations of the differential value, and to do some fiddling on the sensor messages covariances and on the process_noise_estimation covariance, and also to select different combinations of which variable to use on the state estimation.

From my last setup, you can find the ekf.yaml and a bagfile. FYI: The robot comes back to exactly the same position.

yaml

frequency: 20
sensor_timeout: 0.0
transform_time_offset: 0.2
two_d_mode: true
print_diagnostics: false

debug: false
debug_out_file: ekf_debug.txt

map_frame: map
odom_frame: odom
base_link_frame: base_link
world_frame: odom

use_control: false
stamped_control: false
control_timeout: 0.2
control_config: [true, false, false, false, false, true]
acceleration_limits: [0.3, 0.0, 0.0, 0.0, 0.0, 0.3]
deceleration_limits: [0.7, 0.0, 0.0, 0.0, 0.0, 0.7]
acceleration_gains: [0.8, 0.0, 0.0, 0.0, 0.0, 0.9]
deceleration_gains: [1.0, 0.0, 0.0, 0.0, 0.0, 1.0]

odom0: /odom
odom0_config: [false,false,false,
           false, false, true,
           true, true, false,
           false, false, false,
           false, false, false]
odom0_differential: false
odom0_relative: true
odom0_queue_size: 10
#odom0_pose_rejection_threshold: 2
#odom0_twist_rejection_threshold: 1
odom0_nodelay: true

imu0: /imutop/data
imu0_config: [false, false, false,
          false,  false,  true,
          false, false, false,
          false,  false,  true,
          false,  false, false]
imu0_nodelay: true
imu0_differential: true
imu0_relative: true
imu0_queue_size: 10
#imu0_pose_rejection_threshold: 2
#imu0_twist_rejection_threshold: 1
imu0_linear_acceleration_rejection_threshold: 0.8
imu0_remove_gravitational_acceleration: false

imu1: /imudown/data
imu1_config: [false, false, false,
          false,  false,  true,
          false, false, false,
          false,  false,  true,
          false,  false, false]
imu1_nodelay: true
imu1_differential: true
imu1_relative: true
imu1_queue_size: 10
imu1_pose_rejection_threshold: 2
imu1_twist_rejection_threshold: 1
imu1_linear_acceleration_rejection_threshold: 0.8
imu1_remove_gravitational_acceleration: false

process_noise_covariance: [0.1, 0.0,    0,    0,    0,    0.0,    0,     0,     0,    0,    0,    0,    0,    0,    0,
                       0,    0.1, 0,    0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0,
                       0,    0,    0.001, 0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0,
                       0,    0,    0,    0.09, 0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0,
                       0,    0,    0,    0,    0.09, 0,    0,     0,     0,    0,    0,    0,    0,    0,    0,
                       0,    0,    0,    0,    0,    0.1, 0,     0,     0,    0,    0,    0,    0,    0,    0,
                       0,    0,    0,    0,    0,    0,    0.04, 0,     0,    0,    0,    0,    0,    0,    0,
                       0,    0,    0,    0,    0,    0,    0,     0.04, 0,    0,    0,    0,    0,    0,    0,
                       0,    0,    0,    0,    0,    0,    0,     0,     0.001, 0,    0,    0,    0,    0,    0,
                       0,    0,    0,    0,    0,    0,    0,     0,     0,    0.09, 0,    0,    0,    0,    0,
                       0,    0,    0,    0,    0,    0,    0,     0,     0,    0,    0.08, 0,    0,    0,    0,
                       0,    0,    0,    0,    0 ...
(more)
edit retag flag offensive close merge delete

Comments

It will increase the size of the post significantly, but could you please include the contents of the yaml in your question? Pastebin has limited retention, which means that this questions will lose some of its value in the future.

Please use the Preformatted Text (101010) button for the yaml.

gvdhoorn gravatar imagegvdhoorn ( 2017-02-09 08:20:21 -0600 )edit
1

@gvdhoorn done.

myros gravatar imagemyros ( 2017-02-09 08:32:56 -0600 )edit

Your images aren't showing. Can you please attach them to this post directly (instead of going through imgur)? I've give you enough karma to do that.

gvdhoorn gravatar imagegvdhoorn ( 2017-02-10 00:52:31 -0600 )edit

The images are now attached.

myros gravatar imagemyros ( 2017-02-10 02:22:49 -0600 )edit

Can you please post sample input messages from each sensor as well? And if you have any static transforms defined, please post those. Oh, and please let me know how the IMUs are mounted.

Tom Moore gravatar imageTom Moore ( 2017-02-21 03:22:08 -0600 )edit

Did you ever solve this?

Tom Moore gravatar imageTom Moore ( 2017-07-20 04:21:21 -0600 )edit