ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
The process_noise_covariance
matrix parameter is 15x15, which means it is applied to the covariance for the entire state. In other words, the values on the diagonals are the variances for the state vector, which include pose, then velocities, then linear acceleration.
In the case of your robot, I'm assuming it would be best described by the Ackermann kinematic model. The r_l
EKF model, when two_d_mode
is enabled, simplifies to the unicycle model. So at some time step, we make a prediction using the r_l
model. This will produce some error between where the robot thinks it is vs. where it really is. This error will be considerably larger for you, since the motion model doesn't accurately describe your robot. Since we apply the process_noise_covariance
at the end of the prediction step, you can use it to account for the fact that the models don't match.
The only problem for you is that the error is going to be a function of your steering angle. When the robot is driving straight, the unicycle and Ackermann models will both produce the same prediction. When the robot is turning, the models will clearly differ during prediction. You could compute the upper bound on this error and use it to dictate the process node covariance values for the affected variables.
If you can, I'd fuse the pose data from your odometry, rather than the velocity.