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

How to use the covariance matrix of the robot_localization package

asked 2020-11-24 02:52:33 -0500

someDutchguy gravatar image

I am trying to fuse IMU and GPS odometry using the ekf_robot_localization node. I would like the filtered odometry to be more dependent on the IMU and less on the GPS as the noise of the GPS is quite visible in the filtered output. I figured that adapting the covariance matrix will be able to give me this result by increasing the variation of the GPS measurements. However, i cannon find any information on what each variable in the covariance matrix relates to. Could someone explain the function of each variable in the covariance matrix and how to let the filtered output be more dependent of a specific sensor?

edit retag flag offensive close merge delete


@someDutchguy any follow up on this?

JackB gravatar image JackB  ( 2020-11-28 10:24:40 -0500 )edit

1 Answer

Sort by » oldest newest most voted

answered 2020-11-24 10:24:40 -0500

JackB gravatar image

For the simple case most often considered by general users the covariance matrix is diagonal matrix. Each element on the diagonal can be considered as the variance of the corresponding state in the state vector.

The state is a length 15 vector with members given as (X,Y,Z,roll,pitch,yaw,X˙,Y˙,Z˙,roll˙,pitch˙,yaw˙,X¨,Y¨,Z¨). Where single dot is the first time derivative and two dot is the second time derivative (sorry about the messed up format :/).

With that understood, the element (1,1) of the covariance matrix is the variance of X, element (2,2) is the variance of Y, element (3,3) is the variance of Y and so on down the line.

To understand the covariance matrix in general check out the wikipedia page. And note that for the simple case that most users encounter (myself included) we do not consider cross correlation between states. That is why we the covariance matrix is a diagonal matrix.

So in order to make your GPS measurement have less of an impact on the estimate, you should figure out how to increase its (1,1) and (2,2) covariance matrix values because it only should measure (x,y) location and increasing the variance tells the filter to "trust" the measurement less.

Hope this helps! Cheers

edit flag offensive delete link more

Question Tools

1 follower


Asked: 2020-11-24 02:52:33 -0500

Seen: 1,020 times

Last updated: Nov 24 '20