Introduction

A cycle slip is a discontinuity of an integer number of cycles in the phase observable, caused by a temporary loss of lock in the receiver carrier tracking loop. This discontinuity is generally due to poor reception, or to the presence of obstacles in the path of satellite signals; its amplitude varies from one to millions of cycles.

Cycle slip detection and correction is an important part of GPS data processing. Therefore, algorithms specifically dedicated to cycle slip analysis in dual-frequency GPS observations were developed and implemented. Methods to detect and repair cycle slips using double differenced observations can be found in Bisnath and Langley (2000), Kim and Langley (2001) and Lee et al. (2003). Over the recent years, Precise Point Positioning (PPP) methods have become a powerful tool for estimating station positions. Therefore, techniques to detect and correct cycle slips on undifferenced observations are needed. The first technique to detect cycle slips on undifferenced observations was the approach called Turbo Edit (Blewitt 1990). It is implemented in scientific programs that process undifferenced observations such as GIPSY-OASIS II (Lichten et al. 1995) and BERNESE 5.0 (Beutler et al. 2006). Lacy et al. (2008) faced the cycle slip problem for single GNSS receivers by exploiting Bayesian theory. The method is based on the original signal and can be modeled by a multiple polynomial regression. Banville and Langley (2010) developed a method for instantaneous cycle slip correction in real-time PPP applications. Liu (2011) has presented a method to detect and repair cycle slips that employs the ionospheric total electron content rate (TECR).

The space vehicles of the forthcoming GNSS satellite constellations will add additional frequencies and therefore making new linear combinations of observations available. Recently, several authors have proposed new combinations that can be used to eliminate or mitigate individual sources of error (Richert and El-Sheimy 2007). New combinations are used to face different problems. For instance, all possible triple-frequency geometry-free carrier phase combinations that retain the integer nature of the ambiguities are studied in Cocard et al. (2008). The ambiguity resolution problem in this new context is analyzed in several works (Teunissen and Odijk 2003; Ji et al. 2007; Feng 2008; Feng and Rizos 2009; Li et al. 2010). The ionosphere modeling in studied by optimal ionosphere-free combinations for triple-frequency GPS observations in Odijk (2003). Finally, some methods have developed to deal with cycle slips from a multifrequency point of view. For example, Zhen et al. (2008) presented a real-time algorithm to determine cycle slips for triple-frequency GNSS data which can be applied in PPP data processing. Dai et al. (2009) developed a real-time algorithm to detect, determine and validate cycle slips for triple-frequency GPS applying two geometry-free phase combinations along with LAMBDA technique to search for cycle slip candidates.

We present a new method for cycle slip analysis based on linear combinations of triple-frequency undifferenced GNSS observations. Section 2 describes the multifrequency GNSS observation equations. In Sect. 3, the approaches for detection of cycle slip epochs and the determination of slip amplitudes are illustrated. Section 4 describes numerical experiments to assess the performance of the method. The data consists of simulated and real 1-second triple-frequency GPS data that seem to be free of strong multipath variations since the pseudorange code noises are close to 15 cm for the first and second carrier and 10 cm for third one for all observation session. The procedure could be also used with Galileo observations; in this case, the approach should be much easier due to the lower nominal noise level of code observations, as outlined at the end of this study.

Multifrequency GNSS observation equations

The modernization of the GPS and the advent of the Galileo system will lead to a multifrequency GNSS system improving the performance of precise positioning applications. Details of the satellite constellation and frequencies for the modernized GPS and the future Galileo can be found in IS-GPS-200 (2010), IS-GPS-705 (2010) and OS SIS ICD (2010). Table 1 summarizes the modernized GPS and Open Service Galileo signal frequencies.

Table 1 Basic GPS (L) and Galileo (E) signal frequencies

Euler and Goad (1991) assumed some simplifications in a general model of GPS observables in order to express them in a more suitable form. These consist in writing the observables as the sum of dispersive and non-dispersive terms. Taking these simplifications into account and omitting the indices related to receiver and satellite, the mathematical model of GNSS undifferenced carrier phase and pseudorange observables for a specific receiver and satellite at epoch t is the following:

$$ \begin{aligned} P_{i} (t) & = D(t) + k_{1i} I(t) + \varepsilon_{P} (t) \\ L_{i} (t) & = D(t) - k_{1i} I(t) + B_{i} + \varepsilon_{L} (t) \\ \end{aligned} $$
(1)

where i = 1,2,3. The symbols P i and L i are the code pseudoranges and the carrier phase observations expressed in distance units at frequency f i , respectively; ε P and ε L are the corresponding measurement noise, including the multipath effect. All parameters in the above equations are generally biased. The term D is the non-dispersive delay. It is interpreted as the distance traveled by the signal and is biased by clock terms and the tropospheric delay. The ionospheric group delay I at frequency f 1 is explicitly accounted for in (1) and it is multiplied by k 1i  = (f 1/f i)2 to get the corresponding delay at frequency f i . It is a dispersive delay biased by the Differential Code Biases (DCB). The term B i is formed by joining the non-zero initial phase and the integer carrier phase ambiguity N i , i.e., the initial carrier phase ambiguity at frequency f i is biased by initialization constants and generally is not an integer. Furthermore, both equations (1) are known to be biased by the travel time of the signal through the circuitries of the receiver and satellite.

The proposed method

The problem of cycle slip detection and correction can be reduced to finding discontinuities in a noisy time series of a regularly sampled smooth signal. The processed time series are here linear combinations of phase observations, denoted as L 1, L 2, L 3 and expressed in range units, and code pseudorange observations denoted as P 1, P 2, P 3. The GPS observations are assumed to have the realistic noise of \( \sigma_{{L_{1} }} = \sigma_{{L_{2} }} = \sigma_{{L_{3} }} = 0.002\;{\text{m}} \), \( \sigma_{{P_{1} }} = \sigma_{{P_{2} }} = 0.15\,{\text{m}} \) and \( \sigma_{{P_{3} }} = 0.10\,{\text{m}} \). The respective carrier wavelengths are λ1 ≈ 19.0 cm, λ2 ≈ 24.4 cm and λ3 ≈ 25.5 cm. The integer cycle slip amplitudes are denoted as δN 1, δN 2, δN 3.

Epoch detection procedure

The proposed method is based on five linear combinations of GNSS code and phase observations used in three cascading steps. In the first one, the phase and code observations are combined to detect “big” jumps, i.e., with amplitudes much higher than the data combination noise. After that GNSS phase observations are used to detect “small” cycle slips. Finally, a further linear combination of phase observations is considered to look for the remaining undetected discontinuities.

Big jumps

The phase and code observations are combined in a minimum-noise, geometry-free combination:

$$ Y_{i} (t) = a_{ii} L_{i} (t) + b_{i1} P_{1} (t) + b_{i2} P_{2} (t) + b_{i3} P_{3} (t) $$
(2)

where the coefficients are a ii  = 1, b i1 = b i2 = −4/17 and b i3 = −9/17 for all i = 1,2,3. Such coefficients are derived by imposing the following conditions:

$$ \left\{ {\begin{array}{*{20}c} {a_{ii} = 1} \hfill \\ {a_{ii} + b_{i1} + b_{i2} + b_{i3} = 0} \hfill \\ {\mathop {\min }\limits_{{b_{i1} ,b_{i2} ,b_{i3} }} \left[ {a_{ii}^{2} \sigma_{{L_{i} }}^{2} + b_{i1}^{2} \sigma_{{P_{1} }}^{2} + b_{i2}^{2} \sigma_{{P_{2} }}^{2} + b_{i3}^{2} \sigma_{{P_{3} }}^{2} } \right]} \hfill \\ \end{array} } \right.. $$
(3)

Applying the covariance propagation law, the noise standard deviation (STD) of Y i , denoted by \( \sigma_{{Y_{i} }} \), is at the 7 cm level. The condition a ii  = 1 acts as a normalization condition, avoiding the amplification of unmodeled bias terms (Teunissen and Bakker 2009). Substituting (1) into (2), the combinations Y 1, Y 2, Y 3 can be expressed as the sum of the initial ambiguities, the ionospheric effect I multiplied by constants M i and random noise. The constants M i are given by

$$ M_{i} = - K_{1i} a_{ii} + b_{i1} + K_{12} b_{i2} + K_{13} b_{i3} $$
(4)

and equal −2.57, −3.22 and −3.36 for i = 1,2,3, respectively. The main advantage of the combinations (2) is that simultaneous cycle slips on different carriers are not mixed and therefore, a “big” jump in one carrier cannot be compensated by jumps on the others.

The cycle slip detection test is based on the computation of the time differences ΔY i between two consecutive epochs of Y i . In particular, ΔY i is considered a random variable with non-constant mean δN i λ i , which is different from zero in case of a cycle slip, and with variance depending on the noise STD \( \sigma_{{Y_{i} }} \) and on the ionospheric variation between two consecutive epochs.

Figure 1 shows a typical real example of the variation in time of the ionospheric effect ΔI. It has been computed from the function (L − L 2)/(k 12 − 1). This figure is based on 1-second dual-frequency GPS data obtained from a GPS station located at Como (Italy). The receiver and antenna placed at Como are TPS ODYSSEY-E and TPSCR3_GGD CONE, respectively. GPS data correspond to the day December 2, 2007. The maximum value is at 1 cm level. The corresponding histogram is shown in Fig. 2, indicating a normal distribution with mean zero and STD of about 3 mm/s. These values prove the low impact of the ionospheric effect in differences in time of Y i under general atmospheric conditions.

Fig. 1
figure 1

An example of ionospheric effect variation in time. Station: Como (Italy). Receiver/antenna: TPS ODYSSEY-E/TPSCR3_GGD CONE. Day: 2007-12-2

Fig. 2
figure 2

Histogram of the time variation of the ionospheric effect of data from Fig. 1

Assuming that the measurement noise is independent in time and considering ΔI as a random variable with zero mean and STD \( \sigma_{\Updelta I} = 3\,{\text{mm}} \) and is independent from the measurement noise, the variance of ΔY i is

$$ \sigma_{{\Updelta Y_{i} }}^{2} = 2\sigma_{{Y_{i} }}^{2} + M_{i}^{2} \sigma_{\Updelta I}^{2} . $$
(5)

It turns out that \( \sigma_{{\Updelta Y_{i} }}^{2} \cong 10\,{\text{cm}} \) for i = 1,2,3.

In order to be strongly conservative, a first threshold is chosen at the level of \( 4\sigma_{{\Updelta Y_{i} }} \). Assuming that ΔY i is normally distributed around its mean value δN i λ i , the hypothesis

$$ H_{0} :\delta N_{i} = 0 $$
(6)

is rejected, i.e., a cycle slip is detected, if

$$ \Updelta Y_{i} (t) = \left| {Y_{i} (t) - Y_{i} (t - 1)} \right| > 4\sigma_{{\Updelta Y_{i} }} \approx 41\,{\text{cm}} $$
(7)

with a significance level \( \alpha = P(\left| Z \right| > 4) = 0.006\% \). The probability of “false alarms” is therefore extremely low.

On the other hand, when H 0 is not rejected, this does not mean that there are no cycle slips. A alternative hypothesis test is setup by computing, for different integer values δN i  > 0, the probability of missed detection as

$$ \beta = P\left( {Z > \frac{{\delta N_{i} \lambda_{i} - 4\sigma_{\Updelta Yi} }}{{\sigma_{\Updelta Yi} }}} \right) $$
(8)

i.e., the probability that H 0 is incorrectly not rejected when actually \( \delta N_{i} \ne 0 \) (Fig. 3).

Fig. 3
figure 3

Significance level α and risk of second kind β for cycle slip detection tests on ΔY 1, ΔY 2 and ΔY 3

The amplitude of cycle slips in Y 1, Y 2, Y 3 for δN 1, δN 2, δN 3 varying from 1 to 5 (higher slips are surely detected) is shown in Fig. 4. It turns out that only the cycle slips represented by dots in Fig. 4 have a probability β < 0.01% that we consider acceptable; this limit value of β is computed from (8) for i = 2 and δN 2 = 3. The other cycle slips, corresponding to the cases \( \left| {\delta N_{1} } \right| = 1,2,3,\left| {\delta N_{2} } \right| = 1,2 \) and \( \left| {\delta N_{3} } \right| = 1,2 \), are called from here on “small jumps” and are represented by stars in Fig. 4. They are considered non-detectable by the combinations (2) and therefore have to be submitted to a further testing procedure.

Fig. 4
figure 4

Certainly detected (dots) and possibly undetected (stars) cycle slips by ΔY 1, ΔY 2 and ΔY 3 using the threshold in dash line

Small jumps

In order to detect the remaining small jumps, the noise level of the data combination has to be reduced. This is done by combining only GPS phase observations in a geometry-free and ionosphere-free linear combination:

$$ Y_{4} (t) = a_{41} L_{1} (t) + a_{42} L_{2} (t) + a_{43} L_{3} (t) $$
(9)

with a 41 = 14/65, a 42 = −79/65 and a 43 = 1, derived from the following conditions:

$$ \left\{ {\begin{array}{*{20}c} {a_{43} = 1} \hfill \\ {a_{41} + a_{42} + a_{43} = 0} \hfill \\ {a_{41} + K_{12} \,a_{42} + K_{13} a_{43} = 0} \hfill \\ \end{array} } \right.. $$
(10)

The resulting noise STD \( \sigma_{{Y_{4} }} \) is at the 3 mm level, much lower than the one of combinations (2).

Since Y 4 is an ionosphere-free combination and assuming again that the measurement noise is independent in time, the variance of the time variation ΔY 4 can be simply computed as:

$$ \sigma_{{\Updelta Y_{4} }}^{2} = 2\sigma_{{Y_{4} }}^{2} $$
(11)

Moreover, assuming that ΔY 4 is normally distributed, the hypothesis

$$ H_{0} :\delta N_{1} = \delta N_{2} = \delta N_{3} = 0 $$
(12)

is rejected, i.e., a cycle slip is detected, if

$$ \Updelta Y_{4} (t) = \left| {Y_{4} (t) - Y_{4} (t - 1)} \right| > 4\sigma_{{\Updelta Y_{4} }} \approx 1.8\,{\text{cm}} $$
(13)

with a significance level α = 0.006%.

The values of the jumps in Y 4 for all the possible combinations of three cycle slips that are not yet detectable are shown in Fig. 5. The number of slip combinations (δN 1, δN 2, δN 3) under test, for \( \left| {\delta N_{1} } \right| \le 3,\left| {\delta N_{2} } \right| \le 2,\left| {\delta N_{3} } \right| \le 2 \) and excluding the no-slip case (0, 0, 0), is equal to 7×5×5−1 = 174. The only slip combinations that are not seen by ΔY 4 are (−2, −2, −2), (−1, −1, −1), (+1,+1,+1) and (+2, +2, +2), i.e., simultaneous cycle slips with the same amplitude in all three carriers (δN = δN 2 = δN 3 =−2, −1,1,2). Note that β ≈ 0 for all other detected cycle slips.

Fig. 5
figure 5

Detected (dots) and undetected (stars) cycle slips by ΔY 4. Threshold in dash line

Particular cases

In order to deal with the undetected cycle slips (δN 1 = δN 2 = δN 3 = δN), a tailored linear combination of phase observations is finally introduced:

$$ Y_{5} (t) = a_{51} L_{1} (t) + a_{52} L_{2} (t) + a_{53} L_{3} (t) $$
(14)

with \( a_{51} = 1,a_{52} = 0.37 \) and \( a_{53} = - 0.63 \). This is a geometry-free combination that maximizes the ratio between the squared amplitude of the smallest jump, corresponding to \( \left| {\delta N_{1} } \right| = 1 \), and the variance of the time differences \( \Updelta Y_{5} \):

$$ \left\{ {\begin{array}{*{20}c} {a_{51} = 1} \hfill \\ {a_{51} + a_{52} \, + a_{53} = 0} \hfill \\ {\mathop {\max }\limits_{{a_{52} \,,a_{53} }} \left[ {\frac{{\left( {a_{51} \lambda_{1} + a_{52} \,\lambda_{2} + a_{53} \lambda_{3} } \right)^{2} }}{{\sigma_{{\Updelta Y_{5} }}^{2} }}} \right]} \hfill \\ \end{array} } \right. $$
(15)

where

$$ \sigma_{{\Updelta Y_{5} }}^{2} = 2\sigma_{{Y_{5} }}^{2} + M_{5}^{2} \sigma_{\Updelta I}^{2} $$
(16)
$$ \sigma_{{Y_{5} }}^{2} = a_{51}^{2} \sigma_{{L_{1} }}^{2} + a_{52}^{2} \sigma_{{L_{2} }}^{2} + a_{53}^{2} \sigma_{{L_{3} }}^{2} $$
(17)
$$ M_{5} = a_{51} + K_{12} a_{52} + K_{13} a_{53} . $$
(18)

The resulting noise STD \( \sigma_{{Y_{5} }} \) is at the 2.5 mm level. Therefore, since a cycle slip equal to (+1, +1, +1) produces a jump of 8 cm, all cycle slips with the same amplitude in the three carriers should be detected if the ionosphere variation between two consecutive epochs is less than 7 cm, which is a very high value under general atmospheric conditions.

More precisely, observing that \( \sigma_{{\Updelta Y_{5} }}^{{}} \approx 4\;{\text{mm}} \) and assuming that \( \Updelta Y_{5} \) is normally distributed, the hypothesis

$$ H_{0} :\delta N = 0 $$
(19)

is rejected, i.e., a cycle slip is detected, if

$$ \Updelta Y_{5} (t) = \left| {Y_{5} (t) - Y_{5} (t - 1)} \right| > 4\sigma_{{\Updelta Y_{5} }} \approx 1.7\,{\text{cm}} $$
(20)

with a significance level α = 0.006%. Figure 6 shows that all the analyzed cycle slips have an amplitude in \( Y_{5} \) that allows their detection. In addition, \( \beta \approx 0 \) for all of them.

Fig. 6
figure 6

Detected cycle slips (dots) by ΔY 5. Threshold in dash line

Amplitude determination procedure

Once the epoch has been detected, the problem is to estimate the amplitude of the jump, i.e., the integer number of cycles slipped in each of these carriers. In the proposed method, the cycle slip amplitude estimation is based on linear combinations of phase observations. A rough estimate of the cycle slip amplitudes can be computed as:

$$ \delta \tilde{N}_{i} = {\text{round}}\left( {\frac{{\Updelta Y_{i} }}{{\lambda_{i} }}} \right) $$
(21)

with i = 1, 2, 3.

By comparing the carrier wavelengths with the noise level of \( \Updelta Y_{i} \) \( (\sigma_{{\Updelta Y_{i} }} \approx 10\;{\text{cm}}) \), we can state that the true cycle slip amplitudes are in the range of \( \delta N_{i} = \delta \tilde{N}_{i} + \delta n_{i} \) with \( \delta n_{i} = - 2, - 1,0, + 1, + 2 \). In order to determine the correct values, we consider the phase combinations

$$ \begin{aligned} L_{12} (t) & = L_{1} (t) - L_{2} (t) \\ L_{13} (t) & = L_{1} (t) - L_{3} (t) \\ \end{aligned} $$
(22)

and their differences in time

$$ \begin{array}{*{20}c} {\Updelta L_{12} (t) = L_{12} (t) - L_{12} (t - 1)} \hfill \\ {\Updelta L_{13} (t) = L_{13} (t) - L_{13} (t - 1).} \hfill \\ \end{array} $$
(23)

The selected cycle slip amplitudes with respect to \( \delta n_{i} \) are those minimizing the following target functions

$$ \begin{aligned} \phi_{12} (t) & = \left| {\Updelta L_{12} (t) - (\delta \tilde{N}_{1} \lambda_{1} - \delta \tilde{N}_{2} \lambda_{2} ) - (\delta n_{1} \lambda_{1} - \delta n_{2} \lambda_{2} )} \right| \\ \phi_{13} (t) & = \left| {\Updelta L_{13} (t) - (\delta \tilde{N}_{1} \lambda_{1} - \delta \tilde{N}_{3} \lambda_{3} ) - (\delta n_{1} \lambda_{1} - \delta n_{3} \lambda_{3} )} \right|. \\ \end{aligned} $$
(24)

The question is whether these target functions are robust enough to discriminate among all possible 125 combinations of cycle slip amplitudes that include the case of no-slip. The answer is positive only if the following two conditions

$$ \begin{aligned} & \frac{1}{2}D_{12} (\delta n_{1} ,\delta n_{2} ,\delta m_{1} ,\delta m_{2} ) > 4\sigma_{{\Updelta L_{12} }} \\ & \frac{1}{2}D_{13} (\delta n_{1} ,\delta n_{3} ,\delta m_{1} ,\delta m_{3} ) > 4\sigma_{{\Updelta L_{13} }} \\ \end{aligned} $$
(25)

with

$$ \begin{aligned} D_{12} (\delta n_{1} ,\delta n_{2} ,\delta m_{1} ,\delta m_{2} ) & = \left| {(\delta n_{1} \lambda_{1} - \delta n_{2} \lambda_{2} ) - (\delta m_{1} \lambda_{1} - \delta m_{2} \lambda_{2} )} \right| \\ D_{13} (\delta n_{1} ,\delta n_{3} ,\delta m_{1} ,\delta m_{3} ) & = \left| {(\delta n_{1} \lambda_{1} - \delta n_{3} \lambda_{3} ) - (\delta m_{1} \lambda_{1} - \delta m_{3} \lambda_{3} )} \right| \\ \end{aligned} $$
(26)

are both verified for all \( \delta n_{i} ,\delta m_{i} = - 2, - 1,0, + 1, + 2 \) such that \( (\delta n_{1} ,\delta n_{2} ) \ne (\delta m_{1} ,\delta m_{2} ) \) and \( (\delta n_{1} ,\delta n_{3} ) \ne (\delta m_{1} ,\delta m_{3} ) \). In this case, the semi-distance between any two points in the lattice \( (\delta n_{1} ,\delta n_{2} ,\delta n_{3} ) \) with \( \delta n_{i} = - 2, - 1,0, + 1, + 2 \) is larger than \( 4\sigma \). The implication is that the selected minimum of (24) cannot have an alternative with a reasonable probability, i.e., the probability of a wrong decision is \( P\left( {Z > 4} \right) = 0.003\% \). If both conditions (25) are verified, we can reasonably state that the noise of the phase observations cannot bias the amplitude estimation.

The result for the first condition (25) is shown in Fig. 7: the only two uncertain cases of \( (\delta n_{1} ,\delta n_{2} ) \) with a semi-distance in \( L_{12} \) below the threshold are as follows:

Fig. 7
figure 7

Uncertain cycle slip amplitudes (stars) with a semi-distance \( \frac{1}{2}D_{12} \left( {\delta n_{1} ,\delta n_{2} ,\delta m_{1} ,\delta m_{2} } \right) \) smaller than the 4σ threshold (dash line). The minimization of the target function \( \phi_{12} (t) \) is not decisive to discriminate between them

  • (−2, −2) that could be confused with (+2, +1)

  • (−2, −1) that could be confused with (+2, +2)

The same uncertain cases can be found for \( (\delta n_{1} ,\delta n_{3} ) \) as a consequence of the close values of \( \lambda_{2} \) and \( \lambda_{3} \).

If the uncertainty is just in one of the two target functions (24), then the value of \( \delta n_{1} \) can be determined and can be used to solve the uncertainty in the other target function, i.e., the only cases of \( (\delta n_{1} ,\delta n_{2} ,\delta n_{3} ) \) that cannot be discriminated by combining the two target functions are as follows:

  • (−2, −2, −2) versus (+2, +2, +1)

  • (−2, −1, −2) versus (+2, +2, +1)

  • (+2, +1, +2) versus (−2, −2, −1)

  • (+2, +2, +2) versus (−2, −1, −1)

Therefore, a final combination

$$ Y_{6} (t) = a_{61} L_{1} (t) + a_{62} L_{2} (t) + a_{63} L_{3} (t) $$
(27)

is introduced with \( a_{61} = 1,a_{62} = - 2.78 \) and \( a_{63} = - 1.78 \). Observing that the absolute difference between two cycle slip amplitudes in \( Y_{6} \) is the same for all four cases mentioned before, i.e., it is equal to

$$ d_{6} = \left| {4a_{61} \lambda_{1} + 3a_{62} \lambda_{2} + 3a_{63} \lambda_{3} } \right|. $$
(28)

The coefficients of the linear combination (27) are derived by imposing the following conditions:

$$ \left\{ {\begin{array}{*{20}c} {a_{61} = 1} \hfill \\ {a_{61} + a_{62} + a_{63} = 0} \hfill \\ {\mathop {\max }\limits_{{a_{62} \,,a_{63} }} \left[ {\frac{{d_{6}^{2} }}{{\sigma_{{\Updelta Y_{6} }}^{2} }}} \right]} \hfill \\ \end{array} } \right. $$
(29)

where

$$ \sigma_{{\Updelta Y_{6} }}^{2} = 2\sigma_{{Y_{6} }}^{2} + M_{6}^{2} \sigma_{\Updelta I}^{2} $$
(30)
$$ \sigma_{{Y_{6} }}^{2} = a_{61}^{2} \sigma_{{L_{1} }}^{2} + a_{62}^{2} \sigma_{{L_{2} }}^{2} + a_{63}^{2} \sigma_{{L_{3} }}^{2} $$
(31)
$$ M_{6} = a_{61} + K_{12} a_{62} + K_{13} a_{63} . $$
(32)

This means that \( Y_{6} \) is a geometry-free combination that maximizes the ratio of the squared difference between two uncertain cycle slips and the variance of the data time variations. The resulting noise STD \( \sigma_{{Y_{6} }} \) is close to 1 cm.

At this point, the following target function to be minimized is defined

$$ \phi_{6} (t) = \left| {\Updelta Y_{6} (t) - \left( {a_{61} \delta \tilde{N}_{1} \lambda_{1} + a_{62} \delta \tilde{N}_{2} \lambda_{2} + a_{63} \delta \tilde{N}_{3} \lambda_{3} } \right) - \left( {a_{61} \delta n_{1} \lambda_{1} + a_{62} \delta n_{2} \lambda_{2} + a_{63} \delta n_{3} \lambda_{3} } \right)} \right| $$
(33)

which is capable of solving the remaining uncertainty on \( (\delta n_{1} ,\delta n_{2} ,\delta n_{3} ) \), because the semi-distance between two uncertain cases in \( Y_{6} \) is in the order of \( 3\sigma_{{\Updelta Y_{6} }} \). This is slightly less conservative than conditions (25), but it is acceptable also because there is a very low probability getting at this final test.

Application to the case of Galileo

The expected nominal noise level of the Galileo code pseudorange observations is lower than that for the modernized GPS. In particular, in case of Galileo, we are expected to have \( \sigma_{{P_{1} }} = 0.07\,{\text{m}} \) and \( \sigma_{{P_{2} }} = \sigma_{{P_{3} }} = 0.04\,{\text{m}} \) (O’Keefe et al. 2005, B. Arbesser-Rastburg, personal communication).

As a consequence of the STD of these pseudorange observations, the noise STD of the combinations \( Y_{1} ,Y_{2} ,Y_{3} \) becomes \( \sigma_{{Y_{1} }} = 2.6\,{\text{cm}} \). This means that, in principle, the presence and the amplitude of cycle slips on \( L_{2} \) and \( L_{3} \) can be directly detected by using Y 2 and \( Y_{3} \), respectively. In the case of \( L_{1} \), we need also the combination \( Y_{4} \) to identify slips of one cycle only; since the amplitude estimated by \( Y_{1} \) has an uncertainty of ±1, we can determine the right number of integer cycles slipped on \( L_{1} \) with the support of \( L_{12} \) or \( L_{13} \). It is clear that the procedure is much easier in case of Galileo, provided that this nominal accuracy is confirmed with real data in the future.

Numerical tests

The capability of the method to detect and repair cycle slips has been tested in two different situations: simulated data with cycle slips and real triple-frequency GPS data with artificial cycle slips.

Simulated data

The performance of the proposed method is assessed by simulated data first. A time series of 5,000 values is considered with a known jump equal to (0, −1, −1) at epoch \( \tau = 1,250 \). The ionospheric effect is simulated by using \( L_{1} - L_{2} \) observations coming from 1-second real GPS data. The resulting signal in Y 1, Y 2 and Y 3 is shown in Fig. 8. It can be seen that the discontinuity is quite embedded into these linear combinations and cannot be detected by time differentiation (Fig. 9). On the other hand, the jump is clearly revealed in Y 4 thanks to the improved signal-to-noise ratio (Fig. 10). Figure 11 shows the values of differencing Y 4 in time. The linear combination Y 5 is displayed in Fig. 12 for the sake of completeness, but it is not used in the cycle slip epoch detection.

Fig. 8
figure 8

Linear combinations Y 1, Y 2 and Y 3

Fig. 9
figure 9

Differentiation of Y 2 in time (ΔY 2). Similar behavior for Y 1 and Y 3

Fig. 10
figure 10

Linear combination Y 4

Fig. 11
figure 11

Differentiation of Y 4 in time (ΔY 4)

Fig. 12
figure 12

Linear combination Y 5

From the numerical point of view, the results of the tests (7), (13), (20) are as follows:

  • ΔY 1(τ) = 30.3 cm > 41.3 cm

  • ΔY 2(τ) = 4.4 cm > 41.4 cm

  • ΔY 3(τ) = 4.3 cm > 41.4 cm

  • ΔY 4(τ) = 5.5 cm > 1.8 cm

  • ΔY 5(τ) = 26.0 cm > 1.7 cm

This means that the jump is detected by \( Y_{4} \) at the correct epoch \( \tau = 1,250 \).

Regarding the amplitude estimation, the initial estimates are \( \delta \tilde{N}_{1} = 2,\,\delta \tilde{N}_{2} = 0 \) and \( \delta \tilde{N}_{3} = 0 \) according to (21). Considering a range of ±2 around these estimates, the minima of the target functions (24) are as follows:

  • \( \min \left[ {\phi_{12} (\tau )} \right] = 1.4\;{\text{cm}} \) for \( (\delta n_{1} ,\delta n_{2} ) = ( + 2, + 2) \)

  • \( \min \left[ {\phi_{13} (\tau )} \right] = 1.3\;{\text{cm}} \) for \( (\delta n_{1} ,\delta n_{3} ) = ( + 2, + 2) \)

corresponding to the uncertain case \( (\delta n_{1} ,\delta n_{2} ,\delta n_{3} ) = ( + 2, + 2, + 2) \) that can be confused with (−2, −1, −1), as explained in Sect. 3.2 and shown in Fig. 13.

Fig. 13
figure 13

Values of the target function \( \phi_{12} (\tau ) \) for all possible cases of (δn 1, δn 2). The cycle slip amplitude in L 12 is uncertain, because the two smallest values of \( \phi_{12} (\tau ) \) are very similar: \( \phi_{12} (\tau ) = 1.5 \) cm for (δn 1, δn 2) = (−2, −1), \( \phi_{12} (\tau ) = 1.4 \) cm for (δn 1, δn 2) = (+2, +2)

Testing the two alternatives by using the target function (33), the corresponding values are

  • \( \phi_{6} (\tau ) = 5.4\;{\text{cm}} \) for \( (\delta n_{1} ,\,\delta n_{2} ,\,\delta n_{3} ) = ( + 2, + 2, + 2) \)

  • \( \phi_{6} (\tau ) = 3.2\;{\text{cm}} \) for \( (\delta n_{1} ,\,\delta n_{2} ,\,\delta n_{3} ) = ( - 2, - 1, - 1) \)

and therefore the estimated \( (\delta n_{1} ,\delta n_{2} ,\delta n_{3} ) \) is modified to (−2, −1, −1). Recalling that \( \delta \hat{N}_{i} = \delta \tilde{N}_{i} + \delta n_{i} \), the final estimate of the cycle slip amplitude is \( (\delta \hat{N}_{1} ,\delta \hat{N}_{2} ,\delta \hat{N}_{3} ) = (0, - 1, - 1) \) which corresponds to the true one.

The method has been tested on 1,000 cases by adding cycles slips at random positions and with random amplitudes. All the cases have been correctly detected.

Real triple-frequency GPS data

In order to evaluate the performance of the method with real data, artificial jumps have been added to 1-second triple-frequency GPS data taken from ftp://cddis.gsfc.nasa.gov/pub/gps/data. In particular, data corresponding to the day 2011-02-28 taken from the station of WTZZ (Wettzell, Germany) are considered. Only satellite PRN1 has triple-frequency GPS data therefore only this satellite is considered. The noise of the pseudoranges in this data set is close to the values assumed in our method. This is 16 cm level for the first one, 17 cm for the second one and 10 cm for the third one. First, our program was used on this data set and no cycle slips were detected. Then, some artificial jumps were added to be sure that the program detects the correct epoch and estimates the correct amplitude, since the epoch and the amplitude of the jumps are known a priori. As it is shown in Table 2, all artificial jumps added in the data set are correctly detected and estimated.

Table 2 Artificial cycle slips in real GPS data

We would like to mention that 30-second triple-frequency GPS data belonging to the satellite PRN25 and acquired from station UNB3 (University of New Brunswick, Canada) are also available in the above cited ftp-server. However, this data set has not been analyzed because it contains strong variations of pseudorange noise (Bakker et al. 2011) which are not expected from future modernized GPS signals.

Conclusions

Tailored linear combinations of GNSS triple-frequency observations are defined to solve cycle slip detection and correction in undifferenced GNSS observations. The method can be applied in real time because it is computationally easy and requires only comparisons between values of two consecutive epochs. The method has been tested on modernized GPS simulated data, showing that all combinations of simultaneous cycle slips in the three carriers can be detected and repaired under the considered hypothesis. Moreover, in the rare event that a false alarm happens, i.e., a cycle slip is detected but is not present in the data, a zero amplitude is always correctly estimated. Furthermore, the method has been tested on 1-second real triple-frequency GPS data with levels of pseudorange noise close to 15 cm for the first and second carrier and close to 10 cm for the third one. All artificial jumps added to real data have been correctly detected and estimated. As for the Galileo satellites, the nominal noise level of the code observations is expected to be lower than that assumed in our method. Consequently, the procedure will be even easier, requiring only a smaller number of combinations.

As to future work, the method will be checked with other programs that deal with the cycle slip problem if available. Similar linear observation combinations could be also used to deal with the problem of integer ambiguity resolution.