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

Revision history [back]

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.

I assume the localization isin't fusing the IMU velocities

Your IMU doesn't report linear velocity. It only reports _angular_ 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.