If you wish to contribute or participate in the discussions about articles you are invited to contact the Editor

# Examples of single frequency Cycle-Slip Detectors Fundamentals
Title Examples of single frequency Cycle-Slip Detectors
Author(s) J. Sanz Subirana, J.M. Juan Zornoza and M. Hernández-Pajares, Technical University of Catalonia, Spain.
Year of Publication 2011

The examples of single frequency detectors presented next are based only on data measurements of a single receiver and does not use any geometrical delay model. They are simple algorithms, suitable to run in real-time, but with worse performance that the two frequency detectors of previous sections. Other algorithms using geometrical modelling or single or double differences between satellites, or satellites and receivers, can improve the detection threshold and the reliability.

The non dispersive delays (geometry, clocks, troposphere ...) are cancelled when forming the code-pseudorange and carrier-phase combination for a given satellite and receiver measurement (i.e., $\displaystyle{ \Phi-R=\lambda N -2 I+K+\varepsilon }$) being the ionospheric refraction $\displaystyle{ I }$ affected by a factor two. The terms $\displaystyle{ N }$, $\displaystyle{ K }$ and $\displaystyle{ \varepsilon }$ indicate the ambiguity, instrumental delays and measurement noise. Two examples of algorithms are presented based in the following considerations:

• The ionospheric term $\displaystyle{ I^s_r }$ varies slowly with time, with small changes between consecutive epochs (typically less than $\displaystyle{ 1-2 }$ centimetres in $\displaystyle{ 30 }$ seconds).
• The measurement noise $\displaystyle{ \varepsilon }$ can reach up to several cycles, but it can be smoothed by a polynomial fit of the data measurements over a moving window (example 1), or a smoothed prediction can be computed by averaging the samples (example 2).

Algorithm description: Example 1

The detection is based on fitting a $\displaystyle{ n }$-degree polynomial over a sliding window of $\displaystyle{ N }$ samples (e.g., $\displaystyle{ N=200 }$ with 1Hz data). The residuals (predicted-observed) are compared to identify the carrier phase cycle-slips [footnotes 1]. As the geometry-free combination is affected by the ionospheric refraction, a sampling rate dependent threshold can also be considered.

Input data: Code minus phase combination of a single frequency data.
$\displaystyle{ d(s;k)=\Phi(s;k)-R(s;k) \qquad \mbox{(1)} }$

Output: satellite (PRN), time, cycle-slip flag
For each epoch ($\displaystyle{ k }$)
For each tracked satellite ($\displaystyle{ s }$)
• Declare cycle-slip when data hole greater than $\displaystyle{ tol_{\Delta t} }$ [footnotes 2].
• If no data hole larger than $\displaystyle{ tol_{\Delta t} }$, thence:
• Update an array with the previous $\displaystyle{ N }$ values (after the last cycle-slip) $\displaystyle{ [d(s;k-N),\dots,d(s;k-1)] }$
• Fit a n-degree polynomial $\displaystyle{ P(s;x) }$ to the previous values [footnotes 3].
• Declare cycle-slip when:
$\displaystyle{ \begin{array}{l} \left |d(s;k) -P(s;k) \right |\gt Threshold \end{array} }$
• Reset algorithm after cycle slip.
End
End

Algorithm description: Example 2

The detection is based on computing the mean and sigma values of the code pseudorange and carrier phase ($\displaystyle{ \Phi-R }$) differences over a sliding window of $\displaystyle{ N }$ samples (e.g., $\displaystyle{ N=100 }$ with 1Hz data). A cycle-slip is declared when a measurement differs from the mean bias value over a predefined threshold.

: Input data: Code pseudorange ($\displaystyle{ R }$) and carrier phase ($\displaystyle{ \Phi }$) measurements.

: Output: satellite (PRN), time, cycle-slip flag

For each epoch ($\displaystyle{ k }$)
For each tracked satellite ($\displaystyle{ s }$)
• Declare cycle-slip when data hole greater than $\displaystyle{ tol_{\Delta t} }$ [footnotes 4].
• If no data hole larger than $\displaystyle{ tol_{\Delta t} }$, thence:
• Update an array with the last $\displaystyle{ N }$ differences of
$\displaystyle{ d(s;k)=\Phi(s;k)-R(s;k) \qquad \mbox{(2)} }$
That is: $\displaystyle{ [d(s;k-N),\dots,d(s;k-1)] }$
• Compute the mean and sigma discrepancy over the previous $\displaystyle{ N }$ epochs (after the last cycle-slip) $\displaystyle{ [k-N, \dots , k-1] }$:
$\displaystyle{ \begin{array}{l} m_d(s;k-1)=\displaystyle \frac{1}{N} \sum_{i=1}^{N}{d(s;k-i)}\\ m_{d^2}(s;k-1)=\displaystyle \frac{1}{N}\sum_{i=1}^{N}{d^2(s;k-i)}\\ S_d(s;k-1)= \displaystyle \sqrt{m_{d^2}(s;k-1)-m_d^2(s;k-1)} \end{array} \qquad \mbox{(3)} }$
• Compare the difference at the epoch $\displaystyle{ k }$ with the mean value of differences computed over the previous $\displaystyle{ N }$ samples window. If the value is over a $\displaystyle{ threshod=n_T*S_d }$ (e.g., $\displaystyle{ n_T=6 }$), declare cycle-slip [footnotes 5].
That is:
If $\displaystyle{ |d(s;k)-m_d(s;k-1)| \gt n_T \,S_d(s;k-1) }$,
Thence, cycle-slip.
• Reset algorithm after cycle slip.
End
End

• This algorithm can be seen as a particular case of the previous Example 1, using a zero-degree polynomial fit.

• This detector is affected by the pseudorange noise and multipath, as well as the divergence of the ionosphere. Thence, higher sampling rates improve the detection performance, but still the shortest jumps can escape to this detector. On the other hand, a minimum number of samples is needed for the filter initialisation, in order to assure a reliable value of $\displaystyle{ S_d }$ for the detection threshold.

• To avoid unrealistic estimations of sigma during the first iterations of the filter, the following weighted average with an initial value $\displaystyle{ S^2_0 }$ can be used (see in figure 1 an example of implementation performance):
$\displaystyle{ S_d^2(s;k) = \frac{k-1}{k}S_d^2(s;k)+\frac{1}{k}S^2_0 \qquad \mbox{(4)} }$
where $\displaystyle{ S_0 }$ is a predefined initial value for sigma (e.g., $\displaystyle{ S_0=1m }$).
Another easier approach could be to fix a lower, or lower and upper bounds, for the sigma threshold.
That is: to take $\displaystyle{ threshod=n_T*S_d }$, with $\displaystyle{ th_{min} \leq threshod \leq th_{max} }$.

• The Hatch filter can be used instead of the finite window of equations (3) to compute the mean values $\displaystyle{ m_d }$, $\displaystyle{ m_{d^2} }$, in order to simplify the code:
$\displaystyle{ \begin{array}{l} m_d(s;k)= \displaystyle \frac{a-1}{a} m_d(s;k-1) + \frac{1}{a} d(s;k)\\ \end{array} \qquad \mbox{(5)} }$
where, $\displaystyle{ a=k }$ when $\displaystyle{ k\lt N }$ and $\displaystyle{ a=N }$ when $\displaystyle{ k \geq N }$.
This equation allow computation of a sequential estimate of the mean value, but this filter has infinite memory, propagating forward the divergence of the ionospheric refraction [footnotes 6]. Nevertheless, such an accumulated effect, although biasing the ambiguity estimate, should not affect the cycle-slips detection, because it varies smoothly and the detector looks for large jumps. Figure 1: Fault cycle-slip detection on GPS $\displaystyle{ L_1 }$ signal: A multipath drift, after a quite stable period (i.e., with small sigma), produces a fault detection. The Measured and Predicted differences are compared with the confidence threshold (computed with the sliding window algorithm, using the equation (3) combined with (4).

A detector based in the n-order time differences of carrier phase $\displaystyle{ \Phi }$ measurements between consecutive epochs could be considered (see article Detector based in carrier phase data: The geometry-free combination. Nevertheless, it must be taken into account that such differences are affected by changes in range and in clocks [footnotes 7]. In spite of that, most of the geometric range variation is cancelled from $\displaystyle{ \Delta^3 }$, because it varies as a smooth function. Thence, this detector mainly affected by the receiver clock instabilities, high ionospheric fluctuations (i.e., scintillation...), as well.