### Multi-GNSS observation models

Without loss of simplicity, the DD pseudorange and carrier-phase observation equations can be expressed as

$$ {P}_{r_{\boldsymbol{1}}{r}_2, ij}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}},{A}_{\boldsymbol{1}}{A}_{\boldsymbol{2}}}={\rho}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}}}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}}}+{ucd}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}}, ij}^{A_{\boldsymbol{1}}{A}_{\boldsymbol{2}}}+{I}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}}, ij}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}}}+{T}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}}}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}}}+{\varepsilon}_{P_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}}}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}}}} $$

(1)

$$ {\Phi}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}}, ij}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}},{A}_{\boldsymbol{1}}{A}_{\boldsymbol{2}}}={\rho}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}}}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}}}+{upd}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}}, ij}^{A_{\boldsymbol{1}}{A}_{\boldsymbol{2}}}\hbox{-} {I}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}}, ij}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}}}+{T}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}}}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}}}+{\lambda}_i{N}_{r_1{r}_2,i}^{s_1}-{\lambda}_j{N}_{r_1{r}_2,i}^{s_2}+{\varepsilon}_{\Phi_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}}}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}}}} $$

(2)

where *P* and Φ are pseudorange and carrier phase measurements, respectively; *ρ* is the distance between the receiver and the satellite; \( \mathrm{ucd} \) and *upd* are receiver uncalibrated code and phase delays, respectively; These two quantities are related to the initial phase and the hardware phase delays (Gu, 2013); The symbol *I* denotes the ionospheric delay; *T* is the tropospheric delay; *λ* is the wavelength; *N* is the integer phase ambiguity; \( {\varepsilon}_P \) and *ε*_{Φ} are the mixture of measurement noise and multipath error for pseudorange and carrier phase observations, respectively. Note that all variables are expressed in meters, except the ambiguity which is expressed in cycles. Furthermore, the reference receiver is denoted with subscript \( {r}_1 \), the rover receiver is denoted using subscript \( {r}_2 \), the reference satellite is denoted using superscript \( {s}_1 \) and its system is labeled using superscript \( {A}_1 \), the non-reference satellite is denoted using superscript \( {s}_2 \) and its system is labeled using superscript \( {A}_2 \), and superscript *i* and *j* refer to carrier frequencies.

The above observation equations for multi-GNSS DD operations can be generalized to inter-system mixed DD which can be further categorized into those between the same frequencies or the diverse frequencies of observations (Li et al., 2017).

Since GPS and Galileo transfer the same frequency band signals, e.g., L1 and L5 signals respectively overlap E1 and E5a signals, the inter-system mixed DD model for the same frequency is used to realize the tight combination of GPS and Galileo measurements which can be expressed as follows

$$ {P}_{r_{\boldsymbol{1}}{r}_2,i}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}},{A}_{\boldsymbol{1}}{A}_{\boldsymbol{2}}}={\rho}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}}}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}}}+{ucd}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}},i}^{A_{\boldsymbol{1}}{A}_{\boldsymbol{2}}}+{I}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}},i}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}}}+{T}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}}}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}}}+{\varepsilon}_{P_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}}}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}}}} $$

(3)

$$ {\Phi}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}},i}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}},{A}_{\boldsymbol{1}}{A}_{\boldsymbol{2}}}={\rho}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}}}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}}}+{upd}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}},i}^{A_{\boldsymbol{1}}{A}_{\boldsymbol{2}}}\hbox{-} {I}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}},i}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}}}+{T}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}}}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}}}+{\lambda}_i{N}_{r_1{r}_2,i}^{s_1{s}_2}+{\varepsilon}_{\Phi_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}}}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}}}} $$

(4)

Because the frequencies are the same, the ambiguities \( {N}_{r_1{r}_2,i}^{s_1{s}_2} \) still have integer characteristics. However, the receiver UPDs which are related to the initial phase and hardware delay are consequently contained in the inter-system bias (ISB) and therefore cannot be eliminated, i.e. \( {ucd}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}},i}^{A_{\boldsymbol{1}}{A}_{\boldsymbol{2}}}\ne 0 \) and \( {upd}_{r_1{r}_2,i}^{A_1{A}_2}\ne 0 \).

The carrier phase integer ambiguities \( {N}_{r_1{r}_2,i}^{s_1{s}_2} \) and the integer part of \( {upd}_{r_1{r}_2,i}^{A_1{A}_2} \) are linearly dependent which make it impossible to separate them in the least-squares adjustment due to rank deficiency. Here, we separate the \( {upd}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}},i}^{A_{\boldsymbol{1}}{A}_{\boldsymbol{2}}} \) into a fractional part \( \overline{upd_{r_1{r}_2,i}^{A_1{A}_2}} \) and an integer part. Then, the remaining integer part \( {M}_{r_1{r}_2,i}^{A_1{A}_2} \) is combined with the integer ambiguities \( {N}_{r_1{r}_2,i}^{s_1{s}_2} \) and forms a new estimable integer parameter: \( \overline{N_{r_1{r}_2,i}^{s_1{s}_2}}={N}_{r_1{r}_2,i}^{s_1{s}_2}+{M}_{r_1{r}_2,i}^{A_1{A}_2} \). Consequently, the Eq. (4) can be rewritten as

$$ {\Phi}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}},i}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}},{A}_{\boldsymbol{1}}{A}_{\boldsymbol{2}}}={\rho}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}}}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}}}\hbox{-} {I}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}},i}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}}}+{T}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}}}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}}}+{\lambda}_i\overline{N_{r_1{r}_2,i}^{s_1{s}_2}}+\overline{upd_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}},i}^{A_{\boldsymbol{1}}{A}_{\boldsymbol{2}}}}+{\varepsilon}_{\Phi_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}}}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}}}} $$

(5)

The carrier phase and code ISBs between different types of receivers have temporal stability and can be neglected between receivers of the same type. Therefore, if the ISB of a pair of receivers is estimated, it can be used as the ISB correction for the pair of receivers (Paziewski and Wielgosz, 2015). The phase and code ISBs can be estimated precisely for zero or ultra-short baselines, that is

$$ \left\{\begin{array}{c}{ucd}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}},i\boldsymbol{0}}^{A_{\boldsymbol{1}}{A}_{\boldsymbol{2}}}={P}_{r_{\boldsymbol{1}}{r}_2,i}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}},{A}_{\boldsymbol{1}}{A}_{\boldsymbol{2}}}-{\rho}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}}}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}}}\\ {}\overline{upd_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}},i\boldsymbol{0}}^{A_{\boldsymbol{1}}{A}_{\boldsymbol{2}}}}=\left({\Phi}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}},i}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}},{A}_{\boldsymbol{1}}{A}_{\boldsymbol{2}}}-{\rho}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}}}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}}}\right)/{\lambda}_i-\left[\left({\Phi}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}},i}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}},{A}_{\boldsymbol{1}}{A}_{\boldsymbol{2}}}-{\rho}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}}}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}}}\right)/{\lambda}_i\right]\end{array}\right. $$

(6)

where the function [·] is a rounding function.

Through the introduction of the above corrections, the inter-system mixed DD on the same frequency can be translated into system-specific DD models:

$$ \overline{P_{r_{\boldsymbol{1}}{r}_2,i}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}},{A}_{\boldsymbol{1}}{A}_{\boldsymbol{2}}}}={P}_{r_{\boldsymbol{1}}{r}_2,i}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}},{A}_{\boldsymbol{1}}{A}_{\boldsymbol{2}}}-{ucd}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}},i\boldsymbol{0}}^{A_{\boldsymbol{1}}{A}_{\boldsymbol{2}}}={\rho}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}}}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}}}+{I}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}},i}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}}}+{T}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}}}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}}}+{\varepsilon}_{P_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}}}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}}}} $$

(7)

$$ \overline{\Phi_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}},i}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}},{A}_{\boldsymbol{1}}{A}_{\boldsymbol{2}}}}={\Phi}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}},i}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}},{A}_{\boldsymbol{1}}{A}_{\boldsymbol{2}}}-\overline{upd_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}},i\boldsymbol{0}}^{A_{\boldsymbol{1}}{A}_{\boldsymbol{2}}}}={\rho}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}}}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}}}-{I}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}},i}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}}}+{T}_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}}}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}}}+{\lambda}_i\overline{N_{r_1{r}_2,i}^{s_1{s}_2}}+{\varepsilon}_{\Phi_{r_{\boldsymbol{1}}{r}_{\boldsymbol{2}}}^{s_{\boldsymbol{1}}{s}_{\boldsymbol{2}}}} $$

(8)

which is the model used in this study to implement GPS + Galileo DD data processing.

### Ambiguity resolution in the DD model

The GNSS linear observation equations of Eqs. (7) and (8) can be expressed as:

$$ \mathbf{y}=\mathbf{Ax}+\mathbf{BN}+\boldsymbol{\upvarepsilon} $$

(9)

where **y** is the vector of ‘observed minus computed’ DD observations; *x* is the vector of incremental baseline coordinates, the residual tropospheric zenith delay, and the DD ionospheric slant delays for each measurement epoch; **N** is the vector of carrier-phase integer ambiguities; **ε** is the vector of unmodeled effects and measurement noise. The matrices *A* and *B* are the corresponding design matrices of *x* and **N**, respectively.

The float solution **X** and variance-covariance matrix **Q** from a least-squares estimation can be expressed as

$$ \boldsymbol{X}=\left[\begin{array}{c}\widehat{\boldsymbol{x}}\\ {}\widehat{\boldsymbol{N}}\end{array}\right],\boldsymbol{Q}=\left[\begin{array}{cc}{\boldsymbol{Q}}_{\widehat{\boldsymbol{x}}}& {\boldsymbol{Q}}_{\widehat{\boldsymbol{x}}\widehat{\boldsymbol{N}}}\\ {}{\boldsymbol{Q}}_{\widehat{\boldsymbol{N}}\widehat{\boldsymbol{x}}}& {\boldsymbol{Q}}_{\widehat{\boldsymbol{N}}}\end{array}\right] $$

(10)

In these formulas, the integer ambiguity vector \( \widehat{\boldsymbol{N}} \) is obtained by solving an ILS (integer least square) problem expressed as:

$$ \overset{\smile }{\boldsymbol{N}}=\underset{\boldsymbol{N}\in \boldsymbol{Z}}{\mathrm{argmin}}\;\left\{{\left(\boldsymbol{N}-\widehat{\boldsymbol{N}}\right)}^T\;{{\boldsymbol{Q}}_{\widehat{\boldsymbol{N}}}}^{-1}\left(\boldsymbol{N}-\widehat{\boldsymbol{N}}\right)\right\} $$

(11)

To solve the ILS problem, the well-known LAMBDA (Teunissen, 1995) method and its extension MLAMBDA (Chang et al., 2005) are employed in this paper. The integer vector solution is validated using the following “Ratio-Test”.

$$ \boldsymbol{R}=\frac{{\left({\overset{\smile }{\boldsymbol{N}}}_2-\widehat{\boldsymbol{N}}\right)}^T{{\boldsymbol{Q}}_{\widehat{N}}}^{-1}\left({\widehat{\boldsymbol{N}}}_2-\widehat{\boldsymbol{N}}\right)}{{\left(\overset{\smile }{\boldsymbol{N}}-\widehat{\boldsymbol{N}}\right)}^T{{\boldsymbol{Q}}_{\widehat{N}}}^{-1}\left(\overset{\smile }{\boldsymbol{N}}-\widehat{\boldsymbol{N}}\right)}>{\boldsymbol{R}}_{\boldsymbol{thres}} $$

(12)

where the ratio-factor *R*, defined as the ratio of the weighted sum of the squared residuals by the second best solution \( {\overset{\smile }{\mathbf{N}}}_2 \) to the best \( \overset{\smile }{\mathbf{N}} \) is used to check the reliability of AR. In general, validation threshold *R*_{
thres
} can be 1.5 to 3.0 (Wang and Feng, 2012), and we used 3.0 for this study.

After the validation, the remaining real-valued parameter estimates \( \overset{\smile }{\mathbf{x}} \) and the corresponding variance-covariance matrix \( {\mathbf{Q}}_{\overset{\smile }{\mathbf{x}}} \) can be updated by solving the following equations.

$$ \left\{\begin{array}{c}\overset{\smile }{\boldsymbol{x}}=\widehat{\boldsymbol{x}}-{\boldsymbol{Q}}_{\widehat{\boldsymbol{x}}\widehat{\boldsymbol{N}}}{{\boldsymbol{Q}}_{\widehat{\boldsymbol{N}}}}^{-1}\left(\widehat{\boldsymbol{N}}-\overset{\smile }{\boldsymbol{N}}\right)\\ {}{\boldsymbol{Q}}_{\overset{\smile }{\boldsymbol{x}}}={\boldsymbol{Q}}_{\widehat{\boldsymbol{x}}}-{\boldsymbol{Q}}_{\widehat{\boldsymbol{x}}\widehat{\boldsymbol{N}}}{{\boldsymbol{Q}}_{\widehat{\boldsymbol{N}}}}^{-1}{\boldsymbol{Q}}_{\widehat{\boldsymbol{N}}\widehat{\boldsymbol{x}}}\end{array}\right. $$

(13)

If the validation fails, the current epoch will keep the ambiguities float instead.

### Partial ambiguity resolution strategy

If integer ambiguities of all satellites are difficult to fix with the LAMBDA method, the partial ambiguity fixing will be considered. Then the ambiguity vector \( \widehat{\boldsymbol{N}} \) is divided into two parts, and the corresponding variance-covariance matrix of the two parts

$$ \widehat{\boldsymbol{N}}=\left[\begin{array}{c}{\widehat{\boldsymbol{N}}}_a\\ {}{\widehat{\boldsymbol{N}}}_b\end{array}\right],{\mathrm{Q}}_{\widehat{\boldsymbol{N}}}=\left[\begin{array}{cc}{\mathrm{Q}}_{{\widehat{\boldsymbol{N}}}_{\boldsymbol{a}}}& {\mathrm{Q}}_{{\widehat{\boldsymbol{N}}}_a{\widehat{\boldsymbol{N}}}_b}\\ {}{\mathrm{Q}}_{{\widehat{\boldsymbol{N}}}_b{\widehat{\boldsymbol{N}}}_a}& {\mathrm{Q}}_{{\widehat{\boldsymbol{N}}}_b}\end{array}\right] $$

(14)

where \( {\widehat{\boldsymbol{N}}}_a \) is a set of to-be-fixed ambiguities, and \( {\boldsymbol{N}}_b \) the remaining ambiguities.

If \( {\widehat{\boldsymbol{N}}}_a \) can be fixed reliably, similar to the real-valued parameter update process, the remaining ambiguities \( {\boldsymbol{N}}_b \) and their variance-covariance matrix \( {\mathbf{Q}}_{{\widehat{\mathbf{N}}}_b} \) can be corrected with the fixed ambiguities:

$$ \left\{\begin{array}{l}{\tilde{\mathrm{N}}}_b={\widehat{\mathrm{N}}}_b-{\mathrm{Q}}_{{\mathbf{N}}_b{\mathbf{N}}_a}{\mathrm{Q}}_{{\mathbf{N}}_a}^{-1}\left({\widehat{\mathrm{N}}}_a-{\overset{\smile }{\mathrm{N}}}_a\right)\\ {}{\mathrm{Q}}_{{\tilde{\mathbf{N}}}_b}={\mathrm{Q}}_{{\widehat{\mathrm{N}}}_b}-{\mathrm{Q}}_{{\widehat{\mathbf{N}}}_b{\widehat{\mathbf{N}}}_a}{\mathrm{Q}}_{{\widehat{\mathbf{N}}}_a}^{-1}{\mathrm{Q}}_{{\widehat{\mathbf{N}}}_a{\widehat{\mathbf{N}}}_b}\end{array}\right. $$

(15)

Then the LAMBDA method is used to fix \( {\tilde{\boldsymbol{N}}}_b \), and if \( {\tilde{\boldsymbol{N}}}_b \) can be fixed, \( {\overset{\smile }{\mathbf{N}}}_a \) and \( {\tilde{\boldsymbol{N}}}_b \) are used to update \( \overset{\smile }{\mathbf{x}} \) and \( {\mathbf{Q}}_{\overset{\smile }{\mathbf{x}}} \). Otherwise, only \( {\overset{\smile }{\mathbf{N}}}_a \) is used to update \( \overset{\smile }{\mathbf{x}} \) and \( {\mathbf{Q}}_{\overset{\smile }{\mathbf{x}}} \).

In this paper, a PAR procedure is used to determine the subset of ambiguities which in terms of the success rate and the ratio test (Wang and Feng, 2012). Figure 1 presents the flowchart of this procedure.

First, the PAR process starts with the decorrelation of the ambiguities and the diagonal elements of the decorrelated matrix are sorted in the ascending order. We can get the diagonal element set \( D=\left\{{d}_1,{d}_2,\cdots {d}_i,\cdots, {d}_n\left|{d}_1<{d}_2<\cdots {d}_i<\cdots <{d}_n\right.\right\} \) after sorting by conditional variance. Then, by updating the traversal of *i* = *n* to the minimum threshold *i* = *n*_{0} and pick the subset \( D=\left\{{d}_1,{d}_2,\cdots {d}_i\right\} \) and the corresponding ambiguity subset \( {\widehat{\boldsymbol{N}}}_a\left({D}_i\right) \) and variance-covariance matrices \( {\mathrm{Q}}_{{\widehat{\boldsymbol{N}}}_a}\left({D}_i\right) \). The minimum threshold *n*_{0} is typically 6 to ensure the selected satellites are still sufficient to get reliable positioning results. Then, the LAMBDA method is applied in the ambiguity search process. If \( {P}_S\ge {P}_{S0} \) and \( R>{R}_{\mathtt{thres}} \), the fixed ambiguities can be considered to pass the acceptance test and be used into the following position calculation. Otherwise, we will update the subset and repeat the ambiguity search and test. If the number of selected ambiguities is less than \( {n}_0 \), the iteration will stop and only the float solutions are made available.