**Working Papers explore the technical and scientific themes that underpin GNSS programs and applications. This regular column is coordinated by Prof. Dr.-Ing. Günter Hein, head of Europe’s Galileo Operations and Evolution.**

The carrier phase observable is generally considered to be the most precise GNSS measurement, yielding millimeter-level positioning accuracy outdoors. However, measuring this observable indoors or in a forest has long been thought to be impossible or, at best, very difficult.

A new carrier-tracking algorithm used in the research on which this column is based changes this situation and enables us to measure the received carrier phase even in highly degraded environments. The algorithm adapts a well-known positioning concept (single/double difference) to the level of GNSS signal processing.

Single- and double-difference (code and carrier) correlators eliminate common mode errors and thereby reduce the signal dynamics. Applying much smaller tracking loop bandwidths or longer integration times can then reduce noise and eliminate multipath contributions during signal tracking.

For static applications, a coherent integration time of 30 seconds allows single-channel carrier tracking without cycle-slips well below zero decibel/hertz (!), provided that code and Doppler lock can be achieved by, for example, vector tracking.

This column will show that the estimated carrier phase apparently relates to the received electromagnetic wave. In forest and indoor test trials that we conducted, the carrier-phase tracking stability is extremely high and the number of cycle slips is very much smaller compared to standard phase-locked loop (PLL) tracking. Furthermore, the numerical value of the slips is small, perhaps only one cycle.

On the other hand, a received phase tracked indoors is influenced by all the possible complex propagation effects that may occur there. This complicates use of the received phase in positioning, and classical real time kinematic (RTK) positioning algorithms cannot be applied in a straightforward manner. However, a processing software that we used in our trials yields indoor positioning with about one-meter accuracy using only carrier phase data.

**Difference Processing Methodology**

We performed difference correlator processing using two GNSS software receivers, one acting as a rover and the other as reference station. The data evaluation currently occurs in postprocessing but could in principle also be done in real-time.

The reference station retrieves navigation data bits of the tracked satellite signals and stores them into a file. Furthermore, the reference station generates a RINEX observation file. The rover collects intermediate frequency (IF) samples and stores them onto a hard disc.

All data from the reference station and the rover are input to the post-processing, which produces a new (improved) RINEX observation file for the rover. A data processing software then analyzes the reference and rover RINEX files to estimate the rover position.

Loosely speaking, the prompt correlator of a GNSS tracking channel is the exponential of the estimated carrier phase. Thus, a (receiver) single-difference correlator is obtained by multiplying the rover prompt correlator with the exponential of the corresponding reference station carrier phase and the broadcast navigation data bit.

This principle extends to double (receiver and satellite) differences and is described in greater detail later in this article. The signal dynamics in a double-difference correlator can be very low. For example, for a static user and baseline length of 50 meters, the remaining acceleration is around 50 micrometers/second2. Thus, we can form coherent batches of several hundreds of seconds and use those batches to estimate the double-difference carrier phase. (In our test we used batches of a maximum of 90 seconds.)

Ideally, the double-difference correlators within one batch represent a tone signal, and the frequency is the (double-difference) Doppler frequency. The phase of the tone signal relates to the user position. An adaptive filter detects the dominant frequency contribution of the line-of-sight signal and applies a linear filter. Ideally, only the line-of-sight signal passes through and multipath signals (having a slightly different Doppler) and noise are filtered out.

The frequency selectivity is inversely proportional to the batch length. In our approach the separation of those components takes place entirely in the frequency domain, whereas a conventional PLL smoothes carrier phase estimates in the time domain. Finally, an estimator derives the Doppler frequency and the carrier phase at a given reference epoch from the filtered signal and writes them into a RINEX file. This process includes unwrapping and undoing the differencing process with certain assumptions on the receiver clock.

A typical standard PLL works with a tracking loop bandwidth of 5–15 hertz to cope with user oscillator variations, even if the receiver is operated in a static mode. In contrast, a batch length of 90 seconds corresponds to an equivalent loop bandwidth of 5.6 millihertz. Provided that the tracking channel can maintain code and Doppler lock (e.g., via aiding from other channels for vector tracking), then we will show that a carrier tracking sensitivity of well below zero decibel-hertz is possible.

In forests, the canopy attenuates the GNSS signals and causes diffuse scattering. Tree trunks cause the signals to creep around them, causing an extra delay. Whereas standard receivers generally cannot track the signal without cycle slips inside forests, difference correlator tracking is stable and potentially allows use of the carrier phase for precise positioning even for satellites tracked at low elevation angles.

Difference correlators also partly allow for indoor carrier phase positioning. Phase delays caused by the penetration of building materials determine the accuracy limit. This article proposes a method to identify time windows with approximately constant delays. L1 C/A and L2CM indoor data show periods of, for example, 16 minutes, where propagation delays remain within a few centimeters variation.

Using this method, we can compute an indoor position using carrier phases only (no code pseudoranges) with an accuracy of one meter.

The difference correlator concept may also find applications for attitude systems with multiple antennas or for possible use on board spacecraft, which receive GNSS signals at very low power levels.

**Difference Correlator Concept**

Single- and double-difference observations (code and carrier) are well-known concepts in precise positioning that are used to eliminate common-mode errors. Difference correlators extend these concepts to the level of correlator values. By doing this, the same common-mode errors cancel out, thereby drastically reducing the signal dynamics.

Applying longer filter times reduces the noise and eliminates multipath contributions. A simpler version of difference correlators was introduced in Chapter 10 of T. Pany’s book, *Navigation Signal Processing for GNSS Software Receivers* (see the Additional Resources section at the end of this article), and will be summarized here.

**Forming Differences.** At the correlator level forming differences is a little tricky, because various (equivalent) ways to define the carrier phase inside the receiver are available and because the timing relationship of the data is important. The following discussion describes the methods of single-difference forming and double-difference forming as well as how undifferenced observations are then re-derived from these formed differences.

**Single-Difference Observations.** Generally the classical receiver single-difference carrier phase observation is defined through an equation such as the following:

Δ*φ ^{k}*(

*t*) =

^{k}*φ*(

^{k,rov}*t*) —

^{k}*φ*(

^{k,refk}*t*)

**(1)**

where,

φ^{k,rov} is the rover carrier phase to satellite *k* [radians]

φ^{k,ref} is the reference station carrier phase to satellite *k* [radians], and

Δ*φ ^{k}* is the single-difference carrier phase to satellite

*k*[radians].

The carrier phases are read from a RINEX file or a similar source (e.g., RTCM). The epoch *t ^{k}* generally refers to the receiver timescale. Note, the timescales do not match exactly, but those timing errors between receiver clocks can be tolerated if satellite position calculation properly accounts for these differences.

**Single-difference Correlator.** Forming correlator differences requires a slightly different approach. First, the tracking channel outputs a carrier phase reading based on the internal numerically controlled oscillator (NCO), which is not necessarily under the control of a PLL. Typically, we use a frequency-locked loop (FLL) or vector tracking methodology for this purpose.

In general, the internal tracking is not locked to the received carrier phase (due to poor signal conditions), and the prompt correlator contains the difference between the received and internal carrier phase. Estimating the received rover phase follows expression such as:

exp{*iφ ^{k,rov}*(

*t*)} =|

*a*(

*t*)|exp{

*iφ*(

^{k,NCO}*t*)}

*P*(

^{k,rov}*t*)

**(2)**

where,

*a*(*t*) is the inverse signal amplitude (not relevant here),

*φ ^{k,NCO}* is the rover carrier phase to satellite

*k*[radians] based on NCO reading while using internal (e.g., FLL) tracking, and

*P*is the rover prompt correlator (complex valued) capturing the difference between the internal tracking and the true received signal.

^{k,rov}Therefore, a receiver single-difference correlator is written as

Δ*P ^{k}*(

*t*) = exp{

^{k}*iφ*(

^{k,NCO}*t*)}

^{k}*P*(

^{k,rov}*t*)exp{-

^{k}*iφ*(

^{k,ref}*t*)}

^{k}*d*(

*t*)

^{k}_{sent}**(3)**

where,

*d* is the broadcast navigation data bit (if any) and

Δ*P* is the single-difference correlator.

To wipe off data bits we retrieve the broadcast data bit from the reference station corresponding to the sent time for the correlator value *P ^{k,rov}*. We assume that the internal receiver time

*t*is steered towards the true GPS time within plus or minus one millisecond and that the same applies for the reference receiver. Then we simply take

^{k}*t*(which is a rover time) and use it as a reference station time to extract the reference station carrier phase.

^{k}Using Equation (5), this process is later reversed, thereby compensating for any timing error in the range.

Applying a filter *F* (see next section) to batches of single-difference correlator values allows the phase of the filtered correlator values to be unwrapped, thus:

Δ*Q ^{k}*(

*t*)=F{Δ

*P*(

^{k}*t*)} = |Δ

*Q*(

^{k}*t*)|exp{

*i*Δ

*η*(

^{k}*t*)}

**(4)**

where,

Δ*Q ^{k}* is the filtered single-difference correlator

*F*is the batch filter, and

Δ

*η*is the unwrapped phase of the filtered single-difference correlator [radians].

^{k}Finally, adding the unwrapped phase to the reference station phase yields the new improved undifferenced rover carrier phase, which is then written into the RINEX file or used otherwise:

*φ ^{k,rov}*(

*t*) = Δ

*η*(

^{k}*t*) +

*φ*(

^{k,ref}*t*)

**(5)**

The computation of (3) requires the evaluation of the reference station carrier phase at the rate of the correlator values (e.g., 50 hertz). The phase itself is typically available with a lower rate (e.g., 1 hertz). Therefore, a suitable interpolation procedure must be used.

** Double-Difference Correlator. **The double-difference process forms satellite differences between two single-difference correlators. The reference satellite has the index

*l*. It is typically the satellite with the highest elevation.

**. . . **

**Undoing Double Differencing.** GNSS data format standards like RINEX are only defined for undifferenced observations. Retrieving single-difference (and finally undifferenced) observations from the double-difference phase is not straightforward because the receiver clock error has been completely eliminated during the double-difference process. The following paragraphs propose two methods with which to reintroduce the receiver clock error. For any positioning processing, this error has to be taken into account again and then, respectively, removed. The only important thing is that a relationship remains intact between the carrier and range clock within the receiver.

**. . . **

**Block Diagram**

We implemented the difference correlator scheme using the application programming interface (API) of the software receiver in a postprocessing mode (as was described, for example, in the article by T. Pany *et alia* listed in Additional Resources). The first step captures rover signal samples for L1 and L2 as well as reference station observations in RINEX format for L1 C/A and, eventually, L2C plus the broadcast navigation data bits. In a second step all these data are processed, resulting in a RINEX file with the rover observations.

Currently, the difference correlator scheme applies only for carrier tracking. Rover code and Doppler observations are produced using standard tracking loops with vector DLL (VDLL) or vector FLL (VFLL). The implemented difference correlator scheme is generally real-time capable, but at this time reference station data is read in via a RINEX file. For real-time operation, RTCM could be used.

**. . . **

**Batch Processing**

Within a batch, whose length equals the RINEX observation rate, the difference correlator values are analyzed coherently. In this step, we can use dedicated filters to reduce the noise and multipath. The filters rely on the fact that usually only the line-of-sight signal behaves in a deterministic way and shows up as a clear peak in the spectrum. Noise and multipath have a more random character and appear throughout the entire spectrum.

**Correlator Batch Filters. **The batch filter was introduced earlier in equations (4) and (7). Here, we now offer a detailed description**.**

**. . .**

**Cost Minimization Filter. **The cost minimization filter first fits a quadratic phase model to the batch of correlator values.

**. . .**

**Sensitivity. **Assuming that the reference satellite and the reference station data have virtually no noise, we can approximate the variance of a double-difference correlator…

**. . .**

**Field Trials: Signal Processing Results**

This section summarizes the results from tests conducted during two trials in forest and indoor environments.

**Canopy Test.** For the canopy test, a geodetic-quality rover antenna was placed on a tripod inside a forest … The experiment took place on December 1, 2011, tracking satellites over the course of half an hour.

A large part of the deciduous forest where the test took place had already dropped most of its leaves. Nevertheless, the forest is quite dense and frequent “shadowing” (signal obstructions) due to trunks and branches was expected. With an antenna splitter, the signal was fed into the RF front end of the multi-GNSS software receiver to record the GPS L1 signal samples and into a commercial geodetic receiver used for comparison. The reference station was located 2.477 kilometers away from the observatory Graz/Lustbühel, Austria.

**Signal Processing Results. **Code and Doppler vector tracking based on 20 millisecond–long coherent integrations was used to track all visible satellites at the rover. The estimated signal power at the rover varied from 5 to 51 decibel-hertz … Values below 10-15 decibel-hertz occur for the low-elevation-angle satellites.

**. . .**

**Indoor Test**

Based on the good performance achieved in the forest, we also wanted to test our method in a moderate indoor environment. The need for precisely surveyed indoor reference points became obvious. Only with their help, would it be possible to judge the precision of the carrier phase measurements. Therefore, IFEN requested that a surveying office measure the coordinates of the indoor points together with the coordinates of the two roof antennas with theodolites. All coordinates have a precision of approximately 0.5 centimeter relative to the roof antennas.

**. . .**

**Data Processing. **We postprocessed the gathered data in the usual way **. . . **

**Results. **A typical good result of the carrier tracking performance is that of PRN25 with PRN12 used as the reference satellite. Both signals penetrate the ceiling to reach the indoor antenna … the L1 and L2 carrier phase estimates are highly consistent and reflect the geometric motion of the satellite. Doppler (slope) and phase estimates are also consistent, and the signal processing did not detect any cycle slips.

The only difficult period occurred around the time interval 3450–3600 seconds on L2CM. During this time, fading on L2 occurred, as can been seen in the right-hand part of Figure 13. However, the spectrum of the double-difference correlator still shows a clearly visible peak, and we argue that the estimates are not corrupted by excessive noise, as reflected in the snapshot of the double-difference correlator spectrum …

**. . .**

**Use in Indoor Positioning**

The carrier phases obtained in the indoor scenario do not have blunt jumps that would suggest the occurrence of cycle slips. Therefore, these carrier phases may provide a reasonable positioning quality.

Knowing that the pseudorange quality is not sufficient, we decided to base the positioning mainly on the carrier phases. The pseudoranges must be down-weighted drastically so that the baseline computation is effectively identical to a phase-only differential positioning. Phase-only computations are well known to rely heavily on satellite geometry changes for position determination and require therefore longer measuring intervals.

Under open sky scenarios this has been the traditional method of precise differential positioning for several decades now. The open question for us was, do the indoor observations still have enough contribution from the line-of-sight signal (to the satellite geometry itself) or is the whole dataset so contaminated by multipath reflections as to prevent any reasonable positioning result?

The carrier phase observations were processed using a proprietary software. We used all carrier phase observations available. The carrier phases on L2 were only available for PRN12, PRN25, PRN29, and PRN31. These satellites enabled us to track the L2C code. However, more satellites supported L1 carrier phase tracking. The complete carrier phase information set from satellites above an elevation mask of 15 degrees has been used in our baseline computations.

**. . .**

**Conclusions**

Difference correlators represent an effective means to remove signal dynamics from correlator values and to substantially increase the coherent integration time, thus also increasing the carrier phase cycle slip stability. The concept can be implemented as a piggyback module to conventional DLL/FLL tracking or as a preferable alternative to vector tracking (VDLL/VFLL).

Depending on the intended use, satellite or receiver single-difference correlators can be used or double-difference correlators. For static differential positioning, the use of double-difference correlators seems to be the method of choice, allowing coherent integration times of several dozens of seconds.

Our indoor test (with a batch length of 30 seconds) verifies this high tracking sensitivity. With the rover antenna on one of the reference points located in an IFEN conference room, we can continuously track the carrier phase of all satellites on L1 C/A and L2CM.

The phase and Doppler estimates based on the individual batches are highly consistent in the sense that the phase difference between the two batches relates well to the estimated Doppler. Estimates from timely adjacent batches are uncorrelated.

Indoor signals are well-known for strong multipath and fading effects. The presence of biases especially introduces challenges for position determination based on observation data tracked indoors.

Despite the fact that some of the carrier phase observations were collected indoors, these are not pure sampled arbitrary reflections of the original signals. The indoor carrier phase observations are continuous and allow the application of sophisticated differential carrier processing. The position deviations to the truth of around two meters (vertical) and, respectively, less than one meter (horizontal) are exceptionally good for the environment chosen.

The forest trials lead us to a similar conclusion. The observations are continuous and might be used with sophisticated differential carrier processing, but the handling of propagation delays is critical. Our analysis has only just started and will continue to address this as well as other issues.

Other applications in which the signal is only attenuated and biases are not introduced (e.g., strong interference, or a large distance to the GNSS satellites as might occur for a GNSS space receiver) also seem to be well suited for employing the difference correlator — and promise an easier data evaluation.

*For the complete story, including figures, graphs, and images, please download the PDF of the article, above.*

**Acknowledgement**

The research described in this article received funding from the European Community’s Seventh Framework Program (FP7/2007-2013) under grant agreement number 247866.

**Additional Resources**

**[1] **Hein, G., and A. Teuber, H.-J. Thierfelder, and A. Wolfe, **“GNSS Indoors: Fighting the Fading, Part 2,”** *Inside GNSS*, May/June 2008

**[2]** Kaplan, E. D., and C. Hegarty, (eds.) *Understanding GPS: Principles and Applications*, Artech House, 2006.

**[3]** Pany, T., *Navigation Signal Processing for GNSS Software Receivers*, Artech House, ISBN: 978-1-60807-027-5-2010, 2010

**[4] **Pany, T., and B. Riedl, J. Winkel, T. Worz, R. Schweikert, H. Niedermeier, S. Iagrasta, G. Lopez-Risueno, and D. Jimenez-Banos, **“Coherent Integration Time: The Longer, the Better,”** *Inside GNSS*, November/December 2009