# NavSatFix covariance

Hello,

I'm trying to make sense of covariance data I have in many files recorded using the GlobalSat BU353-S4 SiRF Star IV USB GPS Receiver mounted on a robot.

All of the covariance type values are 1, so I'm assuming that the covariance values were calculated from DOP values read from the receiver. I have covariance values in the covariance 0, 4, and 8 columns. Am I correct in assuming that these represent the +/- in the lat, long, and altitude values, respectively?

Are these values in metres or m^2?

If this is the case, where can I find/reference the algorithm used to get the covariance values?

If this is not the case, how are the covariance values generated? Is there a way to obtain more accurate lat/long using these covariance values, or will they only provide me with the error?

edit retag close merge delete

Sort by » oldest newest most voted

Check out the sensor_msgs/NavSatFix documentation here.

To cite:

# Position covariance [m^2] defined relative to a tangential plane
# through the reported position. The components are East, North, and
# Up (ENU), in row-major order.


and

# If the covariance of the fix is known, fill it in completely. If the
# GPS receiver provides the variance of each measurement, put them
# along the diagonal. If only Dilution of Precision is available,
# estimate an approximate covariance from that.


About where they come from: Which driver are you using? The nmea_navsat driver approximates the covariances from HDOP values (see the respective lines here)

You cannot directly get better position estimates using the covariances, but you know about the error that exists. And the covariances can be used in sensorfusion to get a better overall estimate.

more