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
How to change the value? Where can I find the file ?