Estimating Position from Millisecond Samples of GPS Signals (the “FastFix” Algorithm)

A new approach to GPS positioning is described in which the post-processing of ultra-short sequences of captured GPS signal data can produce an estimate of receiver location. The algorithm, called ‘FastFix’, needs only 2–4 ms of stored L1-band data sampled at ∼16 MHz. The algorithm uses a least-squares optimization to estimate receiver position and GPS time from measurements of the relative codephase, and Doppler-shift of GNSS satellite signals. A practical application of this algorithm is demonstrated in a small, lightweight, low-power tracking tag that periodically wakes-up, records and stores 4 ms of GPS L1-band signal and returns to a low-power state—reducing power requirements by a factor of ∼10,000 compared to typical GPS devices. Stationary device testing shows a median error of 27.7 m with a small patch antenna. Results from deployment of this tag on adult Royal Albatross show excellent performance, demonstrating lightweight, solar-powered, long-term tracking of these remarkable birds. This work was performed on the GPS system; however, the algorithm is applicable to other GNSS systems.


Introduction
Tracking devices based on GNSS (Global Navigation Satellite System) are now commonplace, their many uses include wildlife tracking [1] and vehicle tracking [2]. Wildlife applications, in particular, are constrained by size and weight, and, until recently, GNSS devices have been limited to tracking animals such as moose [3] and marine species [4] capable of carrying a large receiver, limiting the range of species that can be tagged [5]. Improvements in semiconductor fabrication have steadily reduced power consumption [6], and improvement in battery technology [7] have reduced the weight of such tracking devices to the point that GNSS tracking devices can be deployed to track small mammals and medium-sized birds [8,9]. With each technical development allowing smaller and lower-power tracking devices, the range of species that can be tracked, and the duration of the deployment is increased.
The most widely used GNSS is the GPS (global Positioning System) network [10]. GNSS tracking devices operate by using codephase and navigation message data transmitted from the satellites to determine the time of transmission of a signal. This can be used to determine the distance (ranges) from the current position to each satellite as well as the precise local time (see for example Kaplan [10]). Navigation messages transmitted from the receiver contain sufficient information to determine orbital parameters (ephemerides) of the satellites and the time of propagation of the signals from the satellite, and hence the ranges. Using the measured ranges from four or more satellites, the position of the receiver is determined-commonly using a least-squares procedure [11]. The time to first fix typically exceeds 30 s, as this is the time required for all of the satellite ephemerides to be transmitted. As a result, traditional GPS receivers are required to operate from cold-start for more than 30 s-typically consuming tens of milliamps-in order to measure their position. GNSS position accuracy varies, and in the case of GPS, the distribution of positioning errors is not Gaussian [12] and depends sensitively on the antenna characteristics [10]; typically, the first fix from a single-frequency commercial GPS has a horizontal positioning error of ∼10 m [13] in open skies.

Alternative Algorithms
Advances in algorithms provide another technique to reduce power consumption, and several alternative approaches to the traditional positioning algorithm have been developed. Of these, the most widely used is Assisted GPS (A-GPS). This employs satellite ephemeris data, and estimates of position, time to eliminate the need to receive this data via the GNSS signal [14]. This has limitations in tracking applications as a separate telemetry channel is needed for the augmentation data. Time-to-first-fix from a cold start situation, signal sensitivity, and position-accuracy are all improved with respect to a stand-alone GPS receiver [15].
Another algorithm family estimate position using only millisecond samples of data, with the satellite ephemeris provided externally. This technique is referred to as time-free, or snapshot positioning and was first proposed by Peterson et al. in 1995 [16]. This was refined in 2009 [17] to show that positioning was possible using only codephase measurements. Van Dierendonck et al. [18] was proposed in 2015 that uses an initial approximation of receiver time and position, to reconstruct the transmit time relative to the received time such that pseudorange can be calculated, and position estimated. In 2012, Othieno and Gleason [19] introduced a positioning method that use a combination of Doppler and code-phase measurements to provide a position estimate unknown initial position. Jing et al. [20] in 2017 introduced an integer ambiguity searching method based on the relationship between the maximum pseudorange difference and the inter-satellite distance. The accuracy possible with these snapshot algorithms is typically ∼20 m [21].
This algorithm described in this paper uses Doppler information to provide an a priori position estimate, in a manner similar to Othieno [19], and combines a relative-codephase measure, in a manner analogous to the work of Jing et al. [20] who instead use an inter-satellite distance. In practice, the algorithm is able to determine position anywhere on earth from as little as 2 ms of GPS L1-band signal using measurements of Doppler shift and relative codephase recovered from the data. Section 2 describes the well-known process of acquisition, and shows that small errors in the knowledge of the local time at the receiver will affect the measurement of codephase; however, this effect is the same for each satellite signal, and introduces relative codephase which is not affected by these errors. Section 3 describes the FastFix algorithm for positioning, and Section 4 presents results for stationary device performance including typical accuracy. Finally, Section 5 presents a real-world application of this algorithm in tracking albatross.

Satellite Signal Acquisition
The GPS L1-band civilian signal is transmitted in a 2.5 MHz bandwidth radio channel centered at 1575.42 MHz. The satellite signals are modulated using Code Division Multiple Access (CDMA) [10]. A GPS receiver digitizes this channel, and signals from all visible satellites are contained within the received data. The individual satellite signals are recovered by correlating the received data against a pseudorandom sequence unique to each satellite called a C/A (Coarse Acquisition) code. In the case of GPS, the C/A code repeats every millisecond and contains 1023 binary numbers in a pseudorandom sequence. The motion of each satellite relative to the observer causes the signal from that satellite to be Doppler-shifted, and this Doppler-shift must be compensated for in the receiver. The process of signal acquisition recovers the signal, and its Doppler-shift from each visible satellite.
There are several well-established methods for signal acquisition; see, for example, Kaplan [10] or Borre et al. [22]. In this work, parallel codephase recovery [22] using Fourier transforms was used. For the ith satellite, the acquisition process results in three measurements: • X max /σ X . The maximum correlation divided by the standard-deviation of the correlation-a measure of the ratio of correlation amplitude to the noise. This is similar to the carrier-to-noise density ratio, or the correlation amplitude relative to the noise level in the data. A satellite is considered visible if its X max /σ X exceeds a threshold (for the data shown in Figure 1 and Table 1, a threshold of 7 is used). • δ i φ , the code-phase-a number between zero and 1 that indicates the phase of the C/A code. The starting time of the C/A code is given by t 0 + δ i φ τ, where t 0 is the time of the start of the data, and τ is the C/A code sequence repeat time (one millisecond in the case of GPS).
• ∆ f i m , the Doppler-shift of the signal from the satellite. Table 1 shows a typical set of acquisition results from the data, which are shown in Figure 1a. Some of the correlation plots from this data are shown in Figure 1b Figure 1). There are six satellite signals that exceed the threshold set for signal detection in this data.

System and Local Time Frames
The acquisition process uses data that starts at time t 0 , measured by the receiver clock that may be inaccurate. Times measured by the receiver are identified by lower case t. The GNSS system clock times are identified by upper-case time values and are typically accurate to better than 1 µs [10].
All GNSS satellites synchronously send their signals at intervals of τ. The start of each code epoch is synchronous across all satellites in the constellation. The system time that the ith satellite signal is sent, T i s , is given by T i s = T s + Mτ, where T s is an arbitrary start time for the GPS constellation of satellites, and M is the integer code epoch. We choose, quite arbitrarily, that T s = 0. Therefore, the time of transmission for the start of the code T i s becomes where the M i are integers that are now different for each satellite, and depend on the relative distance between receiver and each satellite. We assume that there is a fixed offset, t u , between the local receiver clock and the system time, i.e., A more sophisticated model of the receiver clock would have both an offset and a different rate, but as the data are sampled for only a few milliseconds, uncertainty in the local clock rate will not significantly affect this algorithm.

Signal Propagation Time
Let T i r be the system time that the start of the ith C/A code reaches the receiver. This is given by where t i ≡ t 0 + δ i φ τ is the measured time for the start of the sequence at the receiver, and t u is the receiver clock offset. The system time at the receiver for the start of the C/A code from satellite i is given in terms of t 0 and the code-phase as At system time T i r , the signal must have originated from the satellite at an earlier time T i s = T i r − ∆ i r c due to the propagation velocity c of the signal over the distance, ∆ i r , between receiver and satellite i. We know that T i s is a time when an epoch starts, so it is an integer multiple of τ, i.e., M i τ, so, in this case, we write The codephase δ i φ changes rapidly with time due to satellite motion, i.e, dδ i φ dt = ∆ i r cτ ∼ 67 cycles per second. In addition, uncertainty in the system time offset, of more than a fraction of a millisecond will make prediction of position from the codephase unfeasible. For example, an uncertainty in t u of 100 µs would lead to an uncertainty in δ i φ of 0.1, which would translate to a pseudorange error of ∼30 km.

Relative Fractional Codephase
The relative fractional codephase, δ ij φ is the difference (modulo τ) between the fractional codephases δ i φ and δ j φ from satellite i and satellite j. From Equation (4), where N ij = M i − M j is the integer part of the expression, and the relative codephase δ ij φ is the fractional part of the expression. For example, This relative fractional-codephase does not depend sensitively on accurate knowledge of the local time offset t u ; however, range errors due to incorrect time estimates will have an effect. Errors of 50 km or more will still lead to relatively small changes in δ ij φ . At typical satellite velocities of ∼3 km s −1 , an uncertainty of ten seconds in t u would lead to a typical δ ij φ (t, r 0 ) uncertainty of approximately 0.1. Contrast this with the codephase δ i φ , for which this level of uncertainty would be caused by a ∼100 µs uncertainty in t u .

The FastFix Positioning Algorithm
The FastFix algorithm uses both the Doppler-shift and the codephase measurements to solve the inverse problem of estimating the position, r 0 , and time-of-fix, t 0 from stored GPS L 1 -band data. The forward problem assumes that the position r, local time t 0 and local clock offset t u are known, and satellite ephemerides are available. This is sufficient to determine from Equation (5) the relative codephase, δ ij φ , and the Doppler-shift of the signal from the ith satellite, where f 0 ∼ 1575.42 MHz, c is the speed of light, and ∆ i r is the relative distance between the ith satellite and the receiver position r. If ∆ i r is decreasing, then satellite is moving towards the receiver, and the Doppler-shift is positive. This method is rather like the method of exact fractions from interferometry (see, for example, Baird [23]), the measurements comprise only the fractional part of the codephase for the signal from each satellite and its Doppler shift. At any given moment, there are only a small number of positions near the earth's surface that will have any specific set of relative-codephases.

Least-Squares Estimators
The algorithm uses two least-squares estimators: one based on Doppler measurements, the other based on the relative fractional codephase. The least-squares estimator for Doppler shift, L ν , is where ∆ f i m is the measured Doppler-shift for the ith satellite, and ∆ f i (t,ṙ 0 ) is the predicted Doppler-shift for the ith satellite from Equation (6). The least-squares measure for relative fractional codephase, L δφ , is where δ ij φm is the measured relative fractional codephase between the ith and jth satellite, and δ ij φ (t, r 0 ) is the predicted relative fractional codephase given by Equation (5).

Algorithm Outline
The algorithm begins with an estimate of the local time t 0 , and, by acquiring the codephase, Doppler-shift and X max /σ X for each visible satellite from the previously stored GPS L 1 -data. These measurements are then used for three successive least-squares estimations of position. Starting with a global minimization based on Doppler-shift measurement, the successive stages each further refine the position from the preceding stage. A flow-chart for the algorithm is shown in Figure 2. Each of the minimization stages requires knowledge to the satellite orbital elements, and it is assumed that these are downloaded separately from a suitable catalog.
The sensitivity of the ∆ f i to the solution is quite low, so, from an initial measurement of t 0 , an initial first pass is made searching for a position that minimizes L ν from Equation (7). This results in a rough position estimate r 1 .
This Doppler-estimate is refined by searching in the region near r 1 for a position r 2 that optimizes the relative fractional codephase estimator, L δφ at time t 0 .
The final step is a full four-dimensional space-time optimisation using a Nelder-Meade [24] optimisation algorithm. This yields an estimate for the receiver position, r 3 , as well as the local time t 1 .
Start Input: data, t 0

Results
The FastFix algorithm was initially tested using stationary receivers in a known locations (Dunedin, New Zealand). In this test, 118 four-millisecond samples of GPS L1-band data were digitized and stored. From these, the FastFix algorithm (described in the previous section) was applied. Figure 3 shows contours of the Doppler least-squares estimator L ν plotted over the globe centered on the receiver location. This shows a global and local minimum at the receiver location. This estimate is not accurate, however it is sufficient to locate the receiver within a small enough region for the next step which is the minimisation of the relative codephase estimator L δφ . Figure 4 shows a histogram of the Doppler-only location error, showing a median error of 175 km and a 95th percentile error of 537 km.   Figure 5 shows the relative codephase estimator L δφ plotted for six visible satellites over a region ten degrees in width and height centred at the actual receiver location. This figure shows that the search for the global minimum is a complex nonlinear minimisation problem. However, the Doppler search is sufficiently accurate to place the receiver within the central local minimum region and the relative codephase least-squares estimator can be easily minimised once this is known.  Figure 6 shows a histogram of the fix error for a known location. This shows that the relative codephase least-squares minimisation produces accurate fixes most of the time. The median error is 27.7 m, and all results are based on 4 ms of sampled data from a GPS front end (Maxim MAX2769B Universal GPS Receiver).

Measured Accuracy
There are outliers that are caused by convergence on to a local, but not global minimum. Work is continuing on improving the performance of this; however, the results are already good enough to produce a device based on this technique. Section 4.4 outlines some techniques that may improve the robustness and accuracy of the results. This positioning error is similar to other snapshot positioning algorithms [21].

Discussion and Potential Improvements
One avenue for improving robustness is establishing better criteria for rejecting poor position estimates. Cook's distance is a commonly used estimate of the influence of a data point when doing least-squares regression. Cook's distance measures the effect of deleting a given observation. Another technique is to use Huber's M-estimation [25] to handle outliers due to bad measurements.

Time-Separated Measurements
Another possible improvement would be to combine two sets of relative codephase and Doppler measurements taken from two samples of L1-band data a short time, Γ, apart. Assuming Γ is large enough for the satellites to have moved by ∼1 km, yet small enough for the receiver to have moved by less than the desired spatial resolution, then the following relative codephase estimator should be more robust, Taking multiple samples would, however, increase the power required.

Application to Wildlife Tracking
There are many possible applications for devices that use this algorithm. As only very short snapshots of GPS data are required, a device only needs to operate for 4 ms to acquire the data necessary for a fix. This dramatically reduces the power required (from at least 30 s of operation for a traditional GPS fix), by a factor of approximately 10,000.
A disadvantage of tracking with this technique is that any tracking device has to be recovered in order for the position to be estimated by post-processing the stored data. This technique is suitable for tracking species that return to a known location so that the data can be recovered. Here, we describe how this was done on nesting albatross.

Tag Electronics
Tags were developed that include a standard GPS RF front-end (Maxim MAX2769B Universal GPS Receiver) connected to a high-performance low-power 32-bit STM32F103CB [26] microprocessor. The microprocessor is programmed to wake at intervals, read data from the GPS RF front-end and store this data in a file on an micro Secure Digital (microSD) Memory Card. The un-packaged electronics from one of these FastFix tags are shown in Figure 7. A packaged solar-powered version of the tag, designed to attach to seabird feathers was developed [9] for deployment on seabirds. This tracking tag uses a small Taoglas AP.12F.07.0045 active patch antenna [27]. Each fix stores 4 ms of 1-bit baseband data sampled at 16.368 MHz, which requires 64 kb of data. A 2 GB SD-card can store approximately 244,000 fixes. A solar-powered tag could operate continuously storing data for a position estimate every five minutes for more than two years, limited only by storage limits.

Wildlife Tracking Results
Twelve solar-powered FastFix tags were attached to nesting adult Royal Albatross [28] (shown packaged and attached in Figure 8). While nesting, the adults carry out feeding flights of up to two weeks of duration. Of the 12 tags attached, eight were recovered undamaged, and from these eight tags, 26,042 positions were calculated. The position tracks recovered from the tags are shown in Figure 9.

Conclusions
The algorithm described here allows ultra-low-power, reasonably accurate global position determination using very short sequences of GPS data. The computational effort required to measure position is a function of both the initial uncertainty in position and the local receiver clock offset. The results in stationary testing show a median error of 27.7 m which is worse than the median error of traditional GPS single-frequency receivers, but similar to existing snapshot algorithms [21]. I speculate that this is due to the lack of a code-tracking filter that can refine the pseudorange estimates during the relatively long period that a traditional GPS device spends receiving navigation information. Despite this limitation, there are several interesting avenues to explore for improving the robustness and accuracy which were discussed in Section 4.4. The performance of the algorithm in practical moderate-precision applications such as wildlife tracking is sufficient as demonstrated in Section 5, and the power consumption was extremely low, which enabling long-term solar-powered, or primary-cell tracking of wildlife.
Another avenue for further work would be to use Bayesian inference techniques to estimate a posterior distribution of receiver positions. This would also enable uncertainty quantification and, consequently, a systematic exploration of the lower limit on the amount of stored data necessary to recover position to a given accuracy. An additional advantage of a Bayesian approach would be avoiding the decision to reject or accept a satellite as 'visible' from its correlation strength X max /σ X .