Appplying double differencing

Discussion in 'Global Navigation Satellite Systems' started by jim_gps, Mar 21, 2005.

1. jim_gpsGuest

Hi Everyone,

Even after reading "Sam Storm van Leeuwen's" GPS site many times, I'm
still a confused about how to apply double differencing in practice...
I was hoping that someone might be able to clarify a couple of details
for me as I *think* I'm missing the point somewhere?! Currently I'm
successfully doing single differencing between 2 receivers using Sam's
code, so I:

1/ synchronise the GPS signals at the reference and moving receiver by
extrapolating the pseudorange using the measured Doppler shift
2/ calculate a "range correction" from the measured ranges to the
reference receiver minus the actual ranges to the reference receiver
3/ take the "range corrections" from the reference receiver, add them
to the measured ranges from the moving receiver, and the calculate the
moving receivers position in the normal way

That all works fine - as you would expect in a low mulitpath case the
residuals of the moving receiver reduce from an average of say 2m to
about 50cm... so far so good?

What I'm confused about is applying double differencing! From reading
Sam's site, I think I should be:

1/ After doing step 1 and 2 from above, take the "range correction"
from the highest SV common to both receivers, and take that "range
correction" from all the other "range corrections".
2/ now calculate the moving receivers position using the new "range
corrections" but without using any range information from the high SV
used for the double differencing. (so you lose 1 SV from the solution
of the moving receiver)

The problem is I've tried that and it didn't help at all! I've checked
my code and it all *seems* to be okay - have I got it fundamentally
wrong somewhere? I realise that you only get the full potential of
double differencing when using resolving the carrier count etc etc...
but shouldn't it help even when just looking at pseudoranges as well?

Many Thanks

Jim,

PS: is there a technical GPS forum I should be posting to? Most the
discussion here seems to be related to operation of commercial Garmin
GPS boxes.

jim_gps, Mar 21, 2005

2. JohnGuest

Jim,

I've had similar questions about double differencing.

Pseudoranges give a fine solution directly from single difference
equations. In fact, if you solve single difference equations using
elimination, you generate double difference equations in the first
step. There seems to be no value at all in double differencing
pseudorange equations.

The real power of double differencing is with phase. Phase equations
introduce a new clock variable and N new phase variables. Even if you
know your location exactly, say from the pseudorange calculations, you
can't solve for the N+1 variables with only N equations.

The double difference "trick" is, instead of solving for the phase
variables j1, j2, ..., jn, you solve for the differences j2-j1, ... ,
jn-j1. You now have N-1 difference variables and you have the clock
variable. With N equations, you have a solution.

My own misconception was thinking double differencing consisted of
subtracting single difference equations. Instead, the essence of double
differencing is redefining the phase variables.

I know my explanation is quite different from the textbooks. I guess
I'm stumbling through it just like you. Sometimes the books just aren't

John, Mar 23, 2005

3. GuestGuest

Hello Jim, please can you explain a little about how are you doing
this, or maybe a link to read about? I am using simple extrapolation to
a common time based on speed of change but the results are not better
than without extrapolation.
I cannot find on Sam's pages how to do it.

Thanks,
Cosmin

Guest, Mar 23, 2005
4. Sam Storm van LeeuwenGuest

Hi,

If you operate receivers which 'measure' on the full GPS system second,
and which are located close to each other (max a few km), you can form
double differences of both pseudoranges (PR) and carrier phases (CP) by:
a. appointing a common sat hi (usually a high elevation sat)
b. DDPR = (PRrover[prn] - PRref[prn]) - (PRrover[hi] - PRref[hi])
c. DDCP = (CProver[prn] - CPref[prn]) - (CProver[hi] - CPref[hi])
Calculating pseudorange position with DDPR can be done but is not very
sensible since the (added) noise on DDPR is larger than e.g. the added
noise on SDPR (PRrover[prn] - PRRef[prn]). So the position scatter will be
larger than in the single difference case.
The fun is of course in DDCP. This observation allows sub-cm level relative
positioning once the integer ambiguities are known. If your receivers are
stationary, you can calculate the so-called 'float' ambiguities by entering
the SD position in the DD carrier phase equations. After some 10 or 20
minutes the averages of the float ambiguities may be close to an integer
value. Then enter the rounded (integer) ambiguities in the carrier phase
equations,and lo and behold, you now have (pseudo) range equations based
on carrier phases and with mm accuracy, the basis for mm level positioning.
This is an easy and very basic procedure. Not very practical, but it
introduces one in an intuitive way into mm level positioning.

Sam Storm van Leeuwen, Mar 24, 2005
5. Joined:
Mar 9, 2015
Messages:
4