Introduction

Precise point positioning (PPP) using ionosphere-free code and phase observations (Zumberge et al. 1997) is able to provide centimeter-level positioning accuracy with a single receiver. However, the ambiguity parameter estimated in the conventional PPP model cannot be resolved to the integer value. In fact, the estimated ambiguity parameter is a combination of the integer ambiguity, the receiver biases, and the satellite biases. This means the integer property of the ambiguity parameter is lost. As a result, fixing the integer ambiguity using the conventional PPP model is not feasible.

Following the investigations on integer ambiguity pseudo-fixing (Gao and Shen 2002) and integer ambiguity resolution with simulated data sets (Wang and Gao 2006, 2007), several PPP integer ambiguity resolution methods have been developed and implemented with real data sets in recent years. Ge et al. (2008) proposed a single-difference between-satellites method characterized by eliminating the receiver biases through a single-differencing. The integer property is recovered by sequentially correcting the satellite wide-lane and narrow-lane fractional-cycle biases (FCBs). Collins (2008) developed a method known as the decoupled clock model and proved that the code biases also contributed to the fractional part of phase ambiguities in PPP. By applying the satellite decoupled clock corrections and estimating the receiver decoupled clock parameters, both the undifferenced integer wide-lane and N 1 ambiguities can be directly estimated. Laurichesse et al. (2008) also developed an integer phase clock model featuring different clock terms for code and phase observations. This model utilizes the wide-lane satellite bias (WSB) corrections to resolve the integer wide-lane ambiguity, whereas the integer N 1 ambiguity is directly estimated.

Although similar positioning performances have been demonstrated with these three methods (Collins et al. 2010; Ge et al. 2008; Geng et al. 2009; Laurichesse et al. 2008), very few efforts have been made to explore the relationship between these methods. Geng et al. (2010) compared the single-difference between-satellites method and the integer phase clock model with a focus on how the receiver and satellite biases are isolated from the phase ambiguity in PPP. But, this contribution is based on specific assumptions. For example, the satellite code biases can be absorbed by the code residual in the network solution; the code observations are not employed in the user solution so that the receiver code biases are ignored. As a result, the effects of satellite and receiver code biases on phase ambiguities in PPP are not taken into consideration. In other words, the method equivalence obtained by Geng et al. (2010) is based on those assumptions about the satellite and receiver code biases.

We aim to prove the equivalence of the three PPP integer ambiguity resolution methods without any assumption made in the previous publications. First, these three methods will be explained using the same notation. Then, a comprehensive comparison is carried out in three criteria: the integer property recovery, the system redundancy, and the necessary corrections through which the method equivalence in the user solution can be obtained.

PPP integer ambiguity resolution methods

Three PPP integer ambiguity resolution methods have been described in literatures using different notations and assumptions. This makes it difficult for readers to understand these methods and to make a theoretical comparison. Therefore, these methods are derived again in this section using a consistent notation system. In the following, we will first present the GPS code and carrier phase observation equations and several linear functions of these observations and then describe different PPP models.

GPS observations and linear functions

For the purpose of this study, the GPS code and phase observations at frequency \(L_{i}\) are written as:

$$P_{i} = \rho + c(dt^{\text{r}} - dt^{\text{s}} \, ) + T + \frac{{f_{1}^{2} }}{{f_{i}^{2} }}I_{1} + b_{Pi}^{\text{r}} - b_{{P_{i} }}^{\text{s}} + \varepsilon_{{P_{i} }}$$
(1)
$$L_{i} = \rho + c(dt^{\text{r}} - dt^{\text{s}} ) + T - \, \frac{{f_{1}^{2} }}{{f_{i}^{2} }}I_{1} \, - \, \lambda_{i} N_{i} \, + b_{{L_{i} }}^{\text{r}} - b_{{L_{i} }}^{\text{s}} + \varepsilon_{{L_{i} }}$$
(2)

where the frequency index \(i\) equals 1 and 2. The carrier frequencies are \(f_{1} = 154\,f_{0}\), \(f_{2} = 120f_{0}\), with \(f_{0} = 10.23\,{\text{MHz}}\). The symbol \(P_{i}\) denotes the raw code observation, \(L_{i}\) is the raw phase observation, \(\rho\) is the geometric distance between receiver and satellite, \(c\) is the speed of light in vacuum, \(dt^{\text{r}}\) is the receiver clock error, \(dt^{\text{s}}\) is the satellite clock error, \(T\) is the tropospheric delay, \(I_{1}\) is the first-order ionospheric delay on frequency \(L_{1}\), \(\lambda_{i}\) is the wavelength of frequency \(L_{i}\), \(N_{i}\) is the integer ambiguity, \(b_{{P_{i} }}^{\text{r}}\) is the receiver code hardware delay (bias), \(b_{{L_{i} }}^{\text{r}}\) is the receiver phase hardware delay (bias), \(b_{{P_{i} }}^{\text{s}}\) is the satellite code hardware delay (bias), \(b_{{L_{i} }}^{\text{s}}\) is the satellite phase hardware delay (bias), \(\varepsilon_{{P_{i} }}\) contains code multipath and code noise, and \(\varepsilon_{{L_{i} }}\) contains phase multipath and phase noise of frequency \(L_{i}\). The b-terms are often referred to as biases instead of the more narrow designation of hardware delays.

The general linear functions of the observations are \(P_{\text{LC}} { = }\alpha P_{1} { + }\beta P_{2}\) and \(L_{\text{LC}} { = }\alpha L_{1} { + }\beta L_{2}\), where \(\alpha\) and \(\beta\) are combination coefficients. Using \(\alpha_{\text{IF}} = f_{1}^{2} /(f_{1}^{2} - f_{2}^{2} )\) and \(\beta_{\text{IF}} = - f_{2}^{2} /(f_{1}^{2} - f_{2}^{2} )\), we obtain the ionosphere-free (IF) code function \(P_{\text{IF}}\) and phase function \(L_{\text{IF}}\),

$$\begin{aligned} P_{\text{IF}} & = \alpha_{\text{IF}} P_{1} + \beta_{\text{IF}} P_{2} \\ & = \rho + (cdt^{\text{r}} + b_{{P_{\text{IF}} }}^{\text{r}} ) - (cdt^{\text{s}} + b_{{P_{\text{IF}} }}^{\text{s}} ) + T + \varepsilon_{{P_{\text{IF}} }} \\ \end{aligned}$$
(3)
$$\begin{aligned} L_{\text{IF}} & = \alpha_{\text{IF}} L_{1} + \beta_{\text{IF}} L_{2} \\ & = \rho + (cdt^{\text{r}} + b_{{L_{\text{IF}} }}^{\text{r}} ) - (cdt^{\text{s}} + b_{{L_{\text{IF}} }}^{\text{s}} ) + T - \lambda_{\text{IF}} N_{\text{IF}} + \varepsilon_{{L_{\text{IF}} }} \\ \end{aligned}$$
(4)
$$cdt_{{P_{{_{\text{IF}} }} }}^{\text{r}} = cdt^{\text{r}} + b_{{P_{{_{\text{IF}} }} }}^{\text{r}}$$
(5)
$$cdt_{{P_{{_{\text{IF}} }} }}^{\text{s}} = cdt^{\text{s}} + b_{{P_{{_{\text{IF}} }} }}^{\text{s}}$$
(6)
$$cdt_{{L_{\text{IF}} }}^{\text{r}} = cdt^{\text{r}} + b_{{L_{\text{IF}} }}^{\text{r}}$$
(7)
$$cdt_{{L_{\text{IF}} }}^{\text{s}} = cdt^{\text{s}} + b_{{L_{\text{IF}} }}^{\text{s}}$$
(8)
$$b_{{P_{\text{IF}} }}^{\text{r}} { = }\alpha_{\text{IF}} b_{{P_{1} }}^{\text{r}} + \beta_{\text{IF}} b_{{P_{2} }}^{\text{r}}$$
(9)
$$b_{{P_{\text{IF}} }}^{\text{s}} { = }\alpha_{\text{IF}} b_{{P_{1} }}^{\text{s}} + \beta_{\text{IF}} b_{{P_{2} }}^{\text{s}}$$
(10)
$$b_{{L_{\text{IF}} }}^{\text{r}} { = }\alpha_{\text{IF}} b_{{L_{1} }}^{\text{r}} + \beta_{\text{IF}} b_{{L_{2} }}^{\text{r}}$$
(11)
$$b_{{L_{\text{IF}} }}^{\text{s}} { = }\alpha_{\text{IF}} b_{{L_{1} }}^{\text{s}} + \beta_{\text{IF}} b_{{L_{2} }}^{\text{s}}$$
(12)
$$\lambda_{\text{IF}} = \frac{{2cf_{0} }}{{f_{1}^{2} - f_{2}^{2} }}$$
(13)
$$N_{\text{IF}} = 17N_{1} + 60N_{\text{WL}}$$
(14)

Regarding the terms defined in (5) to (8), the following terminology is found in the literature: \(cdt_{{P_{{_{\text{IF}} }} }}^{\text{r}}\) (receiver code clock error), \(cdt_{{P_{{_{\text{IF}} }} }}^{\text{s}}\) (satellite code clock error), \(cdt_{{L_{\text{IF}} }}^{\text{r}}\) (receiver phase clock error), and \(cdt_{{L_{\text{IF}} }}^{\text{s}}\) (satellite phase clock error). These “clock” terms are a function of the actual receiver clock error \(dt^{\text{r}}\), satellite clock error \(dt^{\text{s}}\), receiver code and phase biases \(b_{{P_{\text{IF}} }}^{\text{r}} ,b_{{L_{\text{IF}} }}^{\text{r}}\), and satellite code and phase biases \(b_{{P_{IF} }}^{s} ,b_{{L_{IF} }}^{s}\). The casual reader might mistakenly think that there are two receiver clock errors and two satellite clock errors. This is not the case since the signals at the receiver and at the satellite are generated by a single receiver clock and a single satellite clock, respectively. Equations (13) and (14) follow straightforwardly from the definition of \(P_{\text{IF}}\) and \(L_{\text{IF}}\). The ionosphere-free wavelength is \(\lambda_{\text{IF}} = 6.3\,{\text{mm}}\), and \(N_{\text{IF}}\) is called the ionosphere-free ambiguity. The wide-lane ambiguity \(N_{\text{WL}}\) equals \(N_{1} - N_{2}\).

The wide-lane (WL) phase combination \(L_{\text{WL}}\) with coefficients \(\alpha_{\text{WL}} = f_{1} /(f_{1} - f_{2} )\) and \(\beta_{\text{WL}} = - f_{2} /(f_{1} - f_{2} )\) is

$$\begin{aligned} L_{\text{WL}} & = \alpha_{\text{WL}} L_{1} + \beta_{\text{WL}} L_{2} \\ & = \rho + c(dt^{\text{r}} - dt^{\text{s}} ) + T + \frac{{f_{1}^{2} }}{{f_{2}^{2} }}I_{1} - \lambda_{\text{WL}} N_{\text{WL}} + (\alpha_{\text{WL}} b_{{L_{1} }}^{\text{r}} + \beta_{\text{WL}} b_{{L_{2} }}^{\text{r}} ) - (\alpha_{\text{WL}} b_{{L_{1} }}^{\text{s}} + \beta_{\text{WL}} b_{{L_{2} }}^{\text{s}} ) + \varepsilon_{{L_{\text{WL}} }} \\ \end{aligned}$$
(15)

Similarly, the narrow-lane (NL) code combination \(P_{\text{NL}}\) is

$$\begin{aligned} P_{\text{NL}} & = \alpha_{\text{NL}} P_{1} + \beta_{\text{NL}} P_{2} \\ & = \rho + c(dt^{\text{r}} - dt^{\text{s}} ) + T + \frac{{f_{1}^{2} }}{{f_{2}^{2} }}I_{1} + (\alpha_{\text{NL}} b_{{P_{1} }}^{\text{r}} + \beta_{\text{NL}} b_{{P_{2} }}^{\text{r}} ) - (\alpha_{\text{NL}} b_{{P_{1} }}^{\text{s}} + \beta_{\text{NL}} b_{{P_{2} }}^{\text{s}} ) + \varepsilon_{{P_{\text{NL}} }} \\ \end{aligned}$$
(16)

with \(\alpha_{\text{NL}} = f_{1} /(f_{1} + f_{2} )\) and \(\beta_{\text{NL}} = f_{2} /(f_{1} + f_{2} )\).

Two additional ionosphere-free functions are needed. The first function is the difference in the carrier phase wide-lane function and the pseudo-range narrow-lane functions, which was first proposed by Hatch (1982). This linear combination was also mentioned in Melbourne (1985) and Wübbena (1985) and called the Melbourne–Wübbena (MW) function in most literatures. For better understanding, we use the term “MW function” in this paper. The MW function is

$$A_{\text{MW}} = L_{\text{WL}} - P_{\text{NL}} = - \lambda_{\text{WL}} N_{\text{WL}} + (b_{{A_{{_{\text{MW}} }} }}^{\text{r}} - b_{{A_{\text{MW}} }}^{\text{s}} ) + \varepsilon_{{A_{\text{MW}} }}$$
(17)
$$b_{{A_{\text{MW}} }}^{\text{r}} { = (}\alpha_{\text{WL}} b_{{L_{1} }}^{\text{r}} + \beta_{\text{WL}} b_{{L_{2} }}^{\text{r}} ) - (\alpha_{\text{NL}} b_{{P_{1} }}^{\text{r}} + \beta_{\text{NL}} b_{{P_{2} }}^{\text{r}} )$$
(18)
$$b_{{A_{\text{MW}} }}^{\text{s}} { = (}\alpha_{\text{WL}} b_{{L_{1} }}^{\text{s}} + \beta_{\text{WL}} b_{{L_{2} }}^{\text{s}} ) + (\alpha_{\text{NL}} b_{{P_{1} }}^{\text{s}} + \beta_{\text{NL}} b_{{P_{2} }}^{\text{s}} )$$
(19)

The second function is the difference of \(L_{\text{IF}}\) and \(P_{\text{IF}}\),

$$A_{\text{IF}} = - \lambda_{\text{IF}} \Updelta N_{\text{IF}} + (b_{{L_{\text{IF}} }}^{\text{r}} - b_{{P_{\text{IF}} }}^{\text{r}} ) - (b_{{L_{\text{IF}} }}^{\text{s}} - b_{{P_{\text{IF}} }}^{\text{s}} ) + \varepsilon_{{A_{\text{IF}} }}$$
(20)

The wide-lane receiver bias (WRB) \(b_{{A_{\text{MW}} }}^{\text{r}}\) of (18) is a function of the receiver biases, whereas the wide-lane satellite bias \(b_{{A_{\text{MW}} }}^{\text{s}}\) of (19) refers to the satellite biases.

The above expressions represent well-known functions of the basic code and phase equations. No assumptions about the receiver and satellite code and phase biases have been made in these expressions.

Traditional PPP model

The traditional PPP model of Zumberge et al. (1997) uses (3) and (4). For this discussion, we use (5) and (6) in (3) and (4), resulting in the model

$$P_{\text{IF}} = \rho + cdt_{{P_{\text{IF}} }}^{\text{r}} - cdt_{{P_{\text{IF}} }}^{\text{s}} + T + \varepsilon_{{P_{\text{IF}} }}$$
(21)
$$L_{\text{IF}} = \rho + cdt_{{P_{\text{IF}} }}^{\text{r}} - cdt_{{P_{\text{IF}} }}^{\text{s}} + T - \lambda_{\text{IF}} N_{\text{IF}} + (b_{{L_{\text{IF}} }}^{\text{r}} - b_{{P_{\text{IF}} }}^{\text{r}} ) - (b_{{L_{\text{IF}} }}^{\text{s}} - b_{{P_{\text{IF}} }}^{\text{s}} ) + \varepsilon_{{L_{\text{IF}} }}$$
(22)

It can be seen that the ionosphere-free code and phase functions contain the actual clock errors and the code and phase biases. The satellite code clock \(cdt_{{P_{{_{\text{IF}} }} }}^{\text{s}}\) is available from the International GNSS Service (IGS) by means of the precise clock products (Kouba 2009; Kouba and Héroux 2001; Dow et al. 2009), and the receiver code clock \(cdt_{{P_{\text{IF}} }}^{\text{r}}\) is to be estimated.

If the satellite code clock \(cdt_{{P_{{_{\text{IF}} }} }}^{\text{s}}\) is applied to the phase observation (22) and the receiver code clock \(cdt_{{P_{\text{IF}} }}^{\text{r}}\) is estimated together with the troposphere and ambiguity parameters, then the estimated ambiguity parameter \(- \lambda_{\text{IF}} N_{\text{IF}} + (b_{{L_{\text{IF}} }}^{\text{r}} - b_{{P_{\text{IF}} }}^{\text{r}} ) - (b_{{L_{\text{IF}} }}^{\text{s}} - b_{{P_{\text{IF}} }}^{\text{s}} )\) is a linear function of the integer ambiguity and the code and phase biases of the receiver and the satellite. Therefore, the estimated ambiguity parameter will be real-valued. As a result, resolving the integer ambiguity using (21) and (22) is not feasible.

From the user point of view, a tracking network is required that provides the satellite code clock corrections \(cdt_{{P_{{_{\text{IF}} }} }}^{\text{s}}\). Considering one epoch, suppose the user observes n satellites. The number of observations is 2n in (21) and (22). The number of unknown parameters is 3 + 1 + 1 + n, which includes three coordinates, one receiver code clock \(cdt_{{P_{\text{IF}} }}^{\text{r}}\), one troposphere delay, and n ionosphere-free ambiguities \(- \lambda_{\text{IF}} N_{\text{IF}} + (b_{{L_{\text{IF}} }}^{\text{r}} - b_{{P_{\text{IF}} }}^{\text{r}} ) - (b_{{L_{\text{IF}} }}^{\text{s}} - b_{{P_{\text{IF}} }}^{\text{s}} )\). The degree of freedom is 2n − (3 + 1 + 1 + n) = n − 5, which means a minimum of five satellites are required using the traditional PPP model.

Decoupled clock model

Unlike the traditional PPP model which applies the satellite code clock \(cdt_{{P_{{_{\text{IF}} }} }}^{\text{s}}\) for both the code and phase observations, one method featuring separate satellite code clock and satellite phase clock has been proposed by Collins (2008). As the satellite clocks are decoupled for code and phase observations, this model is called the decoupled clock model.

By substituting (5) and (6) into (3), and (7), (8), and (14) into (4), the ionosphere-free functions are transformed to

$$P_{\text{IF}} = \rho + (cdt_{{P_{\text{IF}} }}^{\text{r}} - cdt_{{P_{\text{IF}} }}^{\text{s}} ) + T + \varepsilon_{{P_{\text{IF}} }}$$
(23)
$$L_{\text{IF}} = \rho + (cdt_{{L_{\text{IF}} }}^{\text{r}} - cdt_{{L_{\text{IF}} }}^{\text{s}} ) + T - \lambda_{\text{IF}} (17N_{1} + 60N_{\text{WL}} ) + \varepsilon_{{L_{\text{IF}} }}$$
(24)

The decoupled clock model consists of three expressions (23), (24), and

$$A_{\text{MW}} = (b_{{A_{{_{\text{MW}} }} }}^{\text{r}} - b_{{A_{\text{MW}} }}^{\text{s}} ) - \lambda_{\text{WL}} N_{\text{WL}} + \varepsilon_{{A_{\text{MW}} }}$$
(25)

In this model the terms (\(cdt_{{P_{\text{IF}} }}^{\text{s}} ,cdt_{{L_{\text{IF}} }}^{\text{s}} ,b_{{A_{\text{MW}} }}^{\text{s}}\)) and (\(cdt_{{P_{\text{IF}} }}^{\text{r}} ,cdt_{{L_{\text{IF}} }}^{\text{r}} ,b_{{A_{\text{MW}} }}^{\text{r}}\)) are called the satellite and receiver decoupled clock parameters, respectively.

Network solution

If all parameters, i.e., the coordinates, the decoupled clocks, the troposphere delay, and the integer ambiguities, were to be estimated using the three model equations, the number of unknown parameters would be greater than the number of observations, resulting in a singular solution. The solution to the singularity problem is to fix a minimum number of parameters. This technique is called in adjustments imposing minimal constraints or defining the datum.

First, we choose a reference receiver and set its \(cdt_{{P_{\text{IF}} }}^{\text{r}}\) and \(cdt_{{L_{\text{IF}} }}^{\text{r}}\), and \(b_{{A_{\text{MW}} }}^{\text{r}}\) parameters to zero. This defines the clock datum for the network. Second, we set all \(N_{1}\) and \(N_{\text{WL}}\) ambiguities of the observed satellites at the reference receiver in (24) and (25) to arbitrary integer values. This defines the ambiguity datum for the reference receiver. Third, we add a non-reference receiver in the network and choose a reference satellite for this receiver. Two ambiguities, \(N_{1}\) and \(N_{\text{WL}}\) in (24) and (25), of the reference satellite are set to arbitrary integer values. In this case, the other ambiguities for this non-reference receiver are estimated with respect to the \(N_{1}\) and \(N_{\text{WL}}\) ambiguities of the chosen reference satellite. This defines the ambiguity datum for the chosen non-reference receiver. Forth, we repeat the third step for all other non-reference receivers in the network. It should be noted that the reference satellite chosen for the non-reference receiver in the third and forth steps could be different. In other words, each receiver has its own ambiguity datum, and there is no relationship between the ambiguity datum for each receiver in the network.

By implementing the above procedure for defining the clock datum and the ambiguity datum in the network, we can resolve the datum defect implied in (23) to (25). Suppose there are m receivers observing n common satellites. There are 3n observations per receiver and 3mn observations for the network. For the reference receiver, the number of unknown parameters is 3 + 1 + 0 + 3n, which includes three coordinates, one troposphere delay, 0 receiver decoupled clocks, and 3n satellite decoupled clocks. All of the 2n ambiguities of n observed satellites are fixed to define the ambiguity datum at the reference receiver. For the remaining m − 1 receivers that are not used to define the clock datum, the number of unknown parameters is 3(m − 1) + (m − 1) + 3(m − 1) + 3n + 2(n − 1)(m − 1), which includes 3(m − 1) coordinates, (m − 1) troposphere delays, 3(m − 1) receiver decoupled clocks, 3n satellite decoupled clocks, and 2(n − 1)(m − 1) ambiguities. Note that we estimate 2(n − 1)(m − 1) ambiguities for n satellites because 2(m − 1) ambiguities are fixed to define the ambiguity datum at the m − 1 receivers. Since the n satellites are observed by all receivers, only 3n satellite decoupled clocks should be estimated in the network solution. Therefore, for a network consisting of one reference receiver and m − 1 non-reference receivers, the number of unknown parameters is 3m + m + 3(m − 1) + 3n + 2(n − 1)(m − 1). For example, if m = 4, the number of observations is 3 × 4 × n = 12n and the number of unknown parameters is 12 + 4 + 9 + 3n + 6(n − 1) = 9n + 19. The corresponding degree of freedom is 3n − 19. This means that in order to resolve the datum defect issue, at least seven common satellites are required in the network solution. When the number of receivers increases, the minimal number of common satellites decreases. More receivers and more common satellites will further increase the redundancy in the network solution.

User solution

From the user point of view, a tracking network is required that provides the satellite decoupled clocks (\(cdt_{{P_{\text{IF}} }}^{\text{s}} ,cdt_{{L_{\text{IF}} }}^{\text{s}} ,b_{{A_{\text{MW}} }}^{\text{s}}\)) resulting from the network solution. The clock datum defined by the reference receiver can be retained, which means no additional clock datum is required in the user solution. However, the ambiguity datum must be defined by choosing one reference satellite and setting the \(N_{1}\) and \(N_{\text{WL}}\) ambiguities of the reference satellite to arbitrary integer values. It should be noted that the reference satellite in the user solution can differ from those chosen in the network solution. In fact, each receiver should define its own ambiguity datum. The integer cycle ambiguity datum difference will be absorbed by the receiver decoupled clock parameters as pointed out in Shi and Gao (2010) and as can also be seen from (24) and (25). From this perspective, the estimated receiver decoupled clocks become relative clocks with respect to the ambiguity datum.

By applying the satellite decoupled clocks (\(cdt_{{P_{\text{IF}} }}^{\text{s}} ,cdt_{{L_{\text{IF}} }}^{\text{s}} ,b_{{A_{\text{MW}} }}^{\text{s}}\)) and setting the ambiguity datum in (23) to (25), the unknown parameters become estimable. More specifically, the integer wide-lane and \(N_{1}\) ambiguities can be directly estimated in the function model.

Method summary

In summary, the satellite decoupled clocks (\(cdt_{{P_{\text{IF}} }}^{\text{s}} ,cdt_{{L_{\text{IF}} }}^{\text{s}} ,b_{{A_{\text{MW}} }}^{\text{s}}\)) are required to remove the satellite clock and bias errors in (23) to (25). By defining the ambiguity datum and estimating the receiver decoupled clocks (\(cdt_{{P_{\text{IF}} }}^{\text{r}} ,cdt_{{L_{\text{IF}} }}^{\text{r}} ,b_{{A_{\text{MW}} }}^{\text{r}}\)) containing the receiver clock and bias errors, the integer wide-lane and \(N_{1}\) ambiguities can be directly estimated in the user solution.

Suppose n satellites are observed. The number of observations is 3n in (23) to (25). The ambiguity datum is defined by fixing the wide-lane and \(N_{1}\) ambiguities of the reference satellite to arbitrary integer values. The number of unknown parameters is 3 + 3 + 1 + 2(n − 1), which includes three coordinates, three receiver decoupled clocks, one troposphere delay, and 2(n − 1) wide-lane and \(N_{1}\) ambiguities. The degree of freedom is 3n − (3 + 3 + 1 + 2(n − 1)) = n − 5, which means a minimum of five satellites are required to apply the decoupled clock model.

Single-difference between-satellites method

The function model consists of the ionosphere-free functions (21) and (22), plus the MW function (17). A sequential solution is adopted. The wide-lane ambiguity is fixed first because its long wavelength of 86.9 cm makes resolution feasible for a very short period of observations. The fixed wide-lane ambiguities are then treated as known integer values in the subsequent \(N_{1}\) ambiguity resolution.

Network solution

Both the integer wide-lane and \(N_{1}\) ambiguities can be obtained by rounding the real-valued wide-lane and \(N_{1}\) ambiguities in the network solution. The corresponding products are the satellite wide-lane and \(N_{1}\) FCB corrections. Both corrections are computed as the differences of the real-valued and the integer ambiguities.

Wide-lane ambiguity fixing

The development starts with the MW function (17) and applies it to the between-satellite single-difference,

$$\Updelta A_{\text{MW}}^{j,i} = A_{\text{MW}}^{j} - A_{\text{MW}}^{i} = - \lambda_{\text{WL}} \Updelta N_{\text{WL}}^{j,i} - \Updelta b_{{A_{\text{MW}} }}^{{{\text{s}}\,j,i}} + \varepsilon_{{\Updelta A_{\text{MW}}^{j,i} }}$$
(26)

where the double superscripts indicate the differencing operation. The differencing has canceled the receiver wide-lane biases \(b_{{A_{\text{MW}} }}^{\text{r}}\) seen in (18). The satellite wide-lane biases have been found to be quite stable over several consecutive days (Wang and Gao 2007; Ge et al. 2008). As a result, epoch-averaging can be applied to determine the satellite wide-lane FCB correction. A certain period of time is required to allow the single-differenced MW function (26) to reach convergence. Then, the integer wide-lane ambiguity can be obtained by rounding the real-valued wide-lane ambiguity to its nearest integer value as

$$\overline{\Updelta N}_{\text{WL}}^{j,i} = - \left\langle {\frac{{\Updelta A_{\text{MW}}^{j,i} }}{{\lambda_{\text{WL}} }}} \right\rangle$$
(27)

where \(\left\langle * \right\rangle\) denotes rounding of the real value to the nearest integer value. The satellite wide-lane FCB correction in unit of meters is calculated as

$$\Updelta b_{{A_{\text{MW}} }}^{{{\text{s}}\,j,i}} = - \Updelta A_{\text{MW}}^{j,i} - \lambda_{\text{WL}} \overline{\Updelta N}_{\text{WL}}^{j,i}$$
(28)

This equation is used to determine the satellite wide-lane FCB corrections at a receiver. By averaging the satellite wide-lane FCB corrections over the receivers in the network, a correction with high precision can be obtained. This process can be repeated for singe-difference observations of other satellite phase pairs, resulting in a unique set of satellite wide-lane FCB corrections to be broadcast to the users.

\(N_{1}\) ambiguity fixing

The first step in resolving the \(N_{1}\) ambiguity is to apply (14) to the between-satellite single-difference,

$$\lambda_{\text{IF}} \Updelta N_{\text{IF}}^{j,i} = 17\lambda_{\text{IF}} \Updelta N_{1}^{j,i} + 60\lambda_{\text{IF}} \Updelta N_{\text{WL}}^{j,i}$$
(29)

where \(\Updelta N_{\text{IF}}^{j,i} = N_{\text{IF}}^{j} - N_{\text{IF}}^{i}\), \(N_{\text{IF}}^{i}\) and \(N_{\text{IF}}^{j}\) are the estimated ionosphere-free integer ambiguities in (22). Next, we apply (20) to single-differences, giving

$$\Updelta A_{\text{IF}}^{j,i} = - \lambda_{\text{IF}} \Updelta N_{\text{IF}}^{j,i} - (\Updelta b_{{L_{\text{IF}} }}^{{{\text{s}}\,j,i}} - \Updelta b_{{P_{\text{IF}} }}^{{{\text{s}}\,j,i}} ) + \varepsilon_{{\Updelta L_{\text{IF}} }}$$
(30)

and note, again, that the receiver biases have been canceled. Substituting (29) into (30) and rearranging the equation leads to

$$\Updelta A_{\text{IF}}^{j,i} + 60\lambda_{\text{IF}} \Updelta N_{\text{WL}}^{j,i} = - 17\lambda_{\text{IF}} \Updelta N_{1}^{j,i} - (\Updelta b_{{L_{\text{IF}} }}^{{{\text{s}}\,j,i}} - \Updelta b_{{P_{\text{IF}} }}^{{{\text{s}}\,j,i}} ) + \varepsilon_{{\Updelta L_{\text{IF}} }}$$
(31)

The left side is computable since \(\Updelta N_{\text{WL}}^{j,i}\) is known from (27). Denoting the left side by \(\Updelta A_{1}^{j,i}\) and labeling the difference of the single-difference phase and code biases by \(\Updelta b_{{A_{1} }}^{{{\text{s}}\,j,i}}\), we obtain

$$\Updelta A_{1}^{j,i} = - 17\lambda_{\text{IF}} \Updelta N_{1}^{j,i} - \Updelta b_{{A_{1} }}^{{{\text{s}}\,j,i}} + \varepsilon_{{\Updelta L_{\text{IF}} }}$$
(32)
$$\Updelta b_{{A_{1} }}^{{{\text{s}}\,j,i}} = \Updelta b_{{L_{\text{IF}} }}^{{{\text{s}}\,j,i}} - \Updelta b_{{P_{\text{IF}} }}^{{{\text{s}}\,j,i}}$$
(33)

The integer single-differenced ambiguity \(\Updelta N_{1}^{j,i}\) is contaminated by \(\Updelta b_{{A_{1} }}^{{{\text{s}}\,j,i}}\). Therefore, the determination of this single-differenced bias term is the key to resolving the integer single-differenced ambiguity \(\Updelta N_{1}^{j,i}\).

Similar to the procedure used to determine the single-differenced satellite wide-lane FCB corrections, a certain period of time is needed to allow the real-valued single-differenced ambiguity (32) to reach convergence. Then, the integer ambiguity \(\Updelta N_{1}^{j,i}\) can be obtained by rounding as follows:

$$\overline{\Updelta N}_{1}^{j,i} = - \left\langle {\frac{{\Updelta A_{1}^{j,i} }}{{17\lambda_{3} }}} \right\rangle ,$$
(34)

and the single-differenced satellite \(N_{1}\) FCB corrections in unit of meters can be calculated, using the just computed \(\overline{\Updelta N}_{1}^{j,i}\), as

$$\Updelta b_{{A_{1} }}^{{{\text{s}}\,j,i}} = - \Updelta A_{1}^{j,i} - 17\lambda_{IF} \overline{\Updelta N}_{1}^{j,i}$$
(35)

Equation (35) can be used to determine the satellite \(N_{1}\) FCB correction \(\Updelta b_{{A_{1} }}^{{{\text{s}}\,j,i}}\) at a receiver. By averaging the satellite \(N_{1}\) FCB corrections from multiple receivers in the network, a precise value can be obtained. Applying this process to other between-satellite differences, a set of the satellite \(N_{1}\) FCB corrections with high precision can be obtained and then broadcast to the users.

User solution

By applying the satellite wide-lane and \(N_{1}\) FCB corrections determined in the network solution to remove the satellite biases and a single-difference between-satellites operator to remove the receiver biases, the integer property of the wide-lane and \(N_{1}\) ambiguities in the user solution can be recovered.

Wide-lane ambiguity fixing

At the user site, a single-difference between the same satellite pair \((i,j)\) as in (26) is also performed,

$$\Updelta A_{{{\text{MW}}\_u}}^{j,i} = A_{{{\text{MW}}\_u}}^{j} - A_{{{\text{MW}}\_u}}^{i} = - \lambda_{\text{WL}} \Updelta N_{{{\text{WL}}\_u}}^{j,i} - \Updelta b_{{A_{\text{MW}} }}^{{{\text{s}}\,j,i}} + \varepsilon_{{A_{{{\text{MW}}\_u}}^{j,i} }}$$
(36)

where all terms have the same definition as used in (26), but now for the user solution. The satellite wide-lane FCB corrections \(\Updelta b_{{A_{\text{MW}} }}^{{{\text{s}}\,j,i}}\) of (28) determined in the network solution are applied to the single-differenced MW combination, giving

$$\Updelta A_{{{\text{MW}}\_u}}^{j,i} + \Updelta b_{{A_{\text{MW}} }}^{{{\text{s}}\,j,i}} = - \lambda_{\text{WL}} \Updelta N_{{{\text{WL}}\_u}}^{j,i}$$
(37)

It is thus clear that by applying the satellite wide-lane FCB correction \(\Updelta b_{{A_{\text{MW}} }}^{{{\text{s}}\,j,i}}\) determined in the network solution, the integer property of the single-differenced wide-lane ambiguity \(\Updelta N_{{{\text{WL}}\_u}}^{j,i}\) in the user solution can be recovered.

\(N_{1}\) ambiguity fixing

At the user site, the single-differencing between the same satellite pair \((i,j)\) as in (32) is applied as

$$\Updelta A_{1\_u}^{j,i} = - 17\lambda_{IF} \Updelta N_{1\_u}^{j,i} - \Updelta b_{{A_{1} }}^{{{\text{s}}\,j,i}} + \varepsilon_{{L_{\text{IF}} \_u}}$$
(38)

where all terms have the same meaning as used in (32), but now for the user solution. The satellite \(N_{1}\) FCB corrections \(\Updelta b_{{A_{1} }}^{{{\text{s}}\,j,i}}\) of (35) determined in the network solution are applied to (38), giving

$$\Updelta A_{1\_u}^{j,i} + \Updelta b_{{A_{1} }}^{{{\text{s}}\,j,i}} = - 17\lambda_{\text{IF}} \Updelta N_{1\_u}^{j,i}$$
(39)

It is clear that by applying the satellite \(N_{1}\) FCB corrections \(\Updelta b_{{A_{1} }}^{{{\text{s}}\,j,i}}\) determined in the network solution, the integer property of the single-differenced \(N_{1}\) ambiguity \(\Updelta N_{1\_u}^{j,i}\) can be recovered from (39).

Method summary

In summary, the IGS satellite code clock \(cdt_{{P_{\text{IF}} }}^{\text{s}}\) is required to remove the satellite clock and code bias errors in (21) and (22). The estimated ambiguity parameter in (22) is the real-valued ionosphere-free ambiguity. By using a single-differencing between-satellites operator of (36) and applying the single-differenced wide-lane FCB corrections of (28), the integer property of the wide-lane ambiguities can be recovered in (37). After the integer wide-lane ambiguities are obtained, the real-valued \(N_{1}\) ambiguities can be computed from the real-valued ionosphere-free ambiguities using (31). By using the single-differencing between-satellites operator of (38) and applying the single-differenced \(N_{1}\) FCB corrections of (35), the integer property of the \(N_{1}\) ambiguities can be recovered in (39). Once the single-differenced integer wide-lane and \(N_{1}\) ambiguities are obtained in (37) and (39), the single-differenced integer ionosphere-free ambiguities can be reconstructed in (29). By setting the single-differenced integer ionosphere-free ambiguity of the reference satellite to arbitrary integer value, the undifferenced integer ionosphere-free ambiguity can be obtained.

Suppose n satellites are observed. The number of observations is 2n in (21) and (22). One reference satellite is required for single-differencing of the wide-lane and \(N_{1}\) ambiguities. The number of unknown parameters is 3 + 1 + 1 + n, which includes three coordinates, one receiver code clock, one troposphere delay, and n ionosphere-free ambiguities. The degree of freedom is 2n − (3 + 1 + 1 + n) = n − 5, which means a minimum of five satellites are required to apply the single-difference between-satellites method.

Integer phase clock model

The integer phase clock model proposed by Laurichesse et al. (2008) consists of the ionosphere-free functions (21), (22), and the MW function (17). In addition to the IGS satellite code clock for the code observation in (21), another satellite phase clock is required for the phase observation in (22). As the usage of the satellite phase clock is for the integer \(N_{1}\) ambiguity resolution, this method is called the integer phase clock model.

Network solution

The wide-lane ambiguity resolution in the network solution is achieved by rounding the MW function (17). The by-product is the wide-lane satellite bias as the fractional part of MW function. On the other hand, the integer \(N_{1}\) ambiguities are estimated using (22) with another by-product of the satellite phase clock.

Wide-lane ambiguity fixing

The determination of the integer wide-lane ambiguity begins with the MW function (17), and the integer wide-lane ambiguity is computed by means of rounding. Similar to the clock datum definition in the decoupled clock model, a reference receiver is chosen and its wide-lane receiver bias \(b_{{A_{{_{\text{MW}} }} }}^{\text{r}}\) is set to zero. Then, the integer part of the MW function (17) is attributed to the integer wide-lane ambiguity as

$$\overline{N}_{\text{WL}} = - \left\langle {\frac{{A_{\text{MW}} }}{{\lambda_{\text{WL}} }}} \right\rangle ,$$
(40)

and the fractional part is attributed to the WSB as

$$b_{{A_{\text{MW}} }}^{\text{s}} = - A_{\text{MW}} - \lambda_{\text{WL}} \overline{N}_{\text{WL}}$$
(41)

The computed WSB is used to calculate the other WRBs in the network solution. Eventually, a set of WSB \(b_{{A_{\text{MW}} }}^{\text{s}}\) are determined in the network solution and broadcast to the users.

\(N_{1}\) ambiguity fixing

The ionosphere-free code and phase observations (21) and (22) are involved in resolving the integer \(N_{1}\) ambiguity. We substitute (14) into (22) in order to replace the ionosphere-free ambiguity with \(N_{1}\) and \(N_{\text{WL}}\). Since the wide-lane ambiguities \(N_{\text{WL}}\) have already been fixed, it can be moved to the left side. Moving the geocentric satellite distance and the tropospheric term also to the left results in the rearrangement of (22) as

$$L_{\text{IF}} - 60\lambda_{\text{IF}} N_{\text{WL}} - \rho + T = cdt_{{L_{\text{IF}} }}^{\text{r}} - cdt_{{L_{\text{IF}} }}^{\text{s}} - 17\lambda_{\text{IF}} N_{1} + \varepsilon_{{L_{\text{IF}} }}$$
(42)

Calling the left side \(Q_{\text{IF}}\), we obtain

$$Q_{\text{IF}} = (cdt_{{L_{\text{IF}} }}^{\text{r}} - cdt_{{L_{\text{IF}} }}^{\text{s}} ) - 17\lambda_{\text{IF}} N_{1}$$
(43)

where \(Q_{\text{IF}}\) can be calculated since all terms on the left side of (42) are known.

The determination of satellite phase clocks \(cdt_{{L_{\text{IF}} }}^{\text{s}}\) in (43) can be explained as follows. First, we use the reference receiver chosen in “Wide-lane ambiguity fixing” section and set its \(cdt_{{L_{\text{IF}} }}^{\text{r}}\) to zero. Second, the ambiguity datum at the reference receiver is defined by setting all \(N_{1}\) ambiguities of the observed satellites to arbitrary integer values. Note that since the wide-lane ambiguities have already been fixed, it is not necessary to fix the wide-lane ambiguities as the ambiguity datum. Third, initial estimates of the satellite integer phase clocks \(cdt_{{L_{\text{IF}} }}^{\text{s}}\) are derived as the fractional parts of \(- Q_{\text{IF}} - 17\lambda_{\text{IF}} N_{1}\) in (43). Only the satellite phase clocks for observed satellites are determined in this step. Forth, a new receiver is added. With the initial estimates of satellite phase clocks \(cdt_{{L_{\text{IF}} }}^{\text{s}}\) obtained in the third step, the difference \(Q_{\text{IF}} + cdt_{{L_{\text{IF}} }}^{\text{s}}\) can be calculated. Applying rounding as done for other methods, the integer part is attributed to the \(N_{1}\) ambiguity and the fractional part is the receiver phase clock \(cdt_{{L_{\text{IF}} }}^{\text{r}}\). Moreover, the satellite phase clocks \(cdt_{{L_{\text{IF}} }}^{\text{s}}\) for those satellites which are not observed in the third step can also be obtained once the integer \(N_{1}\) ambiguity and the receiver phase clock \(cdt_{{L_{\text{IF}} }}^{\text{r}}\) are known. The newly calculated satellite phase clocks \(cdt_{{L_{\text{IF}} }}^{\text{s}}\) are then added to those obtained in the third step. Fifth, another receiver is added, and the fourth step is repeated until a complete set of satellite phase clocks \(cdt_{{L_{\text{IF}} }}^{\text{s}}\) are obtained.

Following the above procedure, the integer \(N_{1}\) ambiguities can be obtained. In addition, a set of satellite phase clocks \(cdt_{{L_{\text{IF}} }}^{\text{s}}\) are determined in the network solution and broadcast to the users.

User solution

The required corrections in the user solution are the wide-lane satellite bias correction, the IGS satellite code clock, and the satellite phase clock. First, by applying the wide-lane satellite bias correction and the satellite-averaged wide-lane receiver bias correction, the wide-lane ambiguity resolution in the user solution can be obtained. Second, the integer \(N_{1}\) ambiguities can be directly estimated with the satellite phase clock determined in the network solution.

Wide-lane ambiguity resolution

Regarding the user solution, the MW observation at the user site can be derived as

$$A_{{{\text{MW}}\_u}} = - \lambda_{\text{WL}} N_{{{\text{WL}}\_u}} + (b_{{A_{{{\text{MW}}\_u}} }}^{\text{r}} - b_{{A_{\text{MW}} }}^{\text{s}} )$$
(44)

By applying the wide-lane satellite bias corrections (41) to (44), we can obtain

$$A_{{{\text{MW}}\_u}} + b_{{A_{\text{MW}} }}^{\text{s}} = - \lambda_{\text{WL}} N_{{{\text{WL}}\_u}} + (b_{{A_{{{\text{MW}}\_u}} }}^{\text{r}} - b_{{A_{\text{MW}} }}^{\text{s}} ) + b_{{A_{\text{MW}} }}^{\text{s}} { = } - \lambda_{\text{WL}} N_{{{\text{WL}}\_u}} + b_{{A_{{{\text{MW}}\_u}} }}^{\text{r}}$$
(45)

It can be seen that the wide-lane ambiguity, after correcting for the wide-lane satellite bias, is still contaminated by the wide-lane receiver bias \(b_{{A_{{{\text{MW}}\_u}} }}^{\text{r}}\). Since this wide-lane receiver bias is the same for all observed satellites, it can be obtained by averaging the fractional parts of the real-valued ambiguities from all observed satellites as

$$\overline{b}_{{A_{{{\text{MW}}\_u}} }}^{\text{r}} = \frac{1}{n}\sum\limits_{i = 1}^{n} {\left[ {\left( {A_{{{\text{MW}}\_u}} + b_{{A_{\text{MW}} }}^{\text{s}} } \right) - \lambda_{\text{WL}} \left\langle {\frac{{A_{{{\text{MW}}\_u}} + b_{{A_{\text{MW}} }}^{\text{s}} }}{{\lambda_{\text{WL}} }}} \right\rangle } \right]_{\,i} }$$
(46)

where n represents the number of observed satellites. By substituting the wide-lane receiver bias (46) into (45), we can obtain the integer wide-lane ambiguity as

$$A_{{{\text{MW}}\_u}} + b_{{A_{\text{MW}} }}^{\text{s}} - \overline{b}_{{A_{{{\text{MW}}\_u}} }}^{\text{r}} = - \lambda_{\text{WL}} N_{{{\text{WL}}\_u}}$$
(47)

through which the wide-lane ambiguity resolution in the user solution can be achieved.

\(N_{1}\) ambiguity resolution

Regarding the user positioning determination, we should first substitute (14) into (22) and then move the wide-lane ambiguities fixed in “Wide-lane ambiguity resolution” section to the left side as

$$L_{\text{IF}} - 60\lambda_{\text{IF}} N_{\text{WL}} = \rho + cdt_{{L_{3} }}^{\text{r}} - cdt_{{L_{3} }}^{\text{s}} + T - 17\lambda_{\text{IF}} N_{1} + \varepsilon_{{L_{\text{IF}} }}$$
(48)

Equations (21) and (48) are used to compute the user positioning. The IGS satellite code clock \(cdt_{{P_{\text{IF}} }}^{\text{s}}\) and the phase clock \(cdt_{{L_{\text{IF}} }}^{\text{s}}\) determined in “ \(N_{1}\) ambiguity resolution” section are used in (21) and (48), respectively. Along with the user coordinates, the receiver code clock \(cdt_{{P_{\text{IF}} }}^{\text{r}}\), the receiver phase clock \(cdt_{{L_{\text{IF}} }}^{\text{r}}\), the troposphere delay, and the integer \(N_{1}\) ambiguities can be directly estimated.

Method summary

In summary, the integer wide-lane ambiguities \(N_{{{\text{WL}}\_u}}\) in the user solution are first estimated through (47), following the WSB correction \(b_{{A_{\text{MW}} }}^{\text{s}}\) in (45) and the WRB correction \(\bar{b}_{{A_{\text{MW}} \_u}}^{\text{r}}\) in (46). Thus, the ionosphere-free \(N_{\text{IF}}\) ambiguity estimation in the phase observation \(L_{\text{IF}}\) in (22) becomes the \(N_{1}\) ambiguity estimation in (48). The satellite phase clocks \(cdt_{{L_{\text{IF}} }}^{\text{s}}\) are applied to \(L_{\text{IF}}\) in (48), and the IGS code clocks \(cdt_{{P_{\text{IF}} }}^{\text{s}}\) are applied to \(P_{IF}\) in (21). Therefore, the receiver code clock \(cdt_{{P_{\text{IF}} }}^{\text{r}}\) and receiver phase clocks \(cdt_{{L_{\text{IF}} }}^{\text{r}}\) are the remaining clock parameters to be estimated, which is to say, by applying separate satellite code/phase clocks and estimating separate receiver code/phase clocks, the integer \(N_{1}\) ambiguity can be directly estimated in (48).

Suppose the user observes n satellites. The number of observations is 2n in (3) and (48). The ambiguity datum is required which can be defined by fixing the \(N_{1}\) ambiguity of the reference satellite to arbitrary integer value. The number of unknown parameters is 3 + 2 + 1 + (n − 1), which includes three coordinates, two clocks (receiver code and phase), one troposphere delay, and n − 1 \(N_{1}\) ambiguities. The degree of freedom is 2n − (3 + 2 + 1 + (n − 1)) = n − 5, which means a minimum of five satellites are required to apply the integer phase clock model.

Method comparison

The user implementation details of the traditional method and the three PPP integer ambiguity resolution methods are listed in Table 1. Our method comparison focuses on the strategy of the integer property recovery, system redundancy, and the necessary corrections.

Table 1 Method comparison between the traditional PPP model and the three ambiguity fixing models in the user solution

The methods are classified into two categories according to the characteristics of the satellite clock terms. The first category uses only the satellite code clock. This category includes the traditional PPP model and the single-difference between-satellites method. When the satellite code clock is applied to the phase observation in such models, the estimated receiver clock parameter is the receiver code clock and the corresponding ambiguity parameter is real-valued. For the traditional PPP model, integer phase ambiguity resolution is not feasible since no additional ambiguity corrections are provided to correct the real-valued ambiguities. For the single-difference between-satellites method, the integer property can be recovered and integer phase ambiguity resolution becomes feasible because two additional wide-lane and \(N_{1}\) FCB corrections are provided to correct the real-valued ambiguities.

The second category is for methods that model satellite code clock and satellite phase clock, which includes the decoupled clock model and the integer phase clock model. The only difference between the two models is the approach for fixing the wide-lane ambiguity. The integer phase clock model utilizes the WSB corrections and the satellite-averaging process to fix the integer wide-lane ambiguity, whereas the decoupled clock model directly estimates the integer wide-lane ambiguity along with other unknowns through the function model. As to the \(N_{1}\) ambiguity resolution, both models require the satellite code clock \(cdt_{{P_{\text{IF}} }}^{\text{s}}\) and phase clock \(cdt_{{L_{\text{IF}} }}^{\text{s}}\) and estimate the receiver code clock \(cdt_{{P_{\text{IF}} }}^{\text{r}}\) and phase clock \(cdt_{{L_{\text{IF}} }}^{\text{r}}\). As a result, the integer \(N_{1}\) ambiguity can be directly estimated.

If n satellites are observed by the user receiver, although the number of observations and unknown parameters is different in these methods, the degree of freedom n − 5 is the same for all methods. All methods require at least five satellites for position determination.

As to the broadcast requirements, the decoupled clock model requires three decoupled clocks \(cdt_{{P_{\text{IF}} }}^{\text{s}}\), \(cdt_{{L_{\text{IF}} }}^{\text{s}}\), and \(b_{{A_{\text{IF}} }}^{\text{s}}\) for each satellite. For the single-difference between-satellites method, the IGS code clock \(cdt_{{P_{\text{IF}} }}^{\text{s}}\) is required for both code and phase observations. Two satellite wide-lane and \(N_{1}\) FCB corrections \(\Updelta b_{{A_{\text{MW}} }}^{{{\text{s}}\,j,i}}\) and \(\Updelta b_{{A_{1} }}^{{{\text{s}}\,j,i}}\) are necessary to correct the real-valued wide-lane and \(N_{1}\) ambiguities. For the integer phase clock model, the satellite WSB correction \(b_{{A_{\text{MW}} }}^{\text{s}}\) is needed to fix the wide-lane ambiguity. In addition, the IGS code clock \(cdt_{{P_{\text{IF}} }}^{\text{s}}\) and the satellite phase clock \(cdt_{{L_{\text{IF}} }}^{\text{s}}\) are required in order to resolve the integer \(N_{1}\) ambiguity. In summary, all three PPP integer ambiguity resolution methods require three corrections for each satellite. From this point of view, the correction broadcasting burden is the same.

The analysis above has demonstrated that the three methods developed for integer ambiguity resolution in PPP are equivalent since they all based on the same ionosphere-free code and phase combinations [(3), (4), and (17)] and the same phase ambiguities (wide-lane and \(N_{1}\)) are resolved. These methods differ only in their approaches to remove the fractional phase part, such as different parameterizations for clock and bias modeling and corrections as shown in Table 1. Although small numerical difference may exist due to different computational procedures, the three methods will provide equivalent positioning solution and precision once the phase ambiguities are correctly resolved to their integer values.

Conclusions and discussions

We first explained the reason why integer ambiguity resolution is not feasible in the traditional PPP model. The three PPP integer ambiguity resolution methods are then described using the same notation, which helps better understand these methods and is of value for their proper implementation by users. Since no assumption is made during the method derivation, this contribution also supplements the previous method comparison work which ignores the effects of the code biases on the phase ambiguity in PPP.

Some practical differences exist among the three methods, for example, the consideration of the code and phase biases into the separate code and phase clocks (the decoupled clock model), the ambiguity corrections (the single-difference between-satellites method), or both the separate code and phase clocks plus the ambiguity corrections (the integer phase clock model); the procedure for the integer property recovery by estimation (the decoupled clock model), ambiguity correction (the single-difference between-satellites method), or both ambiguity correction and estimation (the integer phase clock model). However, the three methods will provide equivalent results once the phase ambiguities are correctly resolved to the integer values.

The comparison among the three PPP integer ambiguity resolution methods is conducted with respect to integer property recovery method, system redundancy, and required corrections. As all these methods require three corrections to recover the ambiguity integer property and the system redundancy for all methods is equal to n-5 (n denotes the number of observed satellites), the equivalence of these three methods for PPP integer ambiguity resolution in the user solution has been obtained.