I have an application with two separated GPS receivers giving live positions and I'm deriving a heading/displacement from the vector between them. Each set of position measurements is noisy and has dropouts but I do have a quality estimate. So far it's classic Kalman filter.

The relation between the two antennas isn't fixed, both are moving independently and generally one is moving at higher rate than the other.

But obviously some of the error is correlated between the two receivers, so do I filter each antennae location separately or the filter the displacement? Or is there a cleverer alternative?

edit: As an example suppose you have a GPS on a boat and on a towed sonar array - and you are trying to track the relative position of the sonar receiver.

The general uncertainties on each antennae position are similar. But some errors will correlate between them - eg. if an atmospheric effect moves both readings 10m North this has zero effect on the difference but would effect any filter/average of each position.

Arguing against simply averaging/filtering on the displacement vector is that the motion of each receiver is different, the boat is relatively steady - the sonar bounces around in the waves. So the statistics of each if you have any sort of averaging filter are different.

  • $\begingroup$ I think the title should be filtering difference of independent measurements. The error, (calculated difference VS true difference) is then correlated with both signals. Regarding in what order to do them first, assuming you are using the same filter for both signals, it does not matter if you filter both signals and then take their difference, or if you take their difference and then filter, due to the convolution operators' distributive property. $\endgroup$
    – Spacey
    Jul 25, 2012 at 4:56
  • $\begingroup$ @Mohammad I don't think he necessarily means a convolution filter. $\endgroup$ Jul 25, 2012 at 11:39
  • $\begingroup$ Why is it obvious the error is correlated? Do you mean the measurements themselves are correlated or that the statistics are correlated? I don't fully understand your setup. What do you mean you're deriving a heading/displacement from the vector between them? What does this give you? Some context would be really helpful! (even if it's a toy example) $\endgroup$ Jul 25, 2012 at 11:45
  • $\begingroup$ @HenryGomersall they are corellated because some noise signals are atmospheric and so will move both receivers the same way. If such an error moved both receivers exactly 10m North then to a filter on each it would appear to be a very noisy signal but have zero input to a filter on the difference $\endgroup$ Jul 25, 2012 at 12:42
  • $\begingroup$ @MartinBeckett What filter did you have in mind? Gathering from what you said, you were considering a moving average filter? Also, as Henry said, some additional context is very helpful. :-) $\endgroup$
    – Spacey
    Jul 25, 2012 at 15:22

1 Answer 1


I have a couple thoughts on your problem:

  1. Regarding the handling of atmospherically-induced biases to the GPS receivers' reported positions, I don't think you need to do anything at all. If there is a truly common bias inherent in both positions, then it will simply cancel when you take the difference of the two positions. Thus, I would just treat each platform independently and subtract the time-aligned positions to yield your displacement vector estimate.

    This is essentially the technique of differential GPS (DGPS), which was used successfully to combat the effects of the US government's policy of selective availability (SA) on the publically-available GPS carrier. SA was implemented by pseudorandomly dithering the timebase of the spacecraft; this would result in small position errors reported by GPS receivers.

    This type of implementation meant that the SA error was highly correlated with the receiver position, such that two receivers in close proximity would experience approximately the same SA error. In the typical DGPS case, if one receiver's position is known precisely, one can solve for the SA error and resolve the second receiver's absolute position accurately, cancelling out the effects of SA. In 2000, the US government ended the use of selective availability, so this isn't much of an issue any more.

    Your case is similar but slightly different, in that you don't know the absolute position of either receiver, but that doesn't seem to be what you care most about. Instead, you only care about the differential displacement between the two. Therefore, you can apply a similar technique; if there is a constant position bias inherent in both, then calculating the difference of the two positions will cancel it out, just as DGPS systems did for SA error.

  2. It's not likely that you can improve the performance of the GPS receivers' reported positions by filtering them further. Dynamics tracking systems are a key part of any GPS receiver, and a lot of work has gone into their development. Especially if the receivers that you are using are of a recent vintage, I would hazard that any additional filtering that you would apply would be superfluous.

    That's not to say that you would never want to process the reported positions further. There are some exceptions to my above statement:

    • If you have data from other instruments to fuse with the GPS readings, that can yield a gain. Sensors used for dead reckoning (e.g. gyroscopes or accelerometers) can yield measurements that can help to improve tracking of platform dynamics in periods where the GPS receiver outputs are unreliable or inaccurate. However, in time periods where the receiver measurements are assumed to be accurate, an optimal tracker would rely proportionally more upon the GPS measurements in lieu of the higher-variance dead reckoning sensors.

    • If you have some specific knowledge of your platform's dynamics that you know the GPS receiver isn't taking into account, then you may be able to obtain some gains. If you can specifically configure your receiver for maritime operation, you may be able to obtain better performance, as its tracker can make certain assumptions about your platform's position (e.g. zero altitude relative to sea level, no vertical velocity or acceleration). Failing that, it's possible that you could take the receivers' position outputs and apply some filtering to improve things, but your results will be very specific to the equipment that you use and whatever processing is applied by their internal trackers.

  • $\begingroup$ I have read your answer and you seem to have pretty good knowledge about GPS. I have this question that I would appreciate it if you can help me with. Thanks gis.stackexchange.com/questions/197670/… $\endgroup$
    – user22407
    Jun 9, 2016 at 1:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.