Skip to main content

A square root information filter for multi-GNSS real-time precise clock estimation


Real-time satellite orbit and clock estimations are the prerequisite for Global Navigation Satellite System (GNSS) real-time precise positioning services. To meet the high-rate update requirement of satellite clock corrections, the computational efficiency is a key factor and a challenge due to the rapid development of multi-GNSS constellations. The Square Root Information Filter (SRIF) is widely used in real-time GNSS data processing thanks to its high numerical stability and computational efficiency. In real-time clock estimation, the outlier detection and elimination are critical to guarantee the precision and stability of the product but could be time-consuming. In this study, we developed a new quality control procedure including the three standard steps: i.e., detection, identification, and adaption, for real-time data processing of huge GNSS networks. Effort is made to improve the computational efficiency by optimizing the algorithm to provide only the essential information required in the processing, so that it can be applied in real-time and high-rate estimation of satellite clocks. The processing procedure is implemented in the PANDA (Positioning and Navigation Data Analyst) software package and evaluated in the operational generation of real-time GNSS orbit and clock products. We demonstrated that the new algorithm can efficiently eliminate outliers, and a clock precision of 0.06 ns, 0.24 ns, 0.06 ns, and 0.11 ns can be achieved for the GPS, GLONASS, Galileo, and BDS-2 IGSO/MEO satellites, respectively. The computation time per epoch is about 2 to 3 s depending on the number of existing outliers. Overall, the algorithm can satisfy the IGS real-time clock estimation in terms of both the computational efficiency and product quality.


Global Navigation Satellite System (GNSS) Global Real-Time Precise Positioning (RTPP) based on Precise Point Positioning (PPP) has been a hot topic for decades and it is recognized as the most promising system for future real-time precise positioning services. Currently several research institutions and commercial companies are providing their operational RTPP service (Caissy et al., 2011; Dixon, 2006; Leandro et al., 2011). It extends not only the geographical coverage of GNSS real-time precise positioning but also its application to a number of new areas, such as earthquake monitoring (Allen & Ziv, 2011), tsunami warning systems (Saito et al., 2016), and real-time atmospheric sounding (Li et al., 2014).

As a prerequisite of the RTPP service the provision of precise satellite clock corrections is challenging since satellite clocks must be estimated precisely using a globally distributed network and disseminated to users at an update interval of 5 s or higher. On the one hand, a dense network can provide better observation geometry and ensure a higher clock precision and stability. On the other hand, it is time-consuming to process such huge number of observations, especially for multi-GNSS with around 120 operational satellites to be processed. Therefore, it is important to balance the station number and the computation efficiency, and to improve the computation efficiency is always a persistent pursue in real-time clock determination. There are two major aspects to speed up the clock estimation. One is reducing the number of the parameters to be estimated, especially the ambiguities, for example, using epoch-differenced observations (Ge et al., 2012; Jiang et al., 2019; Zhang et al., 2007, 2011), or using the fixed integer ambiguities to convert phases to carrier-ranges (Chen et al., 2014a, 2014b; Dai, Dai, et al., 2019; Dai, Lou, et al., 2019; Laurichesse et al., 2009). The other one is utilizing the most advanced computation algorithms and techniques, such as fast matrix operation and parallel processing (Chen et al., 2014a, 2014b; Gong et al., 2018; Fu et al., 2019).

Three estimators are commonly used in real-time clock estimation, i.e., the Kalman Filter (KF), the Least Squares adjustment (LSQ), and the Square Root Information Filter (SRIF, Bierman, 1975). Among them KF is the most widely used. For example, Hauschild & Montenbruck (2009) developed a real-time system using KF to generate GPS satellite clocks and applied them to the precise orbit determination of low-earth-orbiting satellites. The Centre National d’Études Spatiales (CNES) also adopted KF for multi-GNSS real-time satellite clock determination (Laurichesse et al., 2013). Usually, LSQ is more suitable for post-processing where the normal equation is accumulated and solved only once after the last epoch, as the inversion of the epoch-wise high-order normal equation to obtain the epoch-wise solution in real-time is time consuming. Nevertheless, using LSQ for real-time GNSS clock estimation was also investigated and the computation efficiency can also satisfy the real-time requirements (Fu et al., 2019). SRIF was developed for system control and spacecraft navigation because of its high numerical stability and computational efficiency (Bierman, 1975). It was implemented in the GIPSY software package for GPS data processing and later in the RTG (Real Time GIPSY) for real-time applications (Bertiger et al., 2020). It was also realized in the EPOS-RT (Ge et al. 2006) and PANDA software package (Liu & Ge, 2003; Gong et al., 2018) for real-time precise positioning services. Gong et al. (2018) further improved processing efficiency of SRIF by taking the advantage of the dense linear algebra algorithms and ambiguity elimination method.

Although these estimators were developed and realized for different purposes, they are based on the same principles, and thus suffer from the same problem of computational efficiency. It must be pointed out that the calculation of the state vector and its full covariance matrix is a must in both LSQ and KF for real-time clock estimation because of the KF state propagation and the quality control in LSQ. However, SRIF is more flexible in obtaining the estimates without loss of the opportunity of quality control. Besides the full solution as KF and LSQ, the other options could be no solution but only the updated square root information, or the estimated state vector only, or state vector with the standard deviations. These characteristics can be utilized to save computational time by providing a minimal solution, for example, we do not need the covariance matrix of the estimates for real-time clock estimation. More important is that choosing any of the above-mentioned solutions, the posterior observation residuals are always available, as they were generated in the measurement update before solving the equation, so that the quality control based on the posterior residuals can be carried out for all the solutions. Moreover, the possible numerical instability caused by indefinite matrix of KF and sequential LSQ can be overcome since SRIF is working on the form of triangularized Square Root Information (SRI) matrix instead of the covariance matrix or normal equation, which means it can always guarantee that the corresponding covariance matrix is positive and symmetric.

Online quality control is a critical and indispensable component of the real-time GNSS data processing in both the server and user end, as undetected outliers can degrade the product accuracy and reliability, even cause the estimator to crash and significantly deteriorate the stability and robustness of the online service, which will consequently affect the user’s positioning. The quality control of GNSS real-time processing using LSQ and KF is quite mature and can be found in a number of references (Yang & Gao, 2006, Yang et al., 2010; Fu et al., 2019), however it is not yet well demonstrated for SRIF. In the study by Lichten (1990), the predicted residual and its STD are employed to make the decision whether the observation contains an outlier or not according to the rule of three times of STD and the confirmed outliers are excluded in the processing. Shi et al. (2008) developed a new method based on a correlation analysis to scan outliers in the real-time positioning and its efficiency was demonstrated with both simulated and actual outliers in a kinematic experiment. Dai, Lou, et al. (2019), Dai, Dai, et al. (2019)) also applied SRIF for real-time precise orbit determination where an approach was developed for detecting irregular satellite movement, such as satellite maneuvers. However, the quality control within SRIF should be further optimized for satellite clock estimation in a large network with an update rate of every 5 s or even higher. Based on existing studies, we developed a complete set of quality control procedure for GNSS real-time clock estimation, including the Detection, Identification, and Adaption (DIA) steps, which is capable of detecting multiple outliers simultaneously. The computational efficiency was also improved by optimizing the computation of sensitivity vectors used in the quality control and properly applying the BLAS/LAPACK matrix operation algorithms. The processing procedure is implemented in the PANDA software package and evaluated in the operational real-time processing at the GFZ (German Geoscience Research Center) IGS (International GNSS Service) real-time analysis center.

This study is organized as follows. First a short description of the mathematical model of multi-GNSS clock estimation is given. Then the principle and the basic algorithm of SRIF including measurement and time updating and parameter eliminating are introduced. The procedure of the quality control for SRIF is presented and discussed in detail. Then the efficiency of this method is investigated with the numerical result of the operational running at the GFZ IGS real-time analysis center. Finally, the study is summarized, and conclusions are drawn.

Mathematical model for real-time clock estimation

As station coordinates and satellite orbits can be precisely derived in advance and fixed as known in the clock estimation, the linearized observation equations of ionosphere-free phase and range can be expressed as:

$$ \begin{gathered} v_{{{\text{lc}}}} = \delta t_{{\text{r}}} - \delta t^{{\text{s}}} + b_{{\text{r}}}^{{\text{s}}} - b^{{\text{s}}} + B_{{\text{r}}}^{{\text{s}}} + m^{{\text{s}}} \cdot T_{{\text{r}}} + \varepsilon_{{{\text{lc}}}} \hfill \\ v_{{{\text{pc}}}} = \delta t_{{\text{r}}} - \delta t^{{\text{s}}} + d_{{\text{r}}}^{{\text{s}}} - d^{{\text{s}}} + m^{{\text{s}}} \cdot T_{{\text{r}}} + \varepsilon_{{{\text{pc}}}} \hfill \\ \end{gathered} $$

where s and r refer to the satellite and receiver, respectively; \(v_{{{\text{lc}}}}\) and \(v_{{{\text{pc}}}}\) denote “Observed Minus Computed” (OMC) residuals of phase and range observations; \(\delta t_{{\text{r}}}\) and \(\delta t^{{\text{s}}}\) are receiver and satellites clock parameters; \(b_{{\text{r}}}^{{\text{s}}}\) and \(d_{{\text{r}}}^{{\text{s}}}\) represent the receiver-dependent un-calibrated phase delay and code bias of satellite s; \(b^{{\text{s}}}\) and \(d^{{\text{s}}}\) are the satellite-dependent un-calibrated phase delay and code bias; \(B_{{\text{r}}}^{{\text{s}}}\) is the ambiguity of the ionosphere-free phase observation; \(T_{{\text{r}}}\) and \(m^{{\text{s}}}\) is the zenith wet tropospheric delay and its mapping function; \(\varepsilon_{{{\text{lc}}}}\) and \(\varepsilon_{{{\text{pc}}}}\) denote the sum of measurement noise and unmodeled error for phase and range observations. Note that the systematic error corrections such as phase windup effect, antenna phase center offset and variation, and the station displacements are already applied in the equation.

In order to obtain the satellite clock solution from Eq. (1), the bias parameters need to be reformed as some of them are strongly correlated. For example, the stable satellite code bias cannot be separated from the corresponding satellite clock, and also the un-calibrated phase delay will be absorbed by the corresponding ambiguity. Thus, Eq. (1) can be reformulated as:

$$ \begin{gathered} v_{lc} = \delta \overline{t}_{r} - \delta \overline{t}^{s} + \overline{B}_{r}^{s} + m^{s} \cdot T_{r} + \varepsilon_{lc} \hfill \\ v_{pc} = \delta \overline{t}_{r} - \delta \overline{t}^{s} + m^{s} \cdot T_{r} + \varepsilon_{pc} \hfill \\ \end{gathered} $$

where the estimated receiver and satellite clock are \(\delta \overline{t}_{{\text{r}}} = \delta t_{{\text{r}}} + d_{{\text{r}}}^{{\text{s}}}\) and \(\delta \overline{t}^{{\text{s}}} = \delta t^{{\text{s}}} + d^{{\text{s}}}\), respectively, and the ambiguity is expressed as \(\overline{B}_{{\text{r}}}^{{\text{s}}} = B_{{\text{r}}}^{{\text{s}}} - b^{{\text{s}}} + d^{{\text{s}}} + b_{{\text{r}}}^{{\text{s}}} - d_{{\text{r}}}^{{\text{s}}}\).

For a multi-GNSS receiver the measurements could be biased systematically from satellite to satellite due to the signal delay caused by hardware. For the GNSS using Code Division Multiple Access (CDMA) signals, including GPS, BDS, and GALILEO, the differences between different satellites of the same system are very close to each other as they have the same frequency, and thus only the biases between different systems should be handled, that is, the Inter-System Biases (ISB). As for the GLONASS satellites using Frequency Division Multiple Access (FDMA) signals, different satellites have different frequencies, and thus the bias should be parameterized between different satellites, that is, the Inter-Frequency Bias (IFB). Using GPS time as time reference and parameterizing the ISB and IFB with respect to the GPS observations, the combined clock estimation models of GPS, GLONASS, BDS, and GALILEO can be expressed as:

$$ \begin{gathered} v_{{{\text{lc}}}}^{G} = \delta \overline{t}_{{\text{r}}} - \delta \overline{t}^{{{\text{s}},G}} + \overline{B}^{{{\text{s}},G}} + m^{{{\text{s}},G}} \cdot T_{{\text{r}}} + \varepsilon_{{{\text{lc}}}}^{G} \hfill \\ v_{{{\text{pc}}}}^{G} = \delta \overline{t}_{{\text{r}}} - \delta \overline{t}^{{{\text{s}},G}} + m^{{{\text{s}},G}} \cdot T_{{\text{r}}} + \varepsilon_{{{\text{pc}}}}^{G} \hfill \\ v_{{{\text{lc}}}}^{{R_{k} }} = \delta \overline{t}_{r} - \delta \overline{t}^{{s,R_{k} }} + {\text{IFB}}^{{R_{k} - G}} + \overline{B}^{{{\text{s}},R_{k} }} + m^{{{\text{s}},R_{k} }} \cdot T_{{\text{r}}} + \varepsilon_{{{\text{lc}}}}^{{R_{k} }} \hfill \\ v_{{{\text{pc}}}}^{{R_{k} }} = \delta \overline{t}_{{\text{r}}} - \delta \overline{t}^{{{\text{s}},R_{k} }} + {\text{IFB}}^{{R_{k} - G}} + m^{{{\text{s}},R_{k} }} \cdot T_{{\text{r}}} + \varepsilon_{{{\text{pc}}}}^{{R_{k} }} \hfill \\ v_{{{\text{lc}}}}^{C} = \delta \overline{t}_{{\text{r}}} - \delta \overline{t}^{{{\text{s}},C}} + {\text{ISB}}^{C - G} + \overline{B}^{{{\text{s}},C}} + m^{{{\text{s}},C}} \cdot T_{{\text{r}}} + \varepsilon_{{{\text{lc}}}}^{C} \hfill \\ v_{{{\text{pc}}}}^{C} = \delta \overline{t}_{{\text{r}}} - \delta \overline{t}^{{{\text{s}},C}} + {\text{ISB}}^{C - G} + m^{{{\text{s}},C}} \cdot T_{{\text{r}}} + \varepsilon_{{{\text{pc}}}}^{C} \hfill \\ v_{{{\text{lc}}}}^{E} = \delta \overline{t}_{{\text{r}}} - \delta \overline{t}^{{{\text{s}},E}} + {\text{ISB}}^{E - G} + \overline{B}^{{{\text{s}},E}} + m^{{{\text{s}},E}} \cdot T_{{\text{r}}} + \varepsilon_{{{\text{lc}}}}^{E} \hfill \\ v_{{{\text{pc}}}}^{E} = \delta \overline{t}_{{\text{r}}} - \delta \overline{t}^{{{\text{s}},E}} + {\text{ISB}}^{E - G} + m^{{{\text{s}},E}} \cdot T_{{\text{r}}} + \varepsilon_{{{\text{pc}}}}^{E} \hfill \\ \end{gathered} $$

where G, C and E refer to the GPS, BDS, and GALILEO systems, respectively; \(R_{k}\) denotes the GLONASS satellite with frequency factor k; \({\text{ISB}}^{C - G} = d_{{\text{r}}}^{{{\text{s}},C}} - d_{{\text{r}}}^{{{\text{s}},G}}\); \({\text{ISB}}^{E - G} = d_{{\text{r}}}^{{{\text{s}},E}} - d_{{\text{r}}}^{{{\text{s}},G}}\); \({\text{IFB}}^{{R_{k} - G}} = d_{{\text{r}}}^{{{\text{s}},R_{k} }} - d_{{\text{r}}}^{{{\text{s}},G}}\).

The clock offset of a satellite and a receiver can be modeled as white noise or random walk process. The residual zenith tropospheric delay is usually parameterized as a random walk process on each station after a priori model correction, which removes the tropospheric dry component. The ISB and IFB parameters could be modeled as constant because of its stability or as random walk to consider possible unexpected variation. In order to solve the singularity caused by the full correlation between the satellite clocks from a single system and the corresponding ISB parameters of all stations, the constraint that the sum of all ISB parameters for each individual system equals zero, is imposed. For the same reason, the same constraint should be applied to the IFB parameters of GLONASS satellites in a network. Furthermore, in order to save computation time, IFB and ISB can be corrected using the values estimated in the previous days according to the stability of the estimates.

Assuming that we have \(m\) observations and \(n\) parameters at epoch \(i\), the observation equations can be expressed in the following simplified form as:

$$ \mathop {l_{i} }\limits_{m \times 1} = \mathop {H_{i} }\limits_{m \times n} \mathop {x_{i} }\limits_{n \times 1} + \mathop {\varepsilon_{i} }\limits_{m \times 1} $$

where \(l_{i}\) is the observation vector; \(H_{i}\) is the design matrix; \(x_{i}\) is the parameter vector; \(\varepsilon_{i}\) is the measurement noise with a variance matrix \(D_{{\varepsilon_{i} }}\).

In GNSS data processing, the parameters can be handled as either deterministic parameters \(y\) or the time varying stochastic parameters \(p\), which are usually parameterized as white noise (for instance, satellite and receiver clocks) or random-walk process (for instance, tropospheric delays). The random-walk process can be described with the following state equation of the first-order Gauss-Markov process:

$$ p_{i} = \Phi_{i,i - 1} p_{i - 1} + w_{i} $$

where \(\Phi_{i,i - 1}\) is the state transition matrix and \(w_{i}\) is the process noise with \(E\left( {w_{i} } \right) = 0\) and \(D\left( {w_{i} } \right) = D_{{w_{i} }}\).

In SRIF, the noises in the observation equations and state equations should follow the standard normal distribution, that is \(N\left( {0,I} \right)\). This can be achieved by adapting the corresponding equations. Taking the variance matrix of the observation as example, \(D_{{\varepsilon_{i} }}\) can be decomposed as \(D_{{\varepsilon_{i} }} = R_{{z_{i} }}^{ - 1} R_{{z_{i} }}^{ - T}\) where \(R_{{z_{i} }}\) is an upper triangular matrix and referred as square root information (SRI) of the observations. Then Eq. (4) can be normalized by multiplying \(R_{{z_{i} }}^{{}}\) on the both sides as:

$$ z_{i} = A_{i} x_{i} + v_{i} \; $$

where \(z_{i} = R_{{z_{i} }}^{{}} l_{i}\), \(A_{i} = R_{{z_{i} }}^{{}} H_{i}\), \(v_{i} \; = R_{{z_{i} }}^{ - 1} \varepsilon_{i}\) and \(v_{i} \sim N\left( {0,I} \right)\).

The same normalization can be applied to the state equations and with \(D_{{w_{i} }} = R_{{w_{i} }}^{ - 1} R_{{w_{i} }}^{ - T}\) the normalized state equation of Eq. (5) reads:

$$ R_{{w_{i}^{{}} }}^{{}} p_{i} = \overline{\Phi }_{i,i - 1} p_{i - 1} + \overline{w}_{i} $$

where \(\overline{\Phi }_{{i,i{ - }1}} = R_{{w_{i}^{{}} }}^{{}} \Phi_{{i,i{ - }1}}\), \(\overline{w}_{i} = R_{{w_{i}^{{}} }}^{{}} w_{i}\).

Given the initial value of state parameter \(x\), \(E\left( {x_{0} } \right) = x_{0}\) and \(D\left( {x_{0} } \right)\), the corresponding initial constraint can be expressed in form of pseudo-observations as:

$$ x = x_{0} + w_{0} \; $$

with \(D\left( {x_{0} } \right) = R_{0}^{ - 1} R_{0}^{ - T}\), the normalized observation equations should be:

$$ z_{0} = R_{0} x + v_{0} \; $$

where \(z_{0} = R_{0} x_{0}\) and \(v_{0} = R_{0} w_{0} \;\) with \(v_{0} \sim N\left( {0,I} \right)\).

In summary, the Eqs. (4), (5) and (8) which are directly used in LSQ and KF, but must be normalized to Eqs. (6), (7) and (9) for SRIF.

Square root information filter

The basic operations of SRIF are the measurement update and time update using the Householder orthogonal transformation (Bierman, 1975). The principle of the SRIF and the Householder transformation, and the time and measurement update are summarized in this section, as they are essential for understanding the new quality control algorithm.

The principle of SRIF

In order to explain the principle of SRIF, we assume that the estimation problem includes only the initial information of parameter \(x\) in Eq. (9) and the observation equations Eq. (6), the state equations Eq. (7), that is, the time update will be presented later. Therefore, the observation equations of the estimation can be summarized as:

$$ \left[ \begin{gathered} R_{0} \hfill \\ A \hfill \\ \end{gathered} \right]x = \left[ \begin{gathered} z_{0} \hfill \\ z \hfill \\ \end{gathered} \right] - \left[ \begin{gathered} v_{0} \hfill \\ v \hfill \\ \end{gathered} \right] $$

By applying the Householder orthogonal transformation \(T\) which will be introduced in the next section to Eq. (10) instead of forming normal equation in the LSQ, we have:

$$ \left[ \begin{gathered} {\hat{R}} \hfill \\ 0 \hfill \\ \end{gathered} \right]x = \left[ \begin{gathered} {\hat{z}} \hfill \\ e \hfill \\ \end{gathered} \right] - \left[ \begin{gathered} {\hat{v}} \hfill \\ v_{e} \hfill \\ \end{gathered} \right] $$

The least squares solution of Eq. (11) is to find the parameter vector \(x\) that satisfies:

$$ \min \left\| {\left[ \begin{gathered} R_{0} \hfill \\ A \hfill \\ \end{gathered} \right]x} \right. - \left. {\left[ \begin{gathered} z_{0} \hfill \\ z \hfill \\ \end{gathered} \right]} \right\|^{2} { = }\min \left\| {\left( \begin{gathered} {\hat{R}} \hfill \\ 0 \hfill \\ \end{gathered} \right)} \right.x - \left. {\left( \begin{gathered} {\hat{z}} \hfill \\ e \hfill \\ \end{gathered} \right)} \right\|^{2} = \min \left( {\left\| {\hat{R}x - \left. {\hat{z}} \right\|} \right.^{2} + \left\| {\left. e \right\|} \right.^{2} } \right) $$

where \(\hat{R}\) is also an upper triangular matrix and \(e\) is the a posteriori residual vector corresponding to the observations \(z\). It should be noted that the a posteriori residual vector \(e\) also follows the standard normal distribution like the noise vector of the observations and initial information as \(T\) is an orthogonal transformation.

In order to minimize the norm of the residual vector, it is obvious that \(x\) must satisfy:

$$ \hat{R}x = \hat{z} $$

Then, the estimates and their covariance matrix can be derived accordingly. Equation (13) can also be used as initial information to be combined with new observations or with state equations for sequential estimation. It is obvious that the orthogonal transformation \(T\) is the key of SRIF and will be used for both time and measurement update.

Householder transformation

The Householder orthogonal transformation is a computationally efficient and numerically stable approach among all the QR factorization methods (Demmel, 1997). It is carried out column by column from left to right of the matrix to be factorized and ended with an upper-right triangular matrix. The main purpose to repeat this algorithm here is to explain how to calculate the sensitivity vectors needed for the detection of the possible outliers in the quality control.

Given is a unit vector \(u\), its orthogonal space is \(U_{ \bot }\), for any vector \(g\), its reflection \(g^{\prime}\) with respect to \(U_{ \bot }\) can be obtained by the Householder transformation \(T_{u}\) (Bierman, 2006):

$$ g^{\prime} = T_{u} {\text{g}} $$


$$ T_{u} = I - 2uu^{T} $$

If \(g\) and \(g^{\prime}\) are given, \(u\) can be calculated for getting the transformation matrix:

$$ u = \left( {g - g^{\prime}} \right)/\left| {g - g^{\prime}} \right| $$

The triangularization of an information matrix is carried out column by column from left to right sequentially. For the j-th column the transformation is applied to the low-right part of the matrix and the transformation matrix \(T_{j}\) can be expressed by the corresponding vector \(u_{j}\), whereas the rest remains unchanged. The complete transformation matrix for the whole matrix is:

$$ T = \mathop \prod \limits_{j = n}^{1} T_{j} { } $$

In practice, when we apply \(T\) to vector \(a\), instead of reconstructing \(T\) which is too time consuming we reform the matrix multiplication to vector addition as:

$$ a_{j} = T_{j} a_{j - 1} = a_{j - 1} - \left( {u_{j}^{T} a_{j - 1} } \right) u_{j} $$

Start from \(j\) = 1 with \(a_{0}\) = \(a\) to \(j\) = \(n\), the resulted \(a_{n}\) is the transformed vector of \(a\).

Time update

In real-time satellite clock estimation, the state vector \(x\) includes the deterministic parameters \(y\) and the stochastic parameters \(p\), of which the former are constant at all epochs such as ambiguities and the latter vary over epochs such as satellite and receiver clocks. After measurement update, Eq. (13) can be expressed as

$$ \;\left[ \begin{gathered} \hat{R}_{{p_{i - 1} }} \;\hat{R}_{{p_{{{\text{i}} - 1}}^{{}} y}} \hfill \\ \;\;0\;\;\;\hat{R}_{y} \hfill \\ \end{gathered} \right]\left[ \begin{gathered} p_{i - 1} \hfill \\ y \hfill \\ \end{gathered} \right] = \left[ \begin{gathered} \hat{z}_{{p_{i - 1} }} \hfill \\ \hat{z}_{y} \hfill \\ \end{gathered} \right] $$

Combining Eq. (19) and the state equations Eq. (7) the information matrix for time update reads:

$$ \;\left[ \begin{gathered} - \overline{\Phi }_{i,i - 1} \;R_{{w_{i} }} \;\;\;0 \hfill \\ \;\hat{R}_{{p_{{i{ - }1}} }} \;\;\;\;0\;\;\;\;\hat{R}_{{p_{{i{ - }1}} y}} \hfill \\ \;\;\;0\;\;\;\;\;\;0\;\;\;\;\hat{R}_{y} \hfill \\ \end{gathered} \right]\left[ \begin{gathered} p_{i - 1} \hfill \\ p_{i} \hfill \\ y \hfill \\ \end{gathered} \right] = \left[ \begin{gathered} z_{{w_{i} }} \hfill \\ \hat{z}_{{p_{{i{ - }1}} }} \hfill \\ \hat{z}_{y} \hfill \\ \end{gathered} \right] $$

Applying the Householder transformation, we obtain the following equation:

$$ \;\left[ \begin{gathered} \tilde{R}_{{p_{{i{ - }1}} }} \;\;\;\tilde{R}_{{p_{{i{ - }1}} p_{i} }} \;\;\;0 \hfill \\ \;0\;\;\;\;\;\tilde{R}_{{p_{i} }} \;\;\;\;\;\tilde{R}_{{p_{i} y}} \hfill \\ \;0\;\;\;\;\;\;0\;\;\;\;\;\;\;\tilde{R}_{y} \hfill \\ \end{gathered} \right]\left[ \begin{gathered} p_{{i{ - }1}} \hfill \\ p_{i} \hfill \\ y \hfill \\ \end{gathered} \right] = \left[ \begin{gathered} \tilde{z}_{{w_{i} }} \hfill \\ \tilde{z}_{{p_{i} }} \hfill \\ \tilde{z}_{y} \hfill \\ \end{gathered} \right] $$

Obviously, the outdated parameters \(p_{{i{ - }1}}\) can be removed from Eq. (21) and the state vector can be predicted by solving the following equation:

$$ \;\left[ \begin{gathered} \;\tilde{R}_{{p_{i} }} \;\;\;\tilde{R}_{{p_{i} y}} \hfill \\ \;0\;\;\;\;\;\;\;\tilde{R}_{y} \hfill \\ \end{gathered} \right]\left[ \begin{gathered} \;p_{i} \hfill \\ \;y \hfill \\ \end{gathered} \right] = \left[ \begin{gathered} \tilde{z}_{{p_{i} }} \hfill \\ \tilde{z}_{y} \hfill \\ \end{gathered} \right] $$

After the time update, the state parameters of the current epoch are introduced and Eq. (22) is ready as initial information for the measurement update.

Measurement update

Combining the observation equations at the epoch \(i\) of Eq. (6) and the initial information of Eq. (22) obtained from the time update, the general measurement update can be expressed as:

$$ \left[ \begin{gathered} \tilde{R}_{i} \hfill \\ A_{i} \hfill \\ \end{gathered} \right]x_{i} = \left[ \begin{gathered} \tilde{z}_{i} \hfill \\ z_{i} \hfill \\ \end{gathered} \right] $$

Similarly, by applying the Householder orthogonal transformation \(T\) to Eq. (23), we have the observation updated SRI with the residuals as:

$$ \left[ \begin{gathered} \hat{R}_{i} \hfill \\ 0 \hfill \\ \end{gathered} \right]x_{i} = \left[ \begin{gathered} \hat{z}_{i} \hfill \\ e_{i} \hfill \\ \end{gathered} \right] $$

or shortly as:

$$ \hat{R}_{i} x_{i} = \hat{z}_{i} $$

The standard full solution with the estimates and their covariance matrix can be derived straightforward as:

$$ \begin{gathered} x_{i} = \hat{R}_{i}^{ - 1} \hat{z}_{i} \hfill \\ D_{{x_{i} }} = \hat{R}_{i}^{ - 1} \hat{R}_{i}^{ - T} \hfill \\ \end{gathered} $$

However, in practice instead of the above full solution of Eq. (26), there are also other options for saving computation time according to the requirement of each individual application. For example, if no estimated parameters are desired in real-time, the solution step can be simply skipped. In the clock estimation, we need the clock estimates every epoch, but their STD which is used as the quality indicator can be updated at a much lower frequency, or can be simply approximated by the number of observation involved in the estimation.

Another reason for solving for parameters and their covariance matrix is to obtain the posterior residuals and their STDs for the online quality control which is essential for real-time data processing. It is worth to point out that the SRIF algorithm makes the posteriori residuals available before solving for the parameters, so that the quality control based on the posteriori residuals can be carried out in any case. This provides the opportunity to speed up the computation and makes SRIF more efficient than KF and LSQ.

For the next epoch i + 1, Eq. (26) is considered as a prior information the same as Eq. (19) for time-update, so that sequential processing can be carried out for real-time processing.

Parameter elimination

The deactivated parameters, such as the ambiguity parameters for previous data arcs and the parameters to mitigate the effect of outliers should be eliminated from SRIF to save computer memory and to reduce computation burden. Assuming that a set of deterministic parameters \(y_{1}\) will be eliminated and the remaining parameters are included in \(y_{2}\), that is, \(y\) are divided into the two groups, then by ignoring the epoch index Eq. (25) can be rewritten as

$$ \;\left[ \begin{gathered} \hat{R}_{p} \;\;\;\hat{R}_{{py_{1}^{{}} }} \;\;\hat{R}_{{py_{2}^{{}} }} \hfill \\ 0\;\;\;\;\;\hat{R}_{{y_{1}^{{}} }} \;\;\;\hat{R}_{{y_{12}^{{}} }} \hfill \\ 0\;\;\;\;\;0\;\;\;\;\;\;\hat{R}_{{y_{2}^{{}} }} \hfill \\ \end{gathered} \right]^{b} \left[ \begin{gathered} p \hfill \\ y_{1} \hfill \\ y_{2} \hfill \\ \end{gathered} \right] = \left[ \begin{gathered} \hat{z}_{p} \hfill \\ \hat{z}_{{y_{1}^{{}} }} \hfill \\ \hat{z}_{{y_{2}^{{}} }} \hfill \\ \end{gathered} \right]^{b} $$

with the index \(b\) for the SRI before the elimination. In order to remove the parameter \(y_{1}\), the parameters vector in Eq. (27) should be re-sorted as

$$ \;\left[ \begin{gathered} \hat{R}_{{y_{1}^{{}} }} \;\;\;\;0\;\;\;\;\;\hat{R}_{{y_{2}^{{}} }} \hfill \\ \hat{R}_{p} \;\;\;\;\hat{R}_{{py_{1}^{{}} }} \;\;\hat{R}_{{py_{2}^{{}} }} \hfill \\ \;0\;\;\;\;\;\;0\;\;\;\;\;\hat{R}_{{y_{2}^{{}} }} \hfill \\ \end{gathered} \right]^{b} \left[ \begin{gathered} y_{1} \hfill \\ p \hfill \\ y_{2} \hfill \\ \end{gathered} \right] = \left[ \begin{gathered} \hat{z}_{{y_{1}^{{}} }} \hfill \\ \hat{z}_{p} \hfill \\ \hat{z}_{{y_{2}^{{}} }} \hfill \\ \end{gathered} \right]^{b} $$

By applying Householder transformation on Eq. (28), we get

$$ \;\left[ \begin{gathered} \hat{R}_{{y_{1}^{{}} }} \;\;\;\hat{R}_{{y_{1}^{{}} p}} \;\;\hat{R}_{{y_{1}^{{}} y_{2}^{{}} }} \hfill \\ \;0\;\;\;\;\;\hat{R}_{p} \;\;\;\;\hat{R}_{{py_{2}^{{}} }} \hfill \\ \;0\;\;\;\;\;\;0\;\;\;\;\;\hat{R}_{{y_{2}^{{}} }} \hfill \\ \end{gathered} \right]\left[ \begin{gathered} y_{1} \hfill \\ p \hfill \\ y_{2} \hfill \\ \end{gathered} \right] = \left[ \begin{gathered} \hat{z}_{{y_{1}^{{}} }} \hfill \\ \hat{z}_{p} \hfill \\ \hat{z}_{{y_{2}^{{}} }} \hfill \\ \end{gathered} \right] $$

Finally, the parameter vector \(y_{1}\) can be removed as it is independent of the existing parameters and will never be used afterwards, and we can obtain the following equation for the time update for the next epoch or measurement update:

$$ \;\left[ \begin{gathered} \;\hat{R}_{p} \;\;\;\;\hat{R}_{{py_{2}^{{}} }} \hfill \\ \;\;0\;\;\;\;\;\hat{R}_{{y_{2}^{{}} }} \hfill \\ \end{gathered} \right]\left[ \begin{gathered} p \hfill \\ y_{2} \hfill \\ \end{gathered} \right] = \left[ \begin{gathered} \hat{z}_{p} \hfill \\ \hat{z}_{{y_{2}^{{}} }} \hfill \\ \end{gathered} \right] $$

Real-time quality control of SRIF

In this section, we develop a practical real-time quality control procedure for SRIF based on the study by Shi et al. (2008), dedicating to the processing of huge GNSS networks, and make effort to improve its computational efficiency. The new approach follows the well-known procedure with three sequential steps: detection, identification, and adaptation (Teunissen, 1990, 1998, 2018; Yang et al., 2010) and is presented in detail hereafter.


The first step of the SRIF QC is to detect the existence of undetected cycle slips or outliers in the observation vector. Starting with the measurement update model of Eq. (23) including the information after the time update and the observations at the current epoch, Eq. (24) is obtained by applying the orthogonal transformation \(T\). In Eq. (24) \(e_{i}\) is the corresponding vector of the posterior residuals at the current epoch which theoretically satisfies \(e_{i} \sim N\left( {0,I} \right)\), and the variance of unit weight can be calculated as:

$$ \hat{\sigma }^{2} = \frac{{e_{i}^{T} e_{i} }}{m} $$

where \(e_{i}^{T} e_{i}\) follows the Chi-square distribution with the degrees of freedom m.

In principle, we can test the individual residuals or the variance of unit weight of Eq. (31) to detect whether there is any outlier or not. In this study, we check both by constructing the following simple hypothetical test:

$$ H_{0} :\left| {e_{i} } \right|_{\max } < k_{1} \;{\text{and}}\;\hat{\sigma } < k_{2} $$

where \(k_{1}\) and \(k_{2}\) are the thresholds for the residuals and unit weight STD, respectively, and theoretically they can be set according to their distributions. In this study for the multi-GNSS clock estimation, we use the empirical value of 5.0 and 1.5, respectively, which are based on our long-term operational processing experience at the GFZ IGS real-time analysis center. It is worth to mention that the unit weight STD depends on the a priori STD of the observations, which should be fine-tuned for each station, so that the unit weight STD is on average close to 1. This can affect the selection of the aforesaid thresholds. For example, a too optimistic the a priori STD for observations will results in larger residuals and consequently a large STD of unit weight, resultinng in more false outliers detected. In contrast, with a too large the a priori STD for observations, we may fail to detect the real outliers.

If \(H_{0}\) is accepted, there is no problematic observation at this epoch; otherwise, usually at least one outlier exists in the observation vector. It should be noted that the rejection of \(H_{0}\) can also be caused by the inaccurate modeling of the state parameters. However, in this contribution, we focus only on the quality control for observation blunders.


After \(H_{0}\) is rejected, the second step of the SRIF quality control is to find out which observations are contaminated by undetected cycle slips or blunders. The basic idea is to extend the observation model to include the possible outliers and then check whether under the extended model the \(H_{0}\) can be accepted. We first present the approach and then discuss how to select the outlier candidates from thousands of observations.

Assuming that there are \(n_{b}\) possible outliers with the observation index ip(k), k = 1,2,…\(n_{b}\), the function model Eq. (23) can be extended by introducing the corresponding outlier parameters \(\Delta\) with the a priori values of zero and variance matrix \(D_{\Delta } = R_{\Delta }^{ - 1} R_{\Delta }^{ - T}\) as:

$$ \left[ \begin{gathered} \tilde{R}_{i} \;\;\;\;0 \hfill \\ 0\;\;\;\;\;R_{\Delta } \hfill \\ A_{i} \;\;\;\;\theta_{\Delta } \hfill \\ \end{gathered} \right]\left[ \begin{gathered} x \hfill \\ \Delta \hfill \\ \end{gathered} \right] = \left[ \begin{gathered} \tilde{z}_{i} \hfill \\ 0 \hfill \\ z_{i} \hfill \\ \end{gathered} \right] $$

where \(\theta_{\Delta }\) is a matrix of \(m \times n_{b}\) with unit vector for all the columns, and for its k-th column only the ip(k)-th element equals to 1. By applying the same orthogonal transformation as that used to Eq. (23) in the measurement update at epoch i, we can get

$$ \left[ \begin{gathered} \hat{R}_{i} \;\;\;\hat{R}_{\Delta ,i} \hfill \\ 0\;\;\;\;\;R_{\Delta } \hfill \\ 0\;\;\;\;\;S_{\Delta ,i} \hfill \\ \end{gathered} \right]\left[ \begin{gathered} x \hfill \\ \Delta \hfill \\ \end{gathered} \right] = \left[ \begin{gathered} \hat{z}_{i} \hfill \\ 0 \hfill \\ e_{i} \hfill \\ \end{gathered} \right] $$


$$ \begin{gathered} \hat{R}_{\Delta ,i} { = }\left[ {\hat{R}_{{\Delta_{1} }} ,\hat{R}_{{\Delta_{2} }} , \cdot \cdot \cdot \hat{R}_{{\Delta_{{n_{b} }} }} } \right] \hfill \\ S_{\Delta ,i} { = }\left[ {S_{{\Delta_{1} }} ,S_{{\Delta_{2} }} , \cdot \cdot \cdot S_{{\Delta_{{n_{b} }} }} } \right] \hfill \\ \end{gathered} $$

where \(S_{\Delta ,i}\) can be considered as the sensitivity matrix of the residual vector \(e_{i}\) with respect to outliers \(\Delta\). It means that the magnitude of the un-detected cycle slips or blunders is mapped into the a posteriori residual vector through \(S_{\Delta ,i}\) as:

$$ e_{i} = S_{\Delta ,i} \Delta $$

It is clear that the residual vector \(e_{i}\) is a combination of outliers and observations noises, so the outlier parameters can be solved from Eq. (36) using the least square adjustment and the solution reads as

$$ \left\{ \begin{gathered} \hat{\Delta }{ = }\left( {S_{\Delta ,i}^{T} S_{\Delta ,i} } \right)^{ - 1} S_{\Delta ,i}^{T} e_{i} \hfill \\ \hat{v}_{\Delta } = e_{i} - S_{\Delta ,i} \hat{\Delta } \hfill \\ \hat{\sigma }_{0} = \frac{{\hat{v}_{\Delta }^{T} \hat{v}_{\Delta } }}{{m - n_{b} }} \hfill \\ \end{gathered} \right. $$

Then the same hypothetical test \(H_{0}\) can be conducted with the residuals and STD of the above solution. If the test is passed, the set of outliers should be accepted as the finally identified ones; otherwise, an additional problematic observation should be selected and added, then the same procedure from Eq. (33) to (37) is repeated until \(H_{0}\) is accepted. For the positioning of a single station, only tens of observations are involved per epoch, and hence it is possible to test all possible outlier combinations to identify the right ones. However, it is not possible for the real-time clock estimation using a global network, as the observation number per epoch reaches up to several thousands. Therefore, it is very important to select the outlier candidates which are critical to balance the product reliability and the computation efficiency.

Considering the situation of a global network with about 100 stations, there are enough redundant observations to detect the outliers which should show the largest residuals in the least squares adjustment. Therefore, we developed an empirical approach to select the potential outlier candidates according to the magnitude of the residuals. The residuals are sorted according to their absolute values and the largest one is selected as the most likely outlier in the associated adjustment. Then the above-mentioned identification procedure, that is, Eq. (33) to Eq. (37), is carried out. The whole identification will stop if the hypothesis \(H_{0}\) is accepted. Otherwise, the updated residuals of Eq. (37) will be used to find out the next most likely outlier according to their absolute values and added to the already selected ones for the next iteration. The procedure is repeated until the \(H_{0}\) is accepted or a certain number of observations has been marked as outliers, for example 100, in our operational data processing.

It must be pointed out that a sophisticated pre-processing should be implemented to find out as many problematic observations as possible, particularly the large outliers, and only few small outliers can remain undetected to reduce the computation cost of quality control and to avoid numerical instability caused by large outliers. We have designed for each satellite-station pair a channel-filter to identify outliers by checking the length of data gaps, the variation of raw phase and range observations, and especially the Melbourne-Wübbena combination and ionosphere-delay combination for jumps. From our operational results, after the channel-filtering the remaining outliers are quite few which will be presented in the experimental validation.

Another critical issue is the computation of the sensitivity vector \(S\) because there are thousands of observations, and each could be an outlier. Theoretically, we can compute and save the sensitivity for all the observations, however it is not only too time-consuming, but also needs a very huge memory. According to Eq. (18) where the matrix multiplication is replaced by vector addition, the sensitivity vector \(S\) for a single observation can be calculated by applying the orthogonal transformation to the corresponding vector. Therefore, only the sensitivity vectors for the observations selected as outlier candidates have to be calculated, which is usually very small in quantity, for example in the operational processing the epochs with one outlier account to only about 15.58%, and those with two account to about 5.28%..


Once the outliers are identified, the negative impact of the identified outliers must be removed from the filter. As it is very difficult to down-weight or weight negatively the corresponding observations, we adapt the filter by extending the function model as is done in the identification step. This is also because the most important effect comes from the cycle slips which can only be mitigated by adding an outlier parameter. The extended function model for the final identified outliers is already achieved with the help of the sensitivity vectors.

Assuming that there are \(n_{b}\) outliers found at the last step of the identification, the adapted model with the \(n_{b}\) outliers is already available, i.e., Eq. (34) where obviously \(\hat{R}_{i}\) is obtained in the measurement update, \(\hat{R}_{\Delta ,i}\) and \(S_{\Delta ,i}\) are already calculated as the sensitivity vectors in the identification step.

We can simply apply the same type of triangularization to the last \(n_{b}\) column to achieve the SRI for further data processing:

$$ \left[ \begin{gathered} \hat{R}_{i} \;\;\;\hat{R}_{\Delta ,i} \hfill \\ 0\;\;\;\;\;\hat{R}_{\Delta } \hfill \\ 0\;\;\;\;\;0 \hfill \\ \end{gathered} \right]\left[ \begin{gathered} x \hfill \\ \Delta \hfill \\ \end{gathered} \right] = \left[ \begin{gathered} \hat{z}_{i} \hfill \\ z_{\Delta } \hfill \\ \hat{e}_{i} \hfill \\ \end{gathered} \right] $$

Furthermore, the outlier parameters must be eliminated sooner. For a range outlier the introduced parameter can be removed directly, whereas the parameter for a phase observation could be either a cycle slip or an outlier. For a cycle slip, it can be replaced by the difference between the ambiguities before and after the cycle slip, then the previous ambiguity will be eliminated and only the new ambiguity is kept.

Assuming the ambiguities are \(n_{1}\) and \(n_{2}\), the \(\Delta n_{12} = n_{2} - n_{1}\), we have \(n_{1} = n_{2} - \Delta n_{12}\). Replace \(n_{1}\) in the Eq. (34) by \(n_{2} - \Delta n_{12}\), we only have to triangularize the last \(n_{b}\) columns, otherwise the triangularization must start from the column where \(n_{1}\) is. After the triangularization of the last \(n_{b}\) columns, the outlier parameters can be eliminated, and the information equation is ready for deriving an adapted solution and for the processing of the next epoch.

Realization of SRIF processing procedure

We upgraded the SRIF module in the PANDA software package, which was developed originally at Wuhan University, China, with the above-mentioned quality control approach, and the performance of the module is evaluated in an operational run at the GFZ IGS Real-Time analysis center. In this section we present the whole processing procedure of the upgraded SRIF module and its data flowchart. The key aspects related to the software realization and computational efficiency are emphasized.

The flowchart of the SRIF module is illustrated in Fig. 1. After the input of the information about stations and satellites involved in the processing and the corresponding processing setup, the initialization of the filter is carried out accordingly with the initial constraints and the normalized state equations. Then the processing of the epoch-wise observations starts, including reading real-time observations, data pre-processing, time update, measurement update, quality control and parameter estimation. The equations employed are listed on the right side of the processing steps, accordingly. It must be pointed out that the processing of the matrix transformation is realized based on the BLAS/LAPACK library which will speed up the computation significantly according to the performance of the computer facility in use.

Fig. 1
figure 1

Flowchart of the SRIF processing with the new quality control approach

In addition to the processing procedure, the information matrix of the SRIF is also very important, as almost all the steps in the flowchart are working on this array and its change in the procedure is actually the data flowchart of the processing. Figure 2 shows the SRI matrix.

Fig. 2
figure 2

Square Root Information matrix used in the software implementation and the information storage related to the algorithm

After the initialization, the initial constraints of all the parameters are transferred to \(R_{0}\) and \(Z_{0}\) which are put on the upper-right marked with \(R\) and \(Z_{1}\), respectively. The size for \(R\) is dynamically controlled by the total number of the active parameters \(n_{{{\text{tot}}}}\), then the dimension of \(R\) is \(n_{{{\text{tot}}}} \times (n_{{{\text{tot}}}} + 1)\). The parameters are divided into two groups: stochastic and deterministic parameters. The stochastic parameters will be eliminated epoch-by-epoch and they are put in the front of the others for saving computation cost of elimination. Worth to mention that the ambiguity parameters are kept at the end of the parameter list as they are maintained according to the actual observed satellites. The rows below \(R\) are for observation update and usually should be able to include all observations at one epoch, otherwise the update must be carried out in batches. In order to make the parameter elimination easy, the SRI matrix is extended for the parameters to be removed. While removing a set of parameters, their information is moved into the extend place and the original is prepared ready for the same parameter but for the next epoch, and the parameters can be removed after applying a corresponding triangularization. This can also be utilized for time update since its major processing is to remove the state parameters at the previous epoch after adding the state equations. In the observation update, the \(u\) vector with respect to the column-wise transformation matrix is saved in the same column but the low-left part for the computation of the sensitivity vectors used in the quality control.

Operational validation


A network of 85 globally distributed multi-GNSS stations is employed in the operational clock estimation at the GFZ real-time analysis center for the validation. All the stations can track both GPS and GLONASS signals, while 72 and 61 stations can track Galileo and BDS-2 signals, respectively. Most of the real-time observation streams are provided by IGS and the Multi-GNSS Experiment (MGEX), and several stations are provided by GFZ and the German Federal Agency for Cartography and Geodesy (BKG). Figure 3 shows the distribution of stations and the corresponding tracking status. It should be mentioned that the real-time data streams are not as stable as the recorded observation files because of the data communication. In general, at least 75 stations are available for clock estimation.

Fig. 3
figure 3

Distribution of stations for the multi-GNSS real-time clock estimation. All 85 stations can track both GPS and GLONASS signals, among which 72 and 61 stations can track Galileo and BDS-2, respectively

Software and processing strategy

The upgraded PANDA software package with the new quality control procedure is utilized for the validation processing on a Linux computer with eight Intel Xeon 3.5 GHz processors. The data processing strategy for multi-GNSS satellite clock estimation is summarized in Table 1. It should be mentioned that in the operational real-time clock estimation the ambiguities are estimated as float constant and not fixed.

Table 1 Modeling and parameterization strategy for multi-GNSS real-time satellite clock estimation

Performance of quality control

The validation processing has been running since 1. June 2021 and there is no unexpected system crash or restart. The performance of the online quality control is investigated using the statistics of the detected outliers and computational cost.

Taking the result on 8 June 2021 as an illustration, the computation time at each epoch either with or without quality control is shown in Fig. 4. The epochs without outliers are marked in blue, and those with outliers in red. We can see that there is no significant increase in the computation time when the outliers are detected, and the average computation time is 2.06 s and 2.11 s for the epochs without and with outliers, respectively. Compared to the result by Fu et al. (2019), in which 0.4 s is additionally needed for quality control to an averaged epoch computation time of 2.4 s, the computation time for quality control of the new approach for SRIF in this study is significantly reduced.

Fig. 4
figure 4

The epoch-wise computation time for clock estimation with and without quality control on 8 June 2021

In order to explore the distribution of the number of detected outliers and the relationship with computation time, the frequency of epochs with a certain number of outliers is retrieved from the results in the whole month of June and listed in Table 2. Among all the epochs, 67.63% are free of outliers due to the quality control applied in the pre-processing, and the average computation time is only 2.07 s. Among the remaining epochs, about half of them are with 1 outlier, and the percentage of epochs with more than 10 outliers is about 0.3%. The computation time increases along with the number of detected outliers, in general the time is less than 3 s even with 9 outliers. For those epochs that suffer from a larger number of outliers, i.e., more than 10, the clock estimation usually can still be completed within 5 s with very few exceptions. However, if more stations and satellites are involved in the processing, it might be a problem to keep the processing time within 5 s to meet the current requirements.

Table 2 Distribution of the number of detected outliers and the averaged computation time in June 2021

Clock precision

For further evaluation, the operational real-time clock estimates are compared with the GBM products, the MGEX final products provided by GFZ (Deng et al., 2016). To remove the impact of clock datum used in different solutions, we formed the single-differenced clocks in each system between these two products, using G01, R01, E01, and C11 as the reference clock for GPS, GLONASS, GALILEO, and BDS, respectively. Moreover, we also removed the radial orbit differences between the different orbits used herein and by GBM. Figure 5 presents the monthly average STD of the clock differences for GPS, GLONASS, GALILEO, and BDS, from top to bottom. Note that we did not present the mean or RMS values of the clock differences as the systematic biases between different solutions are much larger than the STD value, but they have insignificant impact for the positioning users and can be compensated by the ambiguity parameters.

Fig. 5
figure 5

STD of the satellite clock differences between the operational real-time estimates and the GBM final products, for GPS, GLONASS, GALILEO, and BDS from top to bottom. The average values of all satellites for each system are given in the legend. Note that for BDS the average values of the IGSO/MEO and GEO satellites are both given

For the GPS satellites, the STD values are generally smaller than 0.1 ns and the average value is 0.06 ns. For the GLONASS satellites, the average STD value is 0.24 ns. The Galileo satellites have a comparable performance to GPS with an average STD 0.06 ns. As for BDS, the average STD value is 0.11 ns and 0.36 ns for the MEO/IGSO and GEO satellites, respectively. The relatively larger STD values of BDS GEO satellites are caused by the poor tracking geometry with regional network, and the poor orbit quality which has a meter-level agreement between different ACs. As shown in the figure, the real-time clock estimates have a good agreement compared to the post-processing product, indicating the quality control procedure works well in the operational processing.


To meet the requirements in the high-rate update of precise satellite clock estimation for real-time precise positioning service, the SRIF estimator is suggested because of its high numerical stability and computational efficiency.

To improve the processing efficiency, we developed a new quality control procedure in SRIF which is capable of processing networks with many stations and observations. In the procedure, the most-like outliers are selected according to the posterior residuals one by one and are tested together based on the sensitivity vectors of the observations as candidate outliers. As there are usually only a few outliers at each epoch after the data pre-processing and only the sensitivity vectors of the candidates are calculated, the computation cost for the quality control is neglectable compared to the total epoch processing time.

The new quality control procedure is implemented into the SRIF module of the PANDA software package. An experimental validation has been running operationally at GFZ since 1 June 2021 for the estimation of satellite clocks using the data streams from a global network of 85 GNSS stations. For the integrated processing of GPS, GLONASS, Galileo and BDS, on average about 75 active stations and 72 satellites are processed. The computation time for each epoch is about 2.07 s when there are no outliers. There are about 67.63% of the total epochs without any outlier, and 15.58% with one outlier, and 0.3% with more than 10 outliers. The computation time increases along with the number of detected outliers but still stays within 3 s for all the epochs with less than 10 outliers. Among the other 0.3%, there are only very few epochs with rather large number of detected outliers and the processing time could be longer than 5 s, which should be further investigated.

The operational real-time satellite clocks show good agreement with the GBM final products, with an average of 0.06 ns, 0.24 ns, 0.06 ns, 0.11 and 0.36 ns for GPS, GLONASS, Galileo, BDS MEO&IGSO, and BDS GEO satellites, respectively. This result further confirms the efficiency of the SRIF processing and the new quality control method.

Availability of data and materials

Data sharing is not applicable to this article as no dataset was generated in this review article.


  • Allen, R. M., & Ziv, A. (2011). Application of real time GPS to earthquake early warning. Geophysical Research Letters.

    Article  Google Scholar 

  • Bertiger, W., Bar-Sever, Y., Dorsey, A., Haines, B., Harvey, N., Hemberger, D., et al. (2020). GipsyX/RTGx, a new tool set for space geodetic operations and research. Advances in Space Research, 66(3), 469–489.

    Article  Google Scholar 

  • Bierman, G. J. (1975). The treatment of bias in the square-root information filter/smoother. Journal of Optimization Theory and Applications, 16(1–2), 165–178.

    Article  MathSciNet  MATH  Google Scholar 

  • Bierman, G. J. (2006). Factorization methods for discrete sequential estimation. Courier Corporation.

    Article  MATH  Google Scholar 

  • Böhm, J., Niell, A., Tregoning, P., & Schuh, H. (2006). Global Mapping Function (GMF): A new empirical mapping function based on numerical weather model data. Geophysical Research Letters.

    Article  Google Scholar 

  • Caissy, M., Weber, G., Agrotis, L., Wübbena, G., & Hernandez-Pajares, M. (2011). The IGS real-time pilot project—the development of real-time IGS correction products for precise point positioning. Geophysical Research Abstracts 13.

  • Chen, H., Jiang, W., Ge, M., Wickert, J., & Schuh, H. (2014a). An enhanced strategy for GNSS data processing of massive networks. Journal of Geodesy, 88(9), 857–867.

    Article  Google Scholar 

  • Chen, H., Jiang, W., Ge, M., Wickert, J., & Schuh, H. (2014b). Efficient high-rate satellite clock estimation for PPP ambiguity resolution using carrier-ranges. Sensors, 14(12), 22300–22312.

    Article  Google Scholar 

  • Dai, Z., Dai, X., Zhao, Q., & Liu, J. (2019). Improving real-time clock estimation with undifferenced ambiguity fixing. GPS Solutions, 23(2), 1–12.

    Article  Google Scholar 

  • Dai, X., Lou, Y., Dai, Z., Qing, Y., Li, M., & Shi, C. (2019). Real-time precise orbit determination for BDS satellites using the square root information filter. GPS Solutions, 23(2), 1–14.

    Article  Google Scholar 

  • Demmel, J. W. (1997). Applied numerical linear algebra. Society for Industrial and Applied Mathematics.

  • Deng, Z., Fritsche, M., Uhlemann, M., Wickert, J., & Schuh, H. (2016). Reprocessing of GFZ multi-GNSS product GBM. In IGS workshop (pp. 08–12)

  • Dixon, K. (2006). StarFire: A global SBAS for sub-decimeter precise point positioning. In Proceedings of the 19th international technical meeting of the satellite division of the institute of navigation (ION GNSS 2006) (pp. 2286–2296).

  • Fu, W., Huang, G., Zhang, Q., Gu, S., Ge, M., & Schuh, H. (2019). Multi-GNSS real-time clock estimation using sequential least square adjustment with online quality control. Journal of Geodesy, 93(7), 963–976.

    Article  Google Scholar 

  • Ge, M., Gendt, G., Dick, G., Zhang, F. P., & Rothacher, M. (2006). A new data processing strategy for huge GNSS global networks. Journal of Geodesy, 80(4), 199–203.

    Article  MATH  Google Scholar 

  • Ge, M., Chen, J., Douša, J., Gendt, G., & Wickert, J. (2012). A computationally efficient approach for estimating high-rate satellite clock corrections in realtime. GPS Solutions, 16(1), 9–17.

    Article  Google Scholar 

  • Gong, X., Gu, S., Lou, Y., Zheng, F., Ge, M., & Liu, J. (2018). An efficient solution of real-time data processing for multi-GNSS network. Journal of Geodesy, 92(7), 797–809.

    Article  Google Scholar 

  • Hauschild, A., & Montenbruck, O. (2009). Kalman-filter-based GPS clock estimation for near real-time positioning. GPS Solutions, 13(3), 173–182.

    Article  Google Scholar 

  • Jiang, X., Gu, S., Li, P., Ge, M., & Schuh, H. (2019). A decentralized processing schema for efficient and robust real-time multi-GNSS satellite clock estimation. Remote Sensing, 11(21), 2595.

    Article  Google Scholar 

  • Laurichesse, D., Mercier, F., & Berthias, J. P. (2009). Real time precise GPS constellation orbits and clocks estimation using zero-difference integer ambiguity fixing. In Proceedings of the 2009 international technical meeting of the institute of navigation (pp. 664–672).

  • Laurichesse, D., Cerri, L., Berthias, J. P., & Mercier, F. (2013). Real time precise GPS constellation and clocks estimation by means of a Kalman filter. In Proceedings of the 26th international technical meeting of the satellite division of the institute of navigation (ION GNSS+ 2013) (pp. 1155–1163).

  • Leandro, R., Landau, H., Nitschke, M., Glocker, M., Seeger, S., Chen, X., ... & Kipka, A. (2011). RTX positioning: The next generation of cm-accurate real-time GNSS positioning. In Proceedings of the 24th international technical meeting of the satellite division of the institute of navigation (ION GNSS 2011) (pp. 1460–1475).

  • Li, X., Dick, G., Ge, M., Heise, S., Wickert, J., & Bender, M. (2014). Real-time GPS sensing of atmospheric water vapor: Precise point positioning with orbit, clock, and phase delay corrections. Geophysical Research Letters, 41(10), 3615–3621.

    Article  Google Scholar 

  • Lichten, S. M. (1990). Estimation and filtering for high-precision GPS positioning applications. Manuscripta Geodaetica, 15, 159–176.

    Google Scholar 

  • Liu, J., & Ge, M. (2003). PANDA software and its preliminary result of positioning and orbit determination. Wuhan University Journal of Natural Sciences, 8(2), 603.

    Article  Google Scholar 

  • Luzum, B., & Petit, G. (2012). The IERS Conventions (2010): reference systems and new models. Proceedings of the International Astronomical Union, 10(H16), 227–228.

    Article  Google Scholar 

  • Saito, E., Kubo, N., & Shimoda, K. (2016). Performance evaluation and a new disaster prevention system of precise point positioning at sea. In Proceedings of the 29th international technical meeting of the satellite division of the institute of navigation (ION GNSS+ 2016) (pp. 3412–3432).

  • Schmid, R., Dach, R., Collilieux, X., Jäggi, A., Schmitz, M., & Dilssner, F. (2016). Absolute IGS antenna phase center model igs08. atx: status and potential improvements. Journal of Geodesy, 90(4), 343–364.

    Article  Google Scholar 

  • Shi, C., Geng J, Meng X, Ge M, Teferle N, Dodson A (2008). A novel real-time data screening approach in urban navigation, European Navigation Conference (ENC) 2008.

  • Teunissen, P. J. G. (1990). Quality control in integrated navigation systems. IEEE Aerospace and Electronic Systems Magazine, 5(7), 35–41.

    Article  Google Scholar 

  • Teunissen, P. J. G. (2018). Distributional theory for the DIA method. Journal of Geodesy, 92(1), 59–80.

    Article  Google Scholar 

  • Teunissen, P. J. G. (1998). Quality control and GPS. In GPS for Geodesy (pp. 271–318). Springer, Berlin, Heidelberg.

  • Wu, J. T., Wu, S. C., Hajj, G. A., Bertiger, W. I., & Lichten, S. M. (1992). Effects of antenna orientation on GPS carrier phase. Astrodynamics, 1991, 1647–1660.

    Google Scholar 

  • Yang, Y., & Gao, W. (2006). An optimal adaptive Kalman filter. Journal of Geodesy, 80(4), 177–183.

    Article  MATH  Google Scholar 

  • Yang, Y., Gao, W., & Zhang, X. (2010). Robust Kalman filtering with constraints: A case study for integrated navigation. Journal of Geodesy, 84(6), 373–381.

    Article  Google Scholar 

  • Zhang, Q., Moore, P., Hanley, J., & Martin, S. (2007). Auto-BAHN: Software for near real-time GPS orbit and clock computations. Advances in Space Research, 39(10), 1531–1538.

    Article  Google Scholar 

  • Zhang, X., Li, X., & Guo, F. (2011). Satellite clock estimation at 1 Hz for real-time kinematic PPP applications. GPS Solutions, 15(4), 315–324.

    Article  Google Scholar 

Download references


We thank IGS for providing the real-time GNSS data streams and the MGEX products.


This research is partly supported by the project “Early-Warning and Rapid Impact Assessment with real-time GNSS in the Mediterranean (EWRICA). Funded by the Federal Ministry of Education and Research, Germany.

Author information

Authors and Affiliations



Conceptualization and Methodology: XZ, XJ, and MG; Writing original draft: XZ; Editing: XZ, XJ, and MG; Review: XZ, XJ, PL, JW, MG, and HS. All authors read and approved the final manuscript.

Corresponding author

Correspondence to Xinyuan Jiang.

Ethics declarations

Competing interests

The authors declare that they have no competing interests.

Additional information

Publisher's Note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Rights and permissions

Open Access This article is licensed under a Creative Commons Attribution 4.0 International License, which permits use, sharing, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons licence, and indicate if changes were made. The images or other third party material in this article are included in the article's Creative Commons licence, unless indicated otherwise in a credit line to the material. If material is not included in the article's Creative Commons licence and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder. To view a copy of this licence, visit

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Zuo, X., Jiang, X., Li, P. et al. A square root information filter for multi-GNSS real-time precise clock estimation. Satell Navig 2, 28 (2021).

Download citation

  • Received:

  • Accepted:

  • Published:

  • DOI: