Robotics StackExchange | Archived questions

robot_localization: diverging covariances

Okay, my robot experiences diverging covariances as the output of the robot_localization package. I feed the ekf node a wheel encoder odometry and an imu, and I find that no matter how I change the input, the x and y position covariances grow out of bound eventually. The positioning is fine, but the map -> odom transform node (rtabmap) cares about the covariance output, and creates jittery behavior due to the covariances.

So, what can I do to decrease the covariance of the output of the ekf_node? More data? Less data? Change covariance of the input data up or down?

Asked by Per Edwardsson on 2023-04-18 07:31:10 UTC

Comments

What values are you fusing? Some stuff that have worked for me is setting one of the two inputs as differential or relative, or literally going into source code of imu/odom drivers and changing the covar values until it worked.

Asked by chased11 on 2023-04-19 22:38:55 UTC

Do you fuse position from somewhere? What kind of source of data is good with that? I mostly get velocities and acceleration from sensors, but the covariance of position blows up which makes my slam go bad.

Asked by Per Edwardsson on 2023-04-28 04:36:21 UTC

Yeah it's good to have some sort of absolute position estimate of some sort. In outdoor settings, gps works well, I have also used encoder counts to estimate position (although it's probably not great, it contained covariance). You could also try using another odometry source from rtabmap's rgbd odometry. Other than that it comes down to having both the right sources being fused and accurate covariance values.

Asked by chased11 on 2023-04-29 10:26:44 UTC

Answers

You need to post your full EKF config and a sample of each sensor input, but the behaviour of the EKF is probably correct here: if you are just feeding wheel encoder velocities and IMU angular velocity, those measurements will be integrated, but so will their errors. If you want to constrain error, you need an absolute pose reference (input source).

However, the unbounded growth of the odom->base_link state estimate covariance should have zero bearing on the map->odom transform. Your jitter is going to be coming from another source. Please provide more detail in your question.

Asked by Tom Moore on 2023-06-05 03:03:45 UTC

Comments