Appplying double differencing

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

  1. jim_gps

    jim_gps Guest

    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


    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
    1. Advertisements

  2. jim_gps

    John Guest


    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
    1. Advertisements

  3. jim_gps

    Guest Guest

    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.

    Guest, Mar 23, 2005
  4. wrote in

    An additional remark.

    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. jim_gps

    Jhabindra Khanal

    Mar 9, 2015
    Likes Received:
    Hello, Jim,
    could You send me the single difference matlab code ??
    Jhabindra Khanal, Mar 31, 2015
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.