In my last post, I gave a quick and dirty explanation of the principles of precise GPS positioning. In it, I mentioned the double differenced dual-frequency phases as the main observations behind RTK positioning. However, that wasn’t very informative for those out there who have little knowledge of such terminology. So hopefully, the next few blogs will elucidate my ramblings for those out there who may actually be interested :).

A couple of FYI’s before I begin.

1. I’ll be using the same notation as Wellenhof et al., and I recommend it for anyone interested in the principles of GPS…IMHO it’s the best book out there on the subject.

2. If you would like to test your own code, you’re more than welcome to use the test datasets which I’ve used.For the purposes of this study, I use observations from two Continuously Operating Reference Stations (CORS) in Ohio, which are located Southeast of Cleveland.The first site is OHLO, the second is ZOB1, and they are located ~1 km apart from each other, which is a typical baseline length for cm level positioning.
If you click on “Standard Files”, you will be directed to the following NGS site ( RINEX files can be downloaded for each observation site for a given date.
* Note, you will need the navigation files as well, which describe the position of the GPS satellites at different measurement epochs.
**If you can’t figure it out, send me a message and I’ll be glad to email the necessary files.

Okay, lets begin.

One of the most important factors in precise positioning applications is baseline length, i.e. the geometric distance between the two GPS receivers. With short baselines, certain simplifications/assumptions can be made due in notation, due to similarities in the ionospheric and tropospheric path that both signals had to pass through as they traveled towards earth. As the baseline length increases, these simplifications are no longer valid, but for our purposes (short baseline), they are sufficient.

The double difference observation for short baselines is given in the following notation.

\lambda\Phi ^{jk}_{AB}(t) = \rho ^{jk}_{AB}(t) + \lambda N ^{jk}_{AB} +noise

\lambda is the wavelength of the frequency L1 or L2 frequency.
\Phi ^{jk}_{AB} is the double-differenced phase measurement from two satellites (j,k) and two receivers (A,B).
\rho ^{jk}_{AB} is the double-differenced geometric distance between the satellites in space and the receivers on the ground.
N is the double-differenced integer ambiguity of the phase measurements. It must be an integer! (e.g. 1, 3, 21, etc.)

Note that for dual frequency receivers, we could form this operation on both frequencies, i.e. L1 and L2.Often, authors will refer to \rho as the geometry term. As we will see in later posts, we need to know the geometry term to a certain degree of accuracy in order to resolve the integer ambiguities.

Assuming we correctly read in the observations from the RINEX file, what do we do next? Well, we must first compute an approximate location for the roving receiver, because this location is embedded in the geometry term of the above equation. For starters, we could use the known position of the base station. Remember that we assume one of the receivers to be located at a known position (base station), because we will need to hold that position fixed in order to estimate the location of the other receiver(rover). With an approximate location of the rover estimated, and a sufficient amount of observations, we can solve for our unknowns via a least squares solution (LSS). Because the equation above is non-linear, we linearize it about the approximate receiver location, and solve for the unknowns, which are
\Delta X, \Delta Y, \Delta Z as well as \lambda N ^{jk}_{AB} for each n-1 satellite combination, where n is the number of satellites. The reason there is n-1 integer combinations is because we use a pivot satellite for each double-differenced phase observation, thus the j in N ^{jk}_{AB} would remain fixed to the pivot satellite, leaving n-1 integer combinations.

Assuming we have done everything correctly, we will have what is known as a float solution. Because least squares doesn’t know any better, it estimates the integer ambiguities to be real-valued numbers, which we know to be untrue. The accuracy of the float solution is shown below for 100 epochs of data.


Looking at the figure above, we can see the accuracy of the float solution is generally on the order of 0.5-2m, a significant improvement from absolute positioning. However, its not 2-5 cm accuracy we expect from survey grade GPS receivers! So how do we improve the float solution so that we can achieve higher accuracies(such as the plot below)?

Screen Shot 2013-01-28 at 1.13.03 AM

Stay tuned!