A computer-implemented method for determining a navigational heading in a reception environment that includes radio reflections, reception noise, antenna phase center motion, temperature-sensitive drifts and detected signal phase corruption, the method comprising the steps of:
- inputting phase measurement data from a set of GPS correlators connected to a trio of GPS antennas mounted to a vehicle and separated from one another by more than one GPS carrier frequency wavelength and having a phase output measurement subject to whole-cycle carrier phase ambiguity;
- calculating in a computer connected to said GPS correlators a maximum likelihood estimation (MLE) optimization procedure expressible in computer program pseudocode as:
- ______________________________________ -x.sub.0 = 0 U.sub.0 = 0 W.sub.best = W.sub.max for n.sub.1 = from.sub.1 . . . to.sub.1 do begin y.sub.1 = (.theta..sub.1 + n.sub.1) - H.sub.1 -x.sub.0 U.sub.1 = U.sub.0 + y.sub.1.sup.2 /v.sub.1 if (U.sub.1 <
- W.sub.best) then .sup. begin .sup. -x.sub.1 = -x.sub.0 + K.sub.1 y.sub.1 .sup. for n.sub.2 = from.sub.2 . . . to.sub.2 do begin y.sub.2 = (.theta..sub.2 + n.sub.2) - H.sub.2 - x.sub.1 U.sub.2 = U.sub.1 + y.sub.2.sup.2 /v.sub.2 if (U.sub.2 <
- W.sub.best) then begin -x.sub.2 = -x.sub.1 + K.sub.2 y.sub.2 . . . for n.sub.m = from.sub.m . . . to.sub.m do begin y.sub.m = (.theta..sub.m + n.sub.m) - H.sub.m -x.sub.m-1 U.sub.m = U.sub.m-1 + y.sub.m.sup.2 /v.sub.m if (U.sub.m <
- W.sub.best) then begin -x.sub.best = -x.sub.m-1 + K.sub.m y.sub.m -n.sub.best = (n.sub.1, n.sub.2, . . . , n.sub.m) W.sub.best = U.sub.m end end end end .sup. end end ______________________________________
- where .theta..sub.i are first-difference carrier phase measurements derived from said phase coherent GPS correlators, U.sub.i is a weighted-fit error that appears at a stage "i" of a tree, W.sub.best is a best weighted-fit error, from.sub.1...to.sub.1, from.sub.2...to.sub.2 through from.sub.m...to.sub.m are the outer limits of whole cycle carrier ambiguities, H.sub.i =[LOS.sub.i .vertline.1] is an observation matrix containing a line-of-sight unit vector that points into a direction of a GPS signal arrival, and where v.sub.i and K.sub.i are pre-computed, wherein a final integer combination is selected on the basis of a best fit with the measured carrier phase, as indicated by a weighted-fit error, and X-.sub.best, n.sub.best, and W.sub.best, represent a desired optimum antenna position, an integer combination and an associated weighted-fit error;
- determining a range of integers that are possible for a first baseline drawn between two of said GPS antennas, given only the known constraints on vehicle roll and pitch, wherein only a small range of integers is possible if said vehicle cannot roll or pitch significantly relative to any GPS satellites that are substantially vertically overhead;
- processing all phase measurements from a shortest baseline between said GPS antennas to determine a first-antenna position, searching a range of integers determined in the previous step using a four-state filter that solves in geodetic coordinates for a single antenna position and a single cable bias;
- verifying that antenna vertical coordinates are within a limit set by a maximum vehicle roll and pitch for integer combinations that survive the previous step;
- verifying that the baselength computed from said antenna coordinates matches a known baselength to within a noise tolerance;
- using said known baselength as a reference measurement and normalizing an antenna position vector to unit length to serve as Kalman observation matrix H, and assigning a measurement variance R to cover a non-linearity that results from H being slightly perturbed by noise in the phase measurements from said GPS correlators;
- if said integer combination and antenna coordinate survive to this step, calculating an arc of coordinates that are possible for a second antenna, assuming that said first antenna coordinate is true, and determining a range of integers that are possible for said second baseline, while adding a margin to allow for a phase measurement noise;
- processing all phase measurements of said second baseline to determine a second antenna position;
- verifying that a surviving one of said antenna vertical coordinates is within a limit set by a maximum vehicle roll and pitch;
- verifying that a baselength computed from a second antenna coordinates matches a known baselength to within a noise tolerance;
- verifying that an included angle relative to a first antenna agrees with a known angle q to within a noise tolerance;
- using a known baselength of said second baseline as a very accurate measurement, a measurement variance R is assigned to cover a non-linearity, accumulating U with this measurement and abandoning a search at any step where U exceeds W.sub.best ;
- computing a Y-axis of a reference antenna coordinate system by normalizing a second antenna position vector, which yields a vector of unit length, in geodetic coordinates, that points along the roll axis of an antenna coordinate system, and determines two degrees of freedom of this coordinate frame, wherein the other antenna position determines a plane containing both antenna baselines and a Z-axis of said antenna coordinate system is defined to be normal to this plane, with a polarity chosen in such a way that the Z-axis always points somewhere toward the sky;
- determining whether any GPS satellite line-of-sight vectors lie below said X-Y plane, wherein valid phase measurements are not possible for signal direction of arrival that is below the antenna ground plane and where a cutoff angle of -5.degree. is used to allow for noise in a frame orientation, and to allow a margin for low-elevation gain;
- mechanizing a five-state filter for small roll, pitch and yaw angles that rotate this frame into an antenna orientation that yields a closest agreement with measured phase, wherein closest agreement is equivalent to minimum weighted-fit error W using eight phase measurements;
- comparing W from with a best W, if the new W is better, then updating W.sub.best and saving this set of integers and associated attitude as a MLE optimum;
- continuing to search until all integer combinations have been exhausted;
- and
- outputting a value representing the relative attitude of said baselines drawn among said GPS antennas.