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

Covariance Matrix for IMU data and wheel odometry for ROBOT_POSE_EKF

asked 2012-09-18 16:49:59 -0600

sai gravatar image

updated 2012-09-19 14:34:06 -0600

Kevin gravatar image

Ubuntu 12.04 and Fuerte.

I am planning to use Xsens IMU+GPS and wheel odometry of Pioneer 3 base for the ROBOT_POSE_EKF to estimate the pose of the robot.

I am wondering if any one can give the optimal covariance values for the IMU data and Wheel odom topic.


edit retag flag offensive close merge delete


How to change the value? Where can I find the file ?

sai gravatar image sai  ( 2012-09-18 18:24:51 -0600 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2012-09-19 02:24:16 -0600

cagatay gravatar image

updated 2012-09-19 02:41:43 -0600

Hello turtlebot uses 1e-3 covairance for wheel odometry x,y and Ch robotic's UM6 driver for ros uses 1e-6 covairance for yaw. If you don't give covairances for imu to robot_pose_ekf it will manually set covariance until imu sends covariance

// manually set covariance untile imu sends covariance
if (imu_covariance_(1,1) == 0.0){
  SymmetricMatrix measNoiseImu_Cov(3);  measNoiseImu_Cov = 0;
  measNoiseImu_Cov(1,1) = pow(0.00017,2);  // = 0.01 degrees / sec
  measNoiseImu_Cov(2,2) = pow(0.00017,2);  // = 0.01 degrees / sec
  measNoiseImu_Cov(3,3) = pow(0.00017,2);  // = 0.01 degrees / sec
  imu_covariance_ = measNoiseImu_Cov;

as you can see above. I think it will be easier for you starting with turtlebot's odom covariances increase them if you get poor odometry. Because picking covairances heavily depends on system configuration(encoders,encoders resolution,motors,wheels,slippage,speed controller,drive system type etc..)

For optimal values, I recommend you to perform an odometry calibration alogirthm such as UMBMark. Calibrate it as possible as it can be. Then set your covairances. Covairances show how much you depend on your odometry data. If covairances are high, this shows that you don't depend very much on your odometry data.

How to set covairances ? your wheel odometry data is being published by you generally from base_link frame to odom frame. Check here. Odometry message type and IMU message type have parts where you can set covairances. Check out here for odometry and Check out here for imu

edit flag offensive delete link more

Question Tools



Asked: 2012-09-18 16:49:59 -0600

Seen: 5,302 times

Last updated: Sep 19 '12