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?
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.
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.
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.