ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
1

Fusing wheel with IMU using robot_localization - No effect on linear motion

asked 2021-08-04 14:15:55 -0500

crispylel gravatar image

updated 2021-08-04 17:36:13 -0500

miura gravatar image

Hello,

I am trying to use the robot_localization package using IMU BNO055 and wheel encoders.

Now the thing is when i block the robot when it is moving, inducing slip, the robot reports being moved ahead. I assume the localization isin't fusing the IMU velocities.

I did alot of playing around from ROS Answers i found, but having no luck.

In the parameters below I have setup the yaw from the IMU only as it is absolute.

Am I having wrong expectation from this ?

Here is my parameter file:

frequency: 50
two_d_mode: true
odom0: odom_raw
odom0_config: [false, false, false,
               false, false, false,
               true, true, false,
               false, false, false,
               false, false, false]

odom0_differential: false
odom0_relative: false
odom0_queue_size: 10

imu0: /imu/data
imu0_config: [false, false, false,
              false, false, true,
              false, false, false,
              true, true, true,
              true, true, true]


imu0_differential: true
imu0_relative: false
imu0_queue_size: 10
imu0_remove_gravitational_acceleration: true

odom_frame: odom
base_link_frame: base_link
world_frame: odom
edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
0

answered 2021-09-13 04:35:44 -0500

Tom Moore gravatar image

updated 2021-09-13 04:35:59 -0500

I assume the localization isin't fusing the IMU velocities

Your IMU doesn't report linear velocity. It only reports angular velocity and linear acceleration.

The linear velocity that is being reported from your wheel encoders is going to always have a stronger effect on your robot's state estimate than the integrated acceleration values from the IMU. A filter is not going to clean up garbage data for you, I'm afraid. If you had another velocity reference (like visual odometry) that reported 0 velocity with a lower covariance than your wheel encoders, that might slow the effect of the wheel slip down.

But the bottom line is that you are feeding your filter non-zero linear velocity, and expecting it to automatically know when those measurements are wrong. In your case, how does the filter know that the linear acceleration reported by the IMU isn't erroneous?

In general, if you want the filter to not trust a measurement source, you need that trustworthiness to be reflected in the measurement's covariance. So if you had an active wheel slip detector, you could use it to inflate the wheel encoder velocity covariance, which might then cause the filter to trust its kinematic model and the linear acceleration more.

edit flag offensive delete link more

Question Tools

2 followers

Stats

Asked: 2021-08-04 14:15:55 -0500

Seen: 337 times

Last updated: Sep 13 '21