Kinematic


 

Kinematic is loosely based on work by Xiao-Wen Chang at McGill University.

Kinematic makes extensive use of Householder transforms. These transforms seem a bit esoteric at first, but they are workhorses for finding numerically stable least squares solutions.

In Kinematic, Householder transforms

  • replace the conventional double differencing step,
  • are used in succession to calculate a least squares solution (Golub's method),
  • are used to update the least squares solution from one epoch to the next, and
  • eliminate "lost" satellites so only active satellites have to be considered at any one time.

Kinematic currently calculates a "float" solution which typically has an accuracy of 20-50 cm. An alternative approach is to figure out the precise number of radio waves between the base station and the rover. If you know the exact number of waves, plus the fractional phase, you get what is called a "fixed" solution. Fixed solutions are accurate to the nearest 1-2 cm over distances of 10 km or more.

One technique for "fixing" a solution is called "Lambda". Chang has a very nice paper describing a modified Lambda algorithm which will be included in a future Kinematic.

Kalman filters are another way of improving accuracy of gps positions. Kalman filters add a simple inertial model to the equations. If nothing else, they keep the position stable by reducing the jitter caused by noise. Again, Chang has done a good job clarifying the issues around Kalman filters.

Here are Chang's papers which lay out the path for Kinematic:

Here is a tutorial on Householder transforms

 

For those who dive into the first paper, there are a number of ways in which Kinematic differs from Chang's approach.

  • Kinematic would best be described as "Single Differencing" rather than double differencing.
  • Kinematic forms N single difference code equations and N single difference phase equations. These equations take the form:
        (code)    Tcode + e*x  =  b
        (phase)  Tphase + e*x + z = p
    where  x is the desired (x,y,z) position, * is the dot product operator and z is an integral multiple of the L1 Wavelength.
  • At this point, there are N phase equations with N+1 unknowns.
  • To make the problem solvable, we assign an arbitrary value to one of the z values.
    - pick an arbitrary z variable and set its value to zero.
  • We now have N phase equations with N unknowns, so it can  be solved.
  • Apply your favorite technique for solving a system of equations. In our case, it is Golub's method for finding a least squares solution.

Chang's approach eliminates Tcode and Tphase using Householder transforms. Then he applies the Double Difference Integer Ambiguity (DDIA) vector, redefining the variables from
   z1, z2, ..., zn   to  (z2-z1, z3-z1, ..., zn-z1). He then uses a combination of rotations and Householder transforms to solve the equations.

Our approach applies the DDIA vector first by assigning zero to one of the z variables. We do not explicitly form double difference equations, but the first two steps of Golub's method form them implicitly.

Traditional double differencing subtracts the reference equations from the other equations, eliminating Tphase and Tcode in the process. This is equivalent to applying two steps of Gaussian elimination. Gaussian elimination is not a valid means for solving least squares problems, so traditional double differencing is basically a mistake. Much of the complexity of traditional double differencing involves removing the correlations introduced by this initial mistake.

For problems or questions regarding this Web site contact [info@precision-gps.org].
Last updated: 09/16/06.