1 Nonlinear Observation Equations

In this section, the nonlinear observations equations for code and phase are reviewed, first for a single global or regional navigation satellite system (GNSS or RNSS) and after that the observation equations in case the GNSS receiver tracks observations from more than one constellation (the multiconstellation case).

1.1 Single-GNSS Observation Equations

Recall from Chap. 19, the nonlinear observation equations for \(j=1,\ldots,f_{\mathrm{S}}\) frequencies of a certain GNSS constellation S, at time of observation t in the GNSS system time . Then the observation equation for the code or pseudorange from satellite s tracked by receiver r at epoch t can be given as

$$\begin{aligned}p_{r,j}^{s}(t)&=\rho_{r}^{s}\left(t,t-\tau_{r}^{s}\right)+T_{r}^{s}(t)\\ &\quad\,+c\left[dt_{r}(t)+d_{r,j}^{\mathrm{S}}(t)+\Updelta d_{r,j}^{s}(t)\right]\\ &\quad\,-c\left[dt^{s}\left(t-\tau_{r}^{s}\right)-d_{j}^{s}\left(t-\tau_{r}^{s}\right)\right]\\ &\quad\,+\mu_{j}^{\mathrm{S}}{I}_{r}^{s}(t)+e_{r,j}^{s}(t)\;,\end{aligned}$$
(21.1)

while the carrier-phase observation equation reads

$$\begin{aligned}\varphi_{r,j}^{s}(t)&=\rho_{r}^{s}\left(t,t-\tau_{r}^{s}\right)+T_{r}^{s}(t)\\ &\quad\,+c\left[dt_{r}(t)+\delta_{{r},j}^{\mathrm{S}}(t)+\Updelta\delta_{{r},j}^{s}(t)\right]\\ &\quad\,-c\left[dt^{s}\left(t-\tau_{r}^{s}\right)-\delta_{j}^{s}\left(t-\tau_{r}^{s}\right)\right]\\ &\quad\,-\mu_{j}^{\mathrm{S}}{I}_{r}^{s}(t)+\lambda_{j}^{\mathrm{S}}{N}_{r,j}^{s}+\varepsilon_{r,j}^{s}(t)\;.\end{aligned}$$
(21.2)

The constellation identifier S is chosen in agreement with the RINEX convention (Annex A Data Formats) such that \(\mathrm{S}\in\{\mathrm{G},\mathrm{R},\mathrm{E},\mathrm{C},\mathrm{J},\mathrm{I},\ldots\}\), for GPS, GLONASS, Galileo, BeiDou (BDS), QZSS, IRNSS, etc. The notation in (21.1) and (21.2) is as follows

\(p_{{r},j}^{s}\) :

Code/pseudorange observable (m)

\(\varphi_{{r},j}^{s}\) :

Carrier-phase observable (m)

\(\rho_{r}^{s}\) :

Receiver–satellite range (m)

\(\tau_{r}^{s}\) :

Signal travel time (s)

\(T_{r}^{s}\) :

Tropospheric delay (m)

c :

Velocity of light (m/s)

dt r :

Receiver clock error (s)

dt s :

Satellite clock error (s)

\(d_{{r},j}^{\mathrm{S}}\) :

Receiver code hardware bias (s)

\(\delta_{{r},j}^{\mathrm{S}}\) :

Receiver phase hardware bias (s)

\(\Updelta d_{{r},j}^{s}\) :

Code interchannel bias (s)

\(\Updelta\delta_{{r},j}^{s}\) :

Phase interchannel bias (s)

\(d_{j}^{s}\) :

Satellite code hardware bias (s)

\(\delta_{j}^{s}\) :

Satellite-phase hardware bias (s)

\(\mu_{j}^{\mathrm{S}}\) :

Ionospheric coefficient

\({I}_{r}^{s}\) :

Ionospheric delay (m)

\(\lambda_{j}^{\mathrm{S}}\) :

Wavelength (m)

\({N}_{{r},j}^{s}\) :

Carrier-phase ambiguity (cyc)

\(e_{{r},j}^{s}\) :

Random code noise (m)

\(\varepsilon_{{r},j}^{s}\) :

Random carrier-phase noise (m).

The receiver hardware biases in (21.1) and (21.2 ), denoted as \(d_{{r},j}^{\mathrm{S}}(t)\) and \(\delta_{{r},j}^{\mathrm{S}}(t)\), are in principle different for each constellation (that is why they have a constellation index S), even when the signals are tracked on frequency bands that overlap between the constellations [21.1], as for example GPS L1 and Galileo E1. These hardware biases are caused by various reasons, including analog group delays in the frontend and digital delays. The correlation process in the receiver affects the resulting delays as well [21.2]. The difference in receiver hardware biases between signals of different constellations is referred to as intersystem bias (ISB) [21.3, 21.4, 21.5].

For constellations that transmit signals based on the frequency division multiple access (FDMA) technology (Chap. 4), the frequency is different per channel. In case of the GLONASS FDMA signals, the L1 frequency equals \(f_{1}^{\text{Rs}}={\mathrm{1602}}+\kappa^{s}(9/16)\) MHz (Chap. 8), where κs denotes the channel number that can take on the following integers: \(\kappa^{s}\in\{-7,-6,\ldots,+5,+6\}\). The GLONASS L2 frequency equals \(f_{2}^{\text{Rs}}={\mathrm{1246}}+\kappa^{s}(7/16)\) MHz. In case of FDMA signals, the code and phase observation equations are also contaminated by interchannel biases (ICBs) , denoted by \(\Updelta d_{{r},j}^{{s}}(t)\) and \(\Updelta\delta_{{r},j}^{s}(t)\). For signals that are based on the code division multiple access (CDMA) technology, the frequency is identical for all channels and the satellite index can thus be omitted. Also no ICBs show up for CDMA signals: \(\Updelta d_{{r},j}^{s}(t)=0\) and \(\Updelta\delta_{{r},j}^{s}(t)=0\).

It is emphasized that both satellite code bias and phase bias in (21.1) and (21.2), denoted as \(d_{j}^{s}(t-\tau_{r}^{s})\) and \(\delta_{j}^{s}(t-\tau_{r}^{s})\), respectively, are, like the receiver hardware biases, considered as additive parameters, that is, they have a (net) plus sign in the observation equations (whereas the satellite clock has a minus sign). The reason for doing so is to be consistent with the convention adopted by the International GNSS Service (IGS) [21.6].

In the above observation equations, it has been implicitly assumed that (frequency-dependent) offsets between the center of mass of the satellite and the satellite antenna reference point, as well as (frequency-dependent) offsets between the receiver antenna reference point and the receiver’s point to be determined by positioning, can be taken into account through dedicated terms on the right-hand side of the observation equations. However, within the following discussion, the terms are not further considered for the ease of notation, and the receiver–satellite range \(\rho_{r}^{s}(t,t-\tau_{r}^{s})\) is taken common for both code and phase, as well as for all frequencies.

In the code and phase-observation equations, the dispersive (first-order) ionospheric delays are mapped to one frequency, that is, \({I}_{{r},j}^{s}(t)=\mu_{j}^{\mathrm{S}}{I}_{r}^{s}(t)\). Usually \({I}_{r}^{s}(t)\) denotes the ionospheric delay for the first frequency, such that the frequency-dependent ionospheric coefficient is defined as follows

$$\mu_{j}^{\mathrm{S}}=\left(\frac{\lambda_{j}^{\mathrm{S}}}{\lambda_{1}^{\mathrm{S}}}\right)^{2}=\left(\frac{f_{1}^{\mathrm{S}}}{f_{j}^{\mathrm{S}}}\right)^{2}.$$
(21.3)

From this definition, it follows that for the first frequency \((j=1)\), the ionospheric coefficient equals \(\mu_{1}^{\mathrm{S}}=1\). In case of GLONASS FDMA signals, although the frequencies differ per channel, their (squared) L1–L2 ratio is independent of the channel, since in case of dual-frequency GLONASS

$$\mu_{2}^{\mathrm{R}}=\left(\frac{\lambda_{2}^{\text{Rs}}}{\lambda_{1}^{\text{Rs}}}\right)^{2}=\left(\frac{f_{1}^{\text{Rs}}}{f_{2}^{\text{Rs}}}\right)^{2}=\left(\frac{9}{7}\right)^{2}.$$
(21.4)

Note that for dual-frequency GPS \(\mu_{2}^{\mathrm{G}}=(77/60)^{2}\).

Effects that have not been accounted for in (21.1) and (21.2) are, among others, phase-center offsets and variations, phase wind-up (phase only), relativistic effects, a-priori tropospheric model, etc. (Chap. 19). For the present chapter they are dropped from the observation equations to ease the notation and to focus on the illustration of the basic positioning concepts.

1.2 Multi-GNSS Observation Equations

1.2.1 Constellation-Specific Time Frames

To derive the observation equations for multiple constellations, for simplicity it is assumed that a multi-GNSS receiver tracks data of two constellations, denoted as A and B. If the observations of system A are collected at receiver time t r (this is the time tag in the RINEX observation file), this (measured) receiver time deviates from the (unknown) system time of the first constellation tA by means of a receiver clock error dt r

$$t_{r}(t^{\mathrm{A}})=t^{\mathrm{A}}+dt_{r}(t^{\mathrm{A}})\;.$$
(21.5)

Note that for reasons of simplicity, we have ignored effects due to receiver hardware delays and other errors like receiver noise and multipath in above expression. Observations of system B that are collected at the same receiver time t r use different physical clocks to realize their own GNSS system time [21.7]. However, they can be expressed as function of the receiver clock error in the system time of A

$$t_{r}(t^{\mathrm{B}})=t^{\mathrm{B}}+dt_{r}(t^{\mathrm{B}})=t^{\mathrm{B}}+dt_{r}(t^{\mathrm{A}})-t^{\text{AB}}\;,$$
(21.6)

with \(t^{\text{AB}}=t^{\mathrm{B}}-t^{\mathrm{A}}\), the system time offset (thus: \(t_{r}(t^{\mathrm{A}})=t_{r}(t^{\mathrm{B}})\), see also Fig. 21.1 ). In case the first constellation is GPS and the second is Galileo, this offset is also known as GPS-to-Galileo time offset (GGTO) [21.8]. The time of transmission at a satellite of constellation A, which is denoted using superscript s, reads, ignoring satellite hardware delays

$$t^{s}\left(t^{\mathrm{A}}-\tau_{r}^{s}\right)=t^{\mathrm{A}}-\tau_{r}^{s}+dt^{s}\left(t^{\mathrm{A}}-\tau_{r}^{s}\right).$$
(21.7)

For a satellite of constellation B, denoted by superscript q, it reads

$$t^{q}\left(t^{\mathrm{B}}-\tau_{r}^{q}\right)=t^{\mathrm{B}}-\tau_{r}^{q}+dt^{q}\left(t^{\mathrm{B}}-\tau_{r}^{q}\right).$$
(21.8)

Converted to pseudoranges this yields for the two constellations, now including atmospheric delays, hardware delay parameters and noise terms

$$\begin{aligned}p_{{r},j}^{s}(t^{\mathrm{A}})&=c\left[t_{r}(t^{\mathrm{A}})-t^{s}\left(t^{\mathrm{A}}-\tau_{r}^{s}\right)\right]\\ &=\rho_{r}^{s}(t^{\mathrm{A}},t^{\mathrm{A}}-\tau_{r}^{s})+T_{r}^{s}(t^{\mathrm{A}})\\ &\quad\,+c\left[dt_{r}(t^{\mathrm{A}})+d_{{r},j}^{\mathrm{A}}(t^{\mathrm{A}})+\Updelta d_{{r},j}^{s}(t^{\mathrm{A}})\right]\\ &\quad\,-c\left[dt^{s}(t^{\mathrm{A}}-\tau_{r}^{s})-d_{j}^{s}(t^{\mathrm{A}}-\tau_{r}^{s})\right]\\ &\quad\,+\mu_{j}^{\mathrm{A}}{I}_{r}^{s}(t^{\mathrm{A}})+e_{{r},j}^{s}(t^{\mathrm{A}})\;,\\ p_{{r},j}^{q}(t^{\mathrm{B}})&=c\left[t_{r}(t^{\mathrm{B}})-t^{q}\left(t^{\mathrm{B}}-\tau_{r}^{q}\right)\right]\\ &=\rho_{r}^{q}\left(t^{\mathrm{B}},t^{\mathrm{B}}-\tau_{r}^{q}\right)+T_{r}^{q}(t^{\mathrm{B}})\\ &\quad\,+c\left[dt_{r}(t^{\mathrm{A}})-t^{\text{AB}}+d_{{r},j}^{\mathrm{B}}(t^{\mathrm{B}})+\Updelta d_{{r},j}^{q}(t^{\mathrm{B}})\right]\\ &\quad\,-c\left[dt^{q}\left(t^{\mathrm{B}}-\tau_{r}^{q}\right)-d_{j}^{q}\left(t^{\mathrm{B}}-\tau_{r}^{q}\right)\right]\\ &\quad\,+\mu_{j}^{\mathrm{B}}{I}_{r}^{q}(t^{\mathrm{B}})+e_{{r},j}^{q}(t^{\mathrm{B}})\;.\end{aligned}$$
(21.9)

Note that instead of the receiver clock in the time system of B, we have used the receiver clock in the time system of A, together with the system time offset, making use of (21.6), from which follows that \(dt_{r}(t^{\mathrm{B}})=dt_{r}(t^{\mathrm{A}})-t^{\text{AB}}\). We can do something similar for the receiver hardware bias of the observations of constellations B, making use of the following definition of the ISB

$$\begin{aligned}\text{ISB}_{{r},j}^{\text{AB}}(t^{\mathrm{A}},t^{\mathrm{B}})&=\left[d_{{r},j}^{\mathrm{B}}(t^{\mathrm{B}})-d_{{r},j}^{\mathrm{A}}(t^{\mathrm{A}})\right]\\ &\quad\,+\left[\Updelta d_{{r},j}^{q}(t^{\mathrm{B}})-\Updelta d_{{r},j}^{s}(t^{\mathrm{A}})\right].\end{aligned}$$
(21.10)

It is remarked that the interchannel terms only appear in case one of the constellations is based on FDMA. In that case, the ISB becomes satellite dependent; otherwise it is receiver dependent. Based on the ISB reparameterization, the code-observation equation for constellation B can be rewritten as

$$\begin{aligned}p_{{r},j}^{q}(t^{\mathrm{B}})&=\rho_{r}^{q}\left(t^{\mathrm{B}},t^{\mathrm{B}}-\tau_{r}^{q}\right)+T_{r}^{q}(t^{\mathrm{B}})\\ &\quad\,+c\left[dt_{r}(t^{\mathrm{A}})+d_{{r},j}^{\mathrm{A}}(t^{\mathrm{A}})+\Updelta d_{{r},j}^{s}(t^{\mathrm{A}})\right]\\ &\quad\,+c\left[\text{ISB}_{{r},j}^{\text{AB}}(t^{\mathrm{A}},t^{\mathrm{B}})-t^{\text{AB}}\right]\\ &\quad\,-c\left[dt^{q}\left(t^{\mathrm{B}}-\tau_{r}^{q}\right)-d_{j}^{q}\left(t^{\mathrm{B}}-\tau_{r}^{q}\right)\right]\\ &\quad\,+\mu_{j}^{\mathrm{B}}{I}_{r}^{q}(t^{\mathrm{B}})+e_{{r},j}^{q}(t^{\mathrm{B}})\;.\end{aligned}$$
(21.11)

Compared to the code-observation equation of constellation A (see first equation in (21.9 )), its counterpart for constellation B is now given as a function of the receiver clock, receiver hardware bias, as well as ICB (in case of GLONASS FDMA) of signals of constellation A. Also the ionospheric delays for the signals of constellation B can be expressed as ionospheric delays on the first frequency of constellation A by setting the ionospheric coefficient for B equal to \(\mu_{j}^{\mathrm{B}}=(\lambda_{j}^{\mathrm{B}}/\lambda_{1}^{\mathrm{A}})^{2}\). For the phase-observation equation of constellation B a similar derivation can be made. Advantage of the formulation that involves an ISB parameter over the original formulation is that under certain conditions it is possible to calibrate the ISBs. When the ISB and also the system time offset are known, the observations of the two constellations can be processed as if they correspond to one system.

Fig. 21.1
figure 1figure 1

Relation between time frames, receiver time, receiver clock error, and time offset of constellations A and B

The code observation equation (21.11) is written as a function of the time stamps in two different systems, that is, tA and tB. For most GNSS systems, the differences between the time systems are sufficiently small, such that they may be neglected for the evaluation of observables and parameters in (21.11). This also holds for the purpose of the evaluation of the times of transmission at the satellites (Sect. 21.4.1). For these purposes from now on, we will simply use a common t for the time stamps of different systems. However, the system time offset that itself is present as parameter in (21.11), that is, tAB, may not be ignored in the observation equations of the second constellation, since it is multiplied by the velocity of light. For example, the offset between GPS time (GPST) and Galileo system time (GST) can be several tens of nanoseconds or tens of meters (Chap. 9 or [21.9]). The offset between QZSS time (QZSST) and GPST is less than two meters [21.10]. The offset between IRNSS time (IRNSST) and GPST can be up to 3 m [21.11]. The difference between GPST and GLONASS system time can be several hundreds of nanoseconds (equivalent to hundreds of meters). The intersystem time offsets are broadcast as part of the navigation messages [21.12, 21.13] such that a user can correct his observations. The offset between GPST and GLONASS system time are broadcast as part of the navigation message of the GLONASS-M satellites [21.14]. Alternatively, the user can treat the offset as unknown parameter in his processing.

1.2.2 Constellation-Specific Reference Frames

Besides that each GNSS constellation realizes its own system time, its broadcast satellite positions are defined in its own coordinate system, see Table 21.1 for an overview. In order to solve multiconstellation positioning models, all satellite positions need to be defined in one common reference frame. Otherwise, transformation parameters need to be estimated together with the other model parameters. Although the realization of the reference frames depends on the full deployment of the ground-station network of new constellations, the differences are expected to be small, as they are all realizations of the International Terrestrial Reference System (ITRS). WGS84 coincides with the ITRF at the level of a few centimeters (Chap. 2). The difference between GTRF and WGS84 is aimed at the level of 3 cm [21.15], while the offset between JGS and WGS84 is expected to be less than 2 cm [21.10]. IRNSS uses WGS84 as its coordinate system [21.16]. The difference between CGCS2000 and WGS84 is at the level of a few centimeters. Also, the latest release PZ-90.11 of the GLONASS reference frame is consistent with ITRF at epoch 2011.0 at the centimeter level [21.17].

Table 21.1 Reference frames for GNSS–RNSS constellations

For (multiconstellation) SPP (Sect. 21.3.5), of which the positioning accuracy is at the 10 m level, it is not needed to take the differences between the constellation-specific reference frames into account. Also for relative (short-baseline) positioning these differences do not have to be taken into account, as they are, similar to orbit errors, canceled out if the baseline is of restricted length (Sect. 21.4.2). For PPP(-RTK) and long-baseline applications (Sect. 21.3.7 and Sect. 21.4) one can, however, not ignore these differences and they need to be accounted for. It should be noted that in case of precise IGS orbits, the satellite positions of the different constellations are all defined with respect to one reference frame (i. e., ITRF; Chap. 33).

2 Linearization of the Observation Equations

Since the GNSS observation equations are nonlinear in the parameters of interest, that is, the receiver position coordinates, they need to be linearized. In this section, the focus is on the linearization of the receiver–satellite range .

2.1 Linearizing the Receiver–Satellite Range

The GNSS observation equations are nonlinear in both the receiver and satellite position. Using \(t=t_{r}(t)-dt_{r}(t)\) (see (21.5)), the receiver–satellite range can be written as the following function

$$\begin{aligned}\rho_{r}^{s}(t,t-\tau_{r}^{s})&=\left\|\boldsymbol{r}^{s}(t-\tau_{r}^{s})-\boldsymbol{r}_{r}(t)\right\|\\ &=\left\|\boldsymbol{r}^{s}\left[t_{r}(t)-dt_{r}(t)-\tau_{r}^{s}\right]\right.\\ &\quad\left.\vphantom{\left[\tau_{r}^{s}\right]}-\boldsymbol{r}_{r}[t_{r}(t)-dt_{r}(t)]\right\|.\end{aligned}$$
(21.12)

The norm of a vector is defined as \(\|\cdot\|=\sqrt{(\cdot)^{\top}(\cdot)}\), where \((\cdot)^{\top}\) denotes a transposed vector (or matrix). The satellite position vector reads \(\boldsymbol{r}^{s}=\left[x^{s},y^{s},z^{s}\right]^{\top}\) and the receiver position vector \(\boldsymbol{r}_{r}=\left[x_{r},y_{r},z_{r}\right]^{\top}\).

With the true GNSS time t unknown, according to Taylor’s theorem (Chap. 22) the receiver–satellite range can be linearized with respect to the unknown receiver position \(\boldsymbol{r}_{r}(t)\), satellite position \(\boldsymbol{r}^{s}(t-\tau_{r}^{s})\), and receiver clock error \(dt_{r}(t)\), as follows

$$\rho_{r}^{s}\left(t,t-\tau_{r}^{s}\right)\doteq\rho_{r}^{s}\left(t,t-\tau_{r}^{s}\right)|_{0}+\triangle\rho_{r}^{s}\left(t,t-\tau_{r}^{s}\right).$$
(21.13)

The incremental receiver–satellite range is computed as

$$\begin{aligned}\triangle\rho_{r}^{s}\left(t,t-\tau_{r}^{s}\right)&=\left[\partial_{\boldsymbol{r}_{r}(t)}\rho_{r}^{s}\left(t,t-\tau_{r}^{s}\right)|_{0}\right]^{\top}\triangle\boldsymbol{r}_{r}(t)\\ &\quad\,+\left[\partial_{{\boldsymbol{r}^{s}(t-\tau_{r}^{s})}}\rho_{r}^{s}\left(t,t-\tau_{r}^{s}\right)|_{0}\right]^{\top}\triangle\boldsymbol{r}^{s}\left(t-\tau_{r}^{s}\right)\\ &\quad\,+\partial_{dt_{r}(t)}\rho_{r}^{s}\left(t,t-\tau_{r}^{s}\right)|_{0}\triangle dt_{r}(t)\;.\end{aligned}$$
(21.14)

Here the incremental parameters are denoted as \(\triangle(\cdot)=(\cdot)-(\cdot)|_{0}\), where \((\cdot)\) denotes the original parameter and \((\cdot)|_{0}\) its approximate value. For all positioning models discussed in this chapter it is assumed that the satellite positions are known, and need not be estimated in the positioning model. This implies that \(\triangle\boldsymbol{r}^{s}(t-\tau_{r}^{s})=0\). Knowing the satellite positions means that they are computed either from the broadcast ephemeris transmitted in the navigation message, or from the more precise ephemeris made available by the IGS (Chap. 33).

The derivative of the range with respect to the receiver position can be given as

$$\partial_{\boldsymbol{r}_{r}(t)}\rho_{r}^{s}\left(t,t-\tau_{r}^{s}\right)|_{0}=-\underbrace{\frac{\left[\boldsymbol{r}^{s}\left(t-\tau_{{r},0}^{s}\right)-\boldsymbol{r}_{{r},0}(t)\right]}{\left\|\boldsymbol{r}^{s}\left(t-\tau_{{r},0}^{s}\right)-\boldsymbol{r}_{{r},0}(t)\right\|}}_{\boldsymbol{e}_{{r},0}^{s}(t)}\;,$$
(21.15)

with \(\boldsymbol{e}_{\mathrm{{r},0}}^{s}(t)\) denoting the line-of-sight (LOS) vector of unit length. The derivative of the range with respect to the receiver clock error can be computed as

$$\partial_{{dt}_{r}({t})}\rho_{r}^{s}\left(t,t-\tau_{r}^{s}\right)|_{0}=\\ \underbrace{\left.\frac{\partial\rho_{r}^{s}\left(t,t-\tau_{r}^{s}\right)}{\partial t}\right|_{0}}_{\dot{\rho}_{{r},0}^{s}(t)}\underbrace{\left.\frac{\partial t}{\partial dt_{r}(t)}\right|_{0}}_{-1}\;.$$
(21.16)

The time derivative of the receiver–satellite range that shows up here, denoted as \(\dot{\rho}_{\mathrm{r,0}}^{s}(t)\), is also referred to as range rate. The time derivative of the time itself with respect to the receiver clock error follows from \(t=t_{r}(t)-dt_{r}(t)\). Summarizing, the linearized receiver–satellite range can be compactly presented as

$$\begin{aligned}\triangle\rho_{r}^{s}\left(t,t-\tau_{r}^{s}\right)&=-\left[\boldsymbol{e}_{{r},0}^{s}(t)\right]^{\top}\triangle\boldsymbol{r}_{r}(t)\\ &\quad\,-\dot{\rho}_{{r},0}^{s}(t)\triangle dt_{r}(t)\;.\end{aligned}$$
(21.17)

The computation of the LOS vector \(\boldsymbol{e}_{{r},0}^{s}(t)\), as well as the receiver–satellite range \(\rho_{r}^{s}(t,t-\tau_{r}^{s})|_{0}\), requires the availability of the satellite position vector \(\boldsymbol{r}^{s}(t-\tau_{{r},0}^{s})\). Also the range rate \(\dot{\rho}_{{r},0}^{s}(t)\) needs to be computed. How this can be done is explained in the following subsections.

2.1.1 Computation of the Receiver–Satellite Ranges, Satellite Positions, and Line-of-Sight Vectors

In the computation of the partial derivative in (21.15), we need to evaluate the receiver–satellite range based on the known satellite position, as well as the approximate receiver position. The problem is that we do not know the propagation time \(\tau_{r}^{s}=\rho_{r}^{s}(t,t-\tau_{r}^{s})/c\), since it is itself a function of the unknown receiver–satellite range. In addition, the satellite position must be calculated at transmission time, since the satellite range can change as much as 60 m from the time the signal was transmitted, to the time the signal was received, approximately 0.07 s later. If the receiver time was used instead, the error in computed range could be tens of meters.

We follow the procedure for determining the travel time and computation of the receiver–satellite range as described in [21.18]. In (21.12 ), the receiver and satellite position are assumed to be defined in an Earth-centered inertial (ECI) coordinate system. However, we want to use these positions given in an Earth-centered-Earth-fixed (ECEF) coordinate system, such as WGS-84 in case of GPS. Rewriting the receiver–satellite range expression in ECEF coordinates yields [21.19]

$$\begin{aligned}\rho_{r}^{s}\left(t,t-\tau_{r}^{s}\right)&=\big\|\mathbf{R}\left(t-\tau_{r}^{s}\right)\boldsymbol{r}_{\text{ECEF}}^{s}\left(t-\tau_{r}^{s}\right)\\ &\quad\,-\mathbf{R}(t)\boldsymbol{r}_{{r},{\text{ECEF}}}(t)\big\|.\end{aligned}$$
(21.18)

The matrix \(\mathbf{R}(T)\) describes the rotation from the ECEF to the ECI coordinate system, which reads (Chap. 2)

$$\mathbf{R}(T)=\begin{bmatrix}+\cos(\omega_{\oplus}T)&+\sin(\omega_{\oplus}T)&0\\ -\sin(\omega_{\oplus}T)&+\cos(\omega_{\oplus}T)&0\\ 0&0&1\end{bmatrix}.$$
(21.19)

Here T denotes the appropriate time argument and \(\omega_{\oplus}\) the Earth’s rotation rate (in rad/s) [21.18]. The inclusion of this rotation can be understood, since the Earth has rotated between the time of transmission and the time of reception of the signal. Using the property of rotations that \(\mathbf{R}(t-\tau_{r}^{s})=\mathbf{R}(t)\mathbf{R}(-\tau_{r}^{s})\), the rotation at the time t can be taken outside the norm in (21.18), such that the receiver–satellite range expression becomes

$$\rho_{r}^{s}\left(t,t-\tau_{r}^{s}\right)=\left\|\mathbf{R}\left(-\tau_{r}^{s}\right)\boldsymbol{r}_{\text{ECEF}}^{s}\left(t-\tau_{r}^{s}\right)-\boldsymbol{r}_{\mathrm{r,{\text{ECEF}}}}(t)\right\|.$$
(21.20)

The signal travel time \(\tau_{r}^{s}\) as well as the satellite position at the time of transmission \(\boldsymbol{r}_{\text{ECEF}}^{s}(t-\tau_{r}^{s})\) can now be determined using an iterative procedure. One starts with evaluating (21.20) with \(\tau_{r}^{s}=0\) and computes a new value of the travel time as \(\tau_{r}^{s}=\rho_{r}^{s}(t,t)/c\). This value is used to compute a refined estimate of the receiver–satellite range. Usually three iterations are sufficient to get differences between the receiver–satellite ranges of the last two iterations within the order of \({\mathrm{10^{-8}}}\,{\mathrm{m}}\) [21.18]. Based on the iterated signal travel time and satellite position, the LOS vector is finally computed as

$$\begin{aligned}\boldsymbol{e}_{{r},{\text{ECEF}}}^{s}(t)=\frac{\mathbf{R}\left(-\tau_{r}^{s}\right)\boldsymbol{r}_{\text{ECEF}}^{s}\left(t-\tau_{r}^{s}\right)-\boldsymbol{r}_{\mathrm{r,{\text{ECEF}}}}(t)}{\|\mathbf{R}\left(-\tau_{r}^{s}\right)\boldsymbol{r}_{\text{ECEF}}^{s}\left(t-\tau_{r}^{s}\right)-\boldsymbol{r}_{\mathrm{r,{\text{ECEF}}}}(t)\|}\;.\end{aligned}$$
(21.21)

Note that \(\boldsymbol{e}_{r,\text{ECEF}}^{s}(t)=\mathbf{R}(-t)\boldsymbol{e}_{r}^{s}(t)\). The above procedure requires approximate values for the receiver’s position \(\boldsymbol{r}_{{r},\text{ECEF}}(t)\). These are available, provided that the above iterative procedure is integrated inside the Gauss–Newton iteration scheme (Chap. 22) to solve the nonlinear single point positioning (SPP) model (Sect. 21.3).

2.1.2 Computation of the Receiver–Satellite Range Rate

The derivative of the receiver–satellite range with respect to time can be computed from the projection of the relative satellite–receiver velocity onto the LOS vector [21.18]

$$\dot{\rho}_{r}^{s}(t)=\left[\frac{\partial\left(\boldsymbol{r}^{s}\left(t-\tau_{r}^{s}\right)-\boldsymbol{r}_{r}(t)\right)}{\partial t}\right]^{\top}\boldsymbol{e}_{r}^{s}(t)\;,$$
(21.22)

with rs and r r defined in the ECI frame. The time derivative of the satellite position can be computed as follows [21.20]

$$\begin{aligned}\frac{\partial\boldsymbol{r}^{s}\left(t-\tau_{r}^{s}\right)}{\partial t}&=\frac{\partial\boldsymbol{r}^{s}\left(t-\tau_{r}^{s}\right)}{\partial\left(t-\tau_{r}^{s}\right)}\frac{\partial\left(t-\tau_{r}^{s}\right)}{\partial t}\\ &=\boldsymbol{\dot{r}}^{s}\left(t-\tau_{r}^{s}\right)\dfrac{\partial\left(t-\frac{\rho_{r}^{s}\left(t,t-\tau_{r}^{s}\right)}{c}\right)}{\partial t}\\ &=\boldsymbol{\dot{r}}^{s}\left(t-\tau_{r}^{s}\right)\left[1-\frac{\dot{\rho}_{r}^{s}(t)}{c}\right],\end{aligned}$$
(21.23)

where \(\boldsymbol{\dot{r}}^{s}(t-\tau_{r}^{s})\) denotes the satellite’s velocity vector in the ECI frame. The receiver’s velocity also appears in (21.22) and is denoted equivalently as \(\frac{\partial\boldsymbol{r}_{r}(t)}{\partial t}=\boldsymbol{\dot{r}}_{r}(t)\), also in the ECI frame. Using this, we obtain the following expression for the range rate

$$\dot{\rho}_{r}^{s}(t)=\frac{\left[\boldsymbol{\dot{r}}^{s}\left(t-\tau_{r}^{s}\right)-\boldsymbol{\dot{r}}_{r}(t)\right]^{\top}\boldsymbol{e}_{r}^{s}(t)}{1+\frac{1}{c}\left[\boldsymbol{\dot{r}}^{s}\left(t-\tau_{r}^{s}\right)\right]^{\top}\boldsymbol{e}_{r}^{s}(t)}\;.$$
(21.24)

gThis expression has also been derived in [21.21]. To evaluate it, the relative velocity of the GNSS satellite with respect to the receiver is required, as well as the relative geometry (line-of-sight). If we want to use velocity vectors in the ECEF frame, then the following relations hold between the vectors in the ECI and ECEF frames

$$\begin{aligned}\boldsymbol{\dot{r}}^{s}\left(t-\tau_{r}^{s}\right)&=\mathbf{R}\left(t-\tau_{r}^{s}\right)\boldsymbol{\dot{r}}_{\text{ECEF}}^{s}\left(t-\tau_{r}^{s}\right)\\ &\quad\,+\dot{\mathbf{R}}\left(t-\tau_{r}^{s}\right)\boldsymbol{r}_{\text{ECEF}}^{s}\left(t-\tau_{r}^{s}\right)\\ \boldsymbol{\dot{r}}_{r}(t)&=\mathbf{R}(t)\boldsymbol{\dot{r}}_{{r},\text{ECEF}}(t)+\dot{\mathbf{R}}(t)\boldsymbol{r}_{{r},\text{ECEF}}(t)\;.\end{aligned}$$
(21.25)

The time derivative of the rotation matrix \(\mathbf{R}(T)\) in (21.19) can be given as

$$\begin{aligned}{\dot{\mathbf{R}}}(T)=\omega_{\oplus}\begin{bmatrix}-\sin(\omega_{\oplus}T)&+\cos(\omega_{\oplus}T)&0\\ -\cos(\omega_{\oplus}T)&-\sin(\omega_{\oplus}T)&0\\ 0&0&0\end{bmatrix}.\end{aligned}$$
(21.26)

Note that the following property holds for the ECEF to ECI rotation matrix and its derivative

$$\begin{aligned}{\dot{\mathbf{R}}}(T)^{\top}\mathbf{R}(T)=\begin{bmatrix}0&-\omega_{\oplus}&0\\ \omega_{\oplus}&0&0\\ 0&0&0\\ \end{bmatrix}.\end{aligned}$$
(21.27)

Using this result and with \(\boldsymbol{e}_{r}^{s}(t)=\mathbf{R}(t)\boldsymbol{e}_{\mathrm{r,{\text{ECEF}}}}^{s}(t)\), the range rate can be computed as follows from the vectors defined in ECEF

$$\dot{\rho}_{r}^{s}(t)=\frac{\left[\boldsymbol{v}^{s}\left(t-\tau_{r}^{s}\right)-\boldsymbol{v}_{r}(t)\right]^{\top}\boldsymbol{e}_{\mathrm{r,{\text{ECEF}}}}^{s}(t)}{1+\frac{1}{c}\left[\boldsymbol{v}^{s}\left(t-\tau_{r}^{s}\right)\right]^{\top}\boldsymbol{e}_{\mathrm{r,{\text{ECEF}}}}^{s}(t)}\;,$$
(21.28)

with

$$\begin{aligned}\boldsymbol{v}^{s}\left(t-\tau_{r}^{s}\right)&=\mathbf{R}\left(-\tau_{r}^{s}\right)\boldsymbol{\dot{r}}_{\text{ECEF}}^{s}\left(t-\tau_{r}^{s}\right)\\ &\quad\,+\boldsymbol{\omega}\times{\dot{\mathbf{R}}}\left(-\tau_{r}^{s}\right)\boldsymbol{r}_{\text{ECEF}}^{s}\left(t-\tau_{r}^{s}\right)\;,\\ \boldsymbol{v}_{r}(t)&=\boldsymbol{\dot{r}}_{\mathrm{r,\text{ECEF}}}(t)+\boldsymbol{\omega}\times\boldsymbol{r}_{{r},\text{ECEF}}(t)\;.\end{aligned}$$
(21.29)

Here use is made of the vector cross product × and \(\boldsymbol{\omega}=(0,0,\omega_{\oplus})^{\top}\). In case of a static receiver on Earth, its velocity in the ECEF frame (\(\boldsymbol{\dot{r}}_{\mathrm{r,\text{ECEF}}}(t)\)) equals zero, while for receivers in motion it can be assessed from positioning solutions at two epochs.

2.1.3 Local Coordinate System

Usually, the positioning model is solved for the position in an ECEF system, that is, \(\boldsymbol{r}_{{r},\text{ECEF}}(t)\). From now on, we will omit ECEF in the notation of the position and LOS vectors in this chapter, implicitly assuming they are with respect to the ECEF system. In addition, for the sake of interpretation of the position it is often convenient to work with another coordinate frame, that is, a local system which is centered at an assumed or approximate position, denoted as rr,0, of the point we would like to determine.

The x-axis of this local system is directed east, the y-axis directed north, and the z-axis is pointing upward and perpendicular to the local ellipsoidal surface (Fig. 21.2a,b ). Hence, this coordinate system is referred to as an east–north-up system. The coordinates of a point r in this system are denoted as \(\boldsymbol{r}_{\mathrm{r,l}}=[{E}_{r},{N}_{r},U_{r}]^{\top}\) (omitting the time stamp t). Such an east–north-up system is very practical for observers on or close to the Earth’s surface, mainly for computation of dilution of precision (DOP) measures (Sect. 21.3.6), as well as for altitude-constrained (2-D) positioning. The ECEF coordinates of point r, denoted as r r , can now be transformed to their east–north-up counterparts as follows

$$\begin{aligned}\boldsymbol{r}_{{r},\mathrm{l}}=\mathbf{R}_{x}\left(\frac{\uppi}{2}-\varphi_{r}^{0}\right)\mathbf{R}_{z}\left(\frac{\uppi}{2}+\lambda_{r}^{0}\right)[\boldsymbol{r}_{r}-\boldsymbol{r}_{{r},0}]\;.\end{aligned}$$
(21.30)

The product of the rotation matrices is elaborated as

$$\begin{aligned}&\mathbf{R}_{x}\left(\frac{\uppi}{2}-\varphi_{r}^{0}\right)\mathbf{R}_{z}\left(\frac{\uppi}{2}+\lambda_{r}^{0}\right)\\ &=\begin{bmatrix}-\sin\lambda_{r}^{0}&\cos\lambda_{r}^{0}&0\\ -\sin\varphi_{r}^{0}\cos\lambda_{r}^{0}&-\sin\varphi_{r}^{0}\sin\lambda_{r}^{0}&+\cos\varphi_{r}^{0}\\ +\cos\varphi_{r}^{0}\cos\lambda_{r}^{0}&+\cos\varphi_{r}^{0}\sin\lambda_{r}^{0}&+\sin\varphi_{r}^{0}\end{bmatrix}.\end{aligned}$$
(21.31)

Here \(\boldsymbol{r}_{{r},0}=\left[x_{r}^{0},y_{r}^{0},z_{r}^{0}\right]^{\top}\) denotes the approximated ECEF position of point r and \([\varphi_{r}^{0},\lambda_{r}^{0},h_{r}^{0}]\) its corresponding ellipsoidal coordinates. When working with ENU coordinates, the LOS vectors should be changed accordingly

$$\boldsymbol{e}_{r,\mathrm{l}}^{s}=\mathbf{R}_{x}\left(\frac{{\uppi}}{2}-\varphi_{r}^{0}\right)\mathbf{R}_{z}\left(\frac{{\uppi}}{2}+\lambda_{r}^{0}\right)\boldsymbol{e}_{r}^{s}\;,$$
(21.32)

with \(\boldsymbol{e}_{r,\mathrm{l}}^{s}\) the LOS vector defined in the local ENU frame.

Fig. 21.2a,b
figure 2figure 2

East-north-up (ENU) local coordinate frame: (a) situated in the ECEF (xyz) frame with origin at r,0 and (b) local ENU coordinates of point r

2.2 Linearized Observation Equations

Based on the expression for the linearized receiver–satellite range in (21.17) the observed-minus-computed counterparts of the observation equations (21.1) and (21.2 ) can be given as follows, first for code

$$\begin{aligned}\triangle p_{{r},j}^{s}(t)&=-\left[\boldsymbol{e}_{r}^{s}(t)\right]^{\top}\triangle\boldsymbol{r}_{r}(t)+\triangle T_{r}^{s}(t)\\ &\quad\,+\left[c-\dot{\rho}_{r}^{s}(t)\right]\triangle dt_{r}(t)\\ &\quad\,+c\left[\triangle d_{{r},j}^{\mathrm{S}}(t)+\triangle\Updelta d_{{r},j}^{s}(t)\right]\\ &\quad\,-c\left[\triangle dt^{s}\left(t-\tau_{r}^{s}\right)-\triangle d_{j}^{s}\left(t-\tau_{r}^{s}\right)\right]\\ &\quad\,+\mu_{j}^{\mathrm{S}}\triangle{I}_{r}^{s}(t)+e_{{r},j}^{s}(t)\;.\end{aligned}$$
(21.33)

For the carrier-phase it can be given as

$$\begin{aligned}\triangle\varphi_{{r},j}^{s}(t)&=-\left[\boldsymbol{e}_{r}^{s}(t)\right]^{\top}\triangle\boldsymbol{r}_{r}(t)+\triangle T_{r}^{s}(t)\\ &\quad\,+\left[c-\dot{\rho}_{r}^{s}(t)\right]\triangle dt_{r}(t)\\ &\quad\,+c\left[\triangle\delta_{{r},j}^{\mathrm{S}}(t)+\triangle\Updelta\delta_{{r},j}^{s}(t)\right]\\ &\quad\,-c\left[\triangle dt^{s}\left(t-\tau_{r}^{s}\right)-\triangle\delta_{j}^{s}\left(t-\tau_{r}^{s}\right)\right]\\ &\quad\,-\mu_{j}^{\mathrm{S}}\triangle{I}_{r}^{s}(t)+\lambda_{j}^{\mathrm{S}}\triangle{N}_{{r},j}^{s}+\varepsilon_{{r},j}^{s}(t)\;.\end{aligned}$$
(21.34)

The approximate values for the parameters that are needed in the linearization of the GNSS observation equations can usually be set to zero, if the linearized model is solved using Gauss–Newton iteration (Chap. 22). In case of zero approximate values for the unknown parameters, we can omit the \(\triangle\) symbol in their notation. In order to limit the amount of iterations, in case of high-precision applications nonzero approximate values are used for the receiver position (these are usually available from SPP preprocessing, Sect. 21.3.4).

In both linearized code and phase-observation equations, the coefficient for the receiver clock error is \(c-\dot{\rho}_{r}^{s}(t)\), that is, the speed of light minus the range rate, where the range rate is due to the linearization of the receiver–satellite range. As shown in the previous subsection, this range rate depends on the speed of the receiver. We can compute it based on approximate values of the receiver’s position and velocity, which can be obtained from a SPP solution at a previous epoch. Maximum range rate values for a static receiver on Earth is about 700 m/s, but for a spaceborne receiver in low-Earth orbit this is much higher, about 8000 m/s (Chap. 32). On the other hand, these values of the range rate are still very small compared to the speed of light c. And if the linearized model is solved in an iterative manner, in practice the results will be the same after several iterations are made compared to the results based on the observation equations neglecting the range rate [21.18]. In the positioning models treated in this chapter, we will therefore not include the range rate in the coefficients for the receiver clock error in the design matrix.

\break

3 Point Positioning Models

The simplest positioning strategy is the one in which (single-frequency) pseudorange (code) observations measured by one receiver are processed to solve its position, given the positions of the GNSS satellites and their clock errors as computed from either the broadcast navigation message or precise (IGS) products. Sometimes ionospheric corrections can also be computed using information in the navigation message, or by an externally provided model. This strategy is referred to as single point positioning (SPP) , and its solution is often referred to as navigation solution. SPP can also be carried out based on dual- or multifrequency code observations, thereby eliminating the ionospheric delays. Point positioning based on (single- or multifrequency) code and phase data, as well as precise products for orbits and clocks, is known as precise point positioning (PPP) . Figure 21.3 visualizes the concept of point positioning.

Fig. 21.3
figure 3figure 3

Point positioning based on 4 GNSS satellites: r r denotes the receiver position vector, rs the satellite position vector, \(\boldsymbol{e}_{r}^{s}\) the line-of-sight unit vector, cdt r the receiver clock error, and \(p_{r}^{s}\), the code or pseudo-range observation

3.1 Computation of the Satellite Clocks and Hardware Code (Group) Delays

In case of point positioning the satellite clock offsets need to be known. In case broadcast ephemeris (SPP) are used they can be computed using a polynomial model of which the coefficients are transmitted in the navigation message (see also the Interface Control Documents or ICDs) . For GPS, Galileo, BeiDou, QZSS, and IRNSS the broadcast satellite clock can be calculated as the following second-order polynomial [21.22]

$$\begin{aligned}{dt}_{\mathrm{S}}^{s}(t)&=a_{0}^{s}\left(t_{\text{oc}}^{s}\right)+a_{1}^{s}\left(t-t_{\text{oc}}^{s}\right)\\ &\quad\,+a_{2}^{s}\left(t-t_{\text{oc}}^{s}\right)^{2}+\Updelta t_{\text{rel}}^{s}(t)\;,\end{aligned}$$
(21.35)

with \(\mathrm{S}\in\{\mathrm{G},\mathrm{E},\mathrm{C},\mathrm{J},\mathrm{I}\}\). The coefficients of the polynomial are denoted as \(a_{0}^{s}\), \(a_{1}^{s}\), and \(a_{2}^{s}\), representing the offset, drift, and aging of the clock, and \(t_{\text{oc}}^{s}\) denotes the reference time of the clock data, which is also broadcast in the navigation message. The last part of the satellite clock corrections, denoted as \(\Updelta t_{\text{rel}}^{s}(t)\), is a relativistic correction, because the satellite clock is moving with respect to the receiver. This correction, which depends on the eccentric anomaly, has been discussed in Chap. 19. In the point-positioning algorithm the above clock offset polynomial needs to be evaluated at the time of transmission, that is, \(t-\tau_{r}^{s}\).

3.1.1 GPS, Galileo, QZSS, and IRNSS

In case of GPS, Galileo, QZSS, and IRNSS, the broadcast satellite clock correction in fact corresponds to the ionosphere-free combination of dual-frequency code observations, see also Chap. 20 for this linear combination

$${dt}_{\mathrm{S}}^{s}(t)={dt}_{\text{IF}}^{s}(t)={dt}^{s}(t)-{d}_{\text{IF}}^{s}(t)\;.$$
(21.36)

Here \({d}_{\text{IF}}^{s}(t)\) denotes the ionosphere-free combination of satellite hardware biases and is defined as

$$\begin{aligned}{d}_{\text{IF}}^{s}(t)&=\frac{\mu_{2}^{\mathrm{S}}}{\mu_{2}^{\mathrm{S}}-\mu_{1}^{\mathrm{S}}}d_{1}^{s}(t)-\frac{\mu_{1}^{\mathrm{S}}}{\mu_{2}^{\mathrm{S}}-\mu_{1}^{\mathrm{S}}}d_{2}^{s}(t)\\ &=d_{j}^{s}(t)+\frac{\mu_{j}^{\mathrm{S}}}{\mu_{2}^{\mathrm{S}}-\mu_{1}^{\mathrm{S}}}\underbrace{\left[d_{1}^{s}(t)-d_{2}^{s}(t)\right]}_{\text{DCB}_{12}^{s}(t)},\\ &\quad\,\text{ for }j=1,2\;.\end{aligned}$$
(21.37)

The ionospheric coefficients corresponding to the two frequencies involved in the combination are denoted as \(\mu_{1}^{\mathrm{S}}\) and \(\mu_{2}^{\mathrm{S}}\) (21.3), where \(\mathrm{S}\in\{\mathrm{G},\mathrm{E},\mathrm{J},\mathrm{I}\}\). Note that the ionosphere-free coefficients can also be given as function of the frequencies, that is,

$$\begin{aligned}\frac{\mu_{2}^{\mathrm{S}}}{\mu_{2}^{\mathrm{S}}-\mu_{1}^{\mathrm{S}}}&=\frac{(f_{1}^{\mathrm{S}})^{2}}{(f_{1}^{\mathrm{S}})^{2}-(f_{2}^{\mathrm{S}})^{2}}\quad\text{and}\\ \frac{\mu_{1}^{\mathrm{S}}}{\mu_{2}^{\mathrm{S}}-\mu_{1}^{\mathrm{S}}}&=\frac{(f_{2}^{\mathrm{S}})^{2}}{(f_{1}^{\mathrm{S}})^{2}-(f_{2}^{\mathrm{S}})^{2}}\;.\end{aligned}$$

The frequency-difference between the satellite hardware biases in (21.37 ), that is, \(d_{1}^{s}(t)-d_{2}^{s}(t)\), is also known as differential code bias (DCB) [21.6], or interfrequency bias (IFB) [21.3]. While for GPS (and QZSS) the ionosphere-free satellite clock applies to the L1 and L2 frequencies, in case of Galileo the broadcast satellite clock corresponds to either the ionosphere-free combination of E1+E5a, or to the combination of E1+E5b. Depending on the Galileo service that is used (Chap. 9), it follows which navigation message type and which ionosphere-free clock is transmitted: E1+E5a in case of the freely accessible navigation message (F/NAV) in the open service and E1+E5b in case of the integrity navigation message (I/NAV) in the safety-of-life service [21.23]. In case of IRNSS the ionosphere-free clock refers to the S-band and L5 frequencies [21.24].

Single-frequency SPP users employing the broadcast satellite clock offset cannot directly use the ionosphere-free satellite clock, but they need to apply another correction, the so-called timing group delay (TGD) difference between the two frequencies, which is defined as [21.25]

$$T_{\text{GD}}^{s}(t)=-\frac{\mu_{1}^{\mathrm{S}}}{\mu_{2}^{\mathrm{S}}-\mu_{1}^{\mathrm{S}}}\underbrace{[d_{1}^{s}(t)-d_{2}^{s}(t)]}_{\text{DCB}_{12}^{s}(t)}\;.$$
(21.38)

Remind that the ionospheric coefficients read \(\mu_{1}^{\mathrm{S}}=1\) and \(\mu_{2}^{\mathrm{S}}=(\lambda_{2}^{\mathrm{S}}/\lambda_{1}^{\mathrm{S}})^{2}\). Thus, the TGD is a scaled version of the DCB. Note that the Galileo ICD speaks of BGD (broadcast group delay) instead of TGD. Using the group delays, the combination of satellite clock and hardware delay for the first two frequencies can be reconstructed as

$${dt}_{\mathrm{S}}^{s}(t)-\frac{\mu_{j}^{\mathrm{S}}}{\mu_{1}^{\mathrm{S}}}{T}_{\text{GD}}^{s}(t)=dt^{s}(t)-d_{j}^{s}(t),\ j=1,2\;.$$
(21.39)

In case of GPS users employing the L1 C/A code instead of the P1 code another correction should be taken into account, which accounts for the difference in hardware biases between the P1 and C/A code

$${dt}_{\mathrm{G}}^{s}(t)-{T}_{\text{GD}}^{s}(t)+\text{DCB}_{1\mathrm{c}}^{s}(t)=dt^{s}(t)-d_{\mathrm{c}}^{s}(t)\;,$$
(21.40)

with \(\text{DCB}_{1\mathrm{c}}^{s}(t)=d_{1}^{s}(t)-d_{\mathrm{c}}^{s}(t)\) the DCB between the P1 and C/A code, where \(d_{\mathrm{c}}^{s}(t)\) denotes the hardware bias of the C/A code. This P1-C/A DCB is typically of the order of 2 ns (60 cm) [21.26]. This correction is however not transmitted in the GPS legacy navigation message (i. e., the NAV message, modulated on the C/A code), but is transmitted in the modernized civilian NAV (CNAV) messages modulated on the L2C and L5 signals, together with additional group delay corrections that are referred to as intersignal corrections (ISCs)  [21.27, 21.28].

3.1.2 BeiDou (BDS)

In case of BeiDou the broadcast satellite clock is not referring to an ionosphere-free combination, but to the single-frequency B3 signal [21.29]

$${dt}_{\mathrm{C}}^{s}(t)=dt^{s}(t)-d_{3}^{s}(t)\;.$$
(21.41)

Single-frequency SPP users that use either the B1 or B2 frequency cannot directly use this broadcast satellite clock offset, but need to apply a TGD, depending on the frequency they use

$$\begin{aligned}{T}_{\text{GD}_{1}}^{s}(t)&=d_{1}^{s}(t)-d_{3}^{s}(t)\;,\\ {T}_{\text{GD}_{2}}^{s}(t)&=d_{2}^{s}(t)-d_{3}^{s}(t)\;.\end{aligned}$$
(21.42)

The BeiDou navigation message provides both these TGDs. Single-frequency B1 and B2 SPP users should apply the respective TGD such that

$$\begin{aligned}{dt}_{\mathrm{C}}^{s}(t)-{T}_{\text{GD}_{1}}^{s}(t)&=dt^{s}(t)-d_{1}^{s}(t)\;,\\ {dt}_{\mathrm{C}}^{s}(t)-{T}_{\text{GD}_{2}}^{s}(t)&=dt^{s}(t)-d_{2}^{s}(t)\;.\end{aligned}$$
(21.43)

Dual- or multifrequency BeiDou users can compute their ionosphere-free clock offsets

$${dt}_{\text{C}}^{s}(t)-\frac{\mu_{2}^{\mathrm{C}}}{\mu_{2}^{\mathrm{C}}-\mu_{1}^{\mathrm{C}}}{T}_{\text{GD}_{1}}^{s}(t)+\frac{\mu_{1}^{\mathrm{C}}}{\mu_{2}^{\mathrm{C}}-\mu_{1}^{\mathrm{C}}}{T}_{\text{GD}_{2}}^{s}(t)\;,$$
(21.44)

for B1+B2, and

$${dt}_{\mathrm{C}}^{s}(t)-\frac{\mu_{3}^{\mathrm{C}}}{\mu_{3}^{\mathrm{C}}-\mu_{1}^{\mathrm{C}}}{T}_{\text{GD}_{1}}^{s}(t)$$
(21.45)

for B1+B3.

3.1.3 GLONASS

In case of GLONASS, the satellite clock offset is based on the L1 frequency and is calculated as follows from the navigation message [21.30]

$${dt}_{\mathrm{R}}^{s}(t)=a_{0}^{s}(t_{\text{oc}}^{s})+a_{1}^{s}(t-t_{\text{oc}}^{s})\;,$$
(21.46)

where it is noted that in the GLONASS ICD the reference time of the clock data is referred to as \(t_{\mathrm{b}}^{s}\). In contrast to GPS, Galileo, and BeiDou, the clock offset is for GLONASS computed as a first-order polynomial, where it is remarked that the broadcast parameters \(a_{0}^{s}\) and \(a_{1}^{s}\) not only account for the satellite clock offset and drift, but also for relativistic effects. A separate compensation for these effects is, therefore, not needed [21.31]. For GLONASS, the difference between satellite hardware delays on the L1 and L2 frequencies is broadcast as well [21.30]

$$\Updelta{\tau}_{n}^{s}(t)=d_{2}^{s}(t)-d_{1}^{s}(t)\;.$$
(21.47)

The combination of satellite clock and hardware delay on GLONASS L1 is then obtained as follows

$${dt}_{\mathrm{R}}^{s}(t)=dt^{s}(t)-d_{1}^{s}(t)\;,$$
(21.48)

while its counterpart on the GLONASS L2 frequency is reconstructed as

$${dt}_{\mathrm{R}}^{s}(t)-\Updelta{\tau}_{n}^{s}(t)=dt^{s}(t)-d_{2}^{s}(t)\;.$$
(21.49)

3.2 Some Remarks on the TGDs/DCBs

The DCB or TGD is initially determined by the satellite manufacturer before launch and can be revised by the GNSS’s control segment [21.22]. For GPS, since 1999 JPL determines improved TGD values (as a byproduct of their ionospheric mapping) that are uploaded to the GPS satellites [21.32]. The size of these DCBs (for GPS/GLONASS) is less than 15 ns (4.5 m) [21.27], while for BeiDou less than 20 ns [21.33], and are normally very stable in time (at least over one day) [21.34, 21.35]. In case precise satellite clocks are used (PPP), these clocks are also based on the ionosphere-free combination [21.36] and hence single-frequency users should correct for the DCBs. Precise satellite DCBs are made available on a regular (daily) basis by the IGS, as part of their global ionospheric map (GIM) product [21.37]. As the constellation-mean value of the DCBs is set by IGS convention to zero [21.6], whereas the GPS broadcast group delays are referenced to an empirical absolute hardware bias [21.25], there is an offset between the DCBs based on the broadcast group delays and those published by the IGS. Galileo determines the group delay as part of the orbit determination and time synchronization (ODTS) process and, like GPS, applies a zero-mean condition to the whole constellation [21.33].

3.3 Computation/Estimation of the Atmospheric Errors

In case of single-frequency point positioning (SPP or PPP) the GNSS observations may be a-priori corrected for the ionospheric delays. These corrections can be calculated using the models broadcast in the navigation message, such as the Klobuchar model for GPS [21.38], or the NeQuick model for Galileo [21.39]. Otherwise, more precise ionospheric corrections can be extracted from GIM as produced by the IGS. In case of multifrequency point positioning, ionospheric corrections are not required, since the ionospheric delays can be estimated or eliminated from the data themselves. However, estimation (or elimination) weakens the model, which results in longer times for the solution to converge, so for fast multifrequency positioning (precise) ionospheric corrections are essential.

The tropospheric delays can usually be largely corrected for using models such as the Saastamoinen model  [21.40]. If needed, residual tropospheric delays can be estimated in the model. For more detailed information on atmospheric models, we refer to Chap. 6.

3.4 Single-Constellation SPP Model

3.4.1 Direct (Analytical) SPP Solution

It is possible to compute a SPP solution based on four pseudoranges (in case of one constellation) in analytical (or closed) form, based on the nonlinear observation equations and without linearization/iteration and the need for approximate values. The closed-form solution can also be used to serve for fast computation of the approximate receiver position. We refer to the literature, where several approaches have been proposed [21.41, 21.42, 21.43].

3.4.2 Single-Frequency SPP Model

In general, with more than four satellites, say mS satellites, tracked by a receiver, the SPP model of single-frequency (linearized) pseudorange (code) observation equations can be given for a single epoch as, making use of the calculated satellite orbits and clocks, satellite hardware delays and atmospheric delays

$$\begin{aligned}&E\left(\underset{\triangle\tilde{\mathbf{p}}_{{r},j}^{\mathrm{S}}(t)}{\underbrace{\begin{bmatrix}\triangle\tilde{p}_{{r},j}^{1}(t)\\ \vdots\\ \triangle\tilde{p}_{{r},j}^{m_{\mathrm{S}}}(t)\end{bmatrix}}}\right)\\ &=\underbrace{\begin{bmatrix}-[\boldsymbol{e}_{r}^{1}(t)]^{\top}&1\\ \vdots&\vdots\\ -[\boldsymbol{e}_{r}^{m_{\mathrm{S}}}(t)]^{\top}&1\end{bmatrix}}_{\mathbf{J}_{0}}\begin{bmatrix}\triangle\boldsymbol{r}_{r}(t)\\ cdt_{{r},j}^{\mathrm{S}}(t)\end{bmatrix}.\end{aligned}$$
(21.50)

Here \({E}(\cdot)\) denotes the expectation operator and a tilde is used to denote the pseudorange observable that is corrected for orbit, clock, hardware biases, and atmospheric delays. A usual choice for SPP is j = 1, that is, the first frequency (in case of GPS: L1 C/A), but the model can be solved for other frequencies as well. Matrix J0 of dimension \(m_{\mathrm{S}}\times{\mathrm{4}}\) denotes the Jacobian (Chap. 22) or design matrix, which can be written in the following compact form

$$\mathbf{J}_{0}=\left[\mathbf{G}_{r}^{\mathrm{S}}(t),\,\boldsymbol{u}_{{m}_{\mathrm{S}}}\right]\;,$$
(21.51)

Matrix \(\mathbf{G}_{r}^{\mathrm{S}}(t)=[-\boldsymbol{e}_{r}^{1}(t),\ldots,-\boldsymbol{e}_{r}^{{m}_{\mathrm{S}}}(t)]^{\top}\) of dimension \({{m}_{\mathrm{S}}}\times{\mathrm{3}}\) contains the LOS unit direction vectors, while the mS-vector of ones is defined as \(\boldsymbol{u}_{{m}_{\mathrm{S}}}=(1,\ldots,1)^{\top}\). Unknown parameters in the SPP model are the receiver position vector \(\triangle\boldsymbol{r}_{r}(t)\) and the receiver clock error \(dt_{{r},j}(t)\). This estimable receiver clock is a combination of the true receiver clock error plus the (frequency-dependent) receiver hardware delay, as both terms cannot be separated, that is,

$$dt_{{r},j}^{\mathrm{S}}(t)=dt_{r}(t)+d_{{r},j}^{\mathrm{S}}\;.$$
(21.52)

Here it is assumed that the receiver hardware bias is stable in time, such that it can be denoted without time stamp. It is noted that in case of GLONASS, the interchannel hardware biases are so small compared to the noise of the pseudorange observations [21.31] that for the purpose of SPP they can be neglected. If the SPP model is solved in an iterative least-squares sense, the approximate receiver position can be taken zero (corresponding to the center of the Earth). After convergence, this yields the least-squares estimators \(\hat{\boldsymbol{r}}_{r}(t)\) and \(d\hat{t}_{{r},j}^{\mathrm{S}}(t)\).

The redundancy of an observation model is defined as the number of observables minus the number of estimable parameters. For the single-frequency SPP model it reads \({m_{\mathrm{S}}}-(3+1)={m_{\mathrm{S}}}-4\) (satellites). From this it follows that the model is solvable for \({m_{\mathrm{S}}}\geq 4\).

3.4.3 Dual-Frequency SPP Model

In the presence of dual-frequency data, instead of modeling the ionospheric delays, a common procedure is to take the ionosphere-free combination to eliminate the ionospheric delays from the data and basically solve the single-frequency SPP model as in (21.50) but then based on the ionosphere-free observations and parameters. Table 21.2 shows the numerical values of the ionosphere-free coefficients for selected dual-frequency combinations of GPS (and QZSS), GLONASS, Galileo, BeiDou, and IRNSS observables.

Table 21.2 Numerical values of ionosphere-free coefficients for several dual-frequency combinations of GPS (L#), GLONASS (G#), Galileo (E#), BeiDou (B#), and IRNSS (S+L5) observables

Instead of working with ionosphere-free combinations, in a dual-frequency situation one could also work with a model that is, like the single-frequency model in (21.50 ), based on the uncombined observables, but which models the ionospheric delays as additional parameters. This model can, however, not be used directly in a least-squares adjustment, as its design matrix is rank deficient, which means that some of its columns are linear dependent. The rank deficiency can be overcome by application of the S-system or datum theory (see Chap. 22 for a general description of the theory of rank-defect least-squares). This means that instead of the original parameters as above, only certain linear combinations of parameters are estimable. However, the design matrix corresponding to these linear parameter combinations is of full rank.

Based on the (corrected) pseudorange observables, the full-rank dual-frequency SPP model can be given as

$$\begin{aligned}&{E}\left(\begin{bmatrix}\triangle{{\boldsymbol{\tilde{p}}}_{{r},1}^{\mathrm{S}}(t)}\\ \triangle{{\boldsymbol{\tilde{p}}}_{{r},2}^{\mathrm{S}}(t)}\end{bmatrix}\right)\\ &=\begin{bmatrix}\mathbf{G}_{r}^{\mathrm{S}}(t)&\boldsymbol{u}_{{m}_{\mathrm{S}}}&\mu_{1}^{\mathrm{S}}\boldsymbol{I}_{{m}_{\mathrm{S}}}\\ \mathbf{G}_{r}^{\mathrm{S}}(t)&\boldsymbol{u}_{{m}_{\mathrm{S}}}&\mu_{2}^{\mathrm{S}}\boldsymbol{I}_{{m}_{\mathrm{S}}}\end{bmatrix}\begin{bmatrix}\triangle\boldsymbol{r}_{r}(t)\\ cd\tilde{t}_{r}^{\mathrm{S}}(t)\\ \tilde{\boldsymbol{I}}_{r}^{\mathrm{S}}(t)\end{bmatrix}.\end{aligned}$$
(21.53)

The estimable ionospheric delay parameters are stored as vector \(\tilde{\boldsymbol{I}}_{r}^{\mathrm{S}}(t)=[\tilde{I}_{r}^{1}(t),\ldots,\tilde{I}_{r}^{{m}_{\mathrm{S}}}(t)]^{\top}\). Inside the design matrix, \(\mathbf{I}_{{m}_{\mathrm{S}}}\) denotes the identity matrix of dimension mS, while vector \(\boldsymbol{u}_{{m}_{\mathrm{S}}}\) and matrix \(\mathbf{G}_{r}^{\mathrm{S}}(t)\) are the same as in the single-frequency model.

Apart from the receiver position, the estimable receiver clock and ionospheric parameters have the following interpretation

$$\begin{aligned}d\tilde{t}_{r}^{\mathrm{S}}(t)&=dt_{r}(t)+d_{{r},1}^{\mathrm{S}}+\frac{\mu_{1}^{\mathrm{S}}}{\mu_{2}^{\mathrm{S}}-\mu_{1}^{\mathrm{S}}}\text{DCB}_{\mathrm{r,12}}^{\mathrm{S}}\;,\\ \tilde{I}_{r}^{s}(t)&={I}_{r}^{s}(t)-\frac{1}{\mu_{2}^{\mathrm{S}}-\mu_{1}^{\mathrm{S}}}\,c\,\text{DCB}_{{r},12}^{\mathrm{S}}\;.\end{aligned}$$
(21.54)

Here use is made of the following definition of a receiver DCB between the two frequencies

$$\text{DCB}_{{r},12}^{\mathrm{S}}=d_{{r},1}^{\mathrm{S}}-d_{{r},2}^{\mathrm{S}}\;.$$
(21.55)

Thus, the receiver DCB is not an estimable parameter in this model, but shows up as a bias in the interpretation of both the receiver clock and ionospheric parameters. This bias gets, however, eliminated when the observation equations are reconstructed from the estimable parameters, since for the first frequency it holds that

$$cd\tilde{t}_{r}^{\mathrm{S}}(t)+\mu_{1}^{\mathrm{S}}\tilde{I}_{r}^{s}(t)=c\left[dt_{r}(t)+d_{\mathrm{r,1}}^{\mathrm{S}}\right]+\mu_{1}^{\mathrm{S}}{I}_{r}^{s}(t)\;.$$
(21.56)

For the second frequency it holds that

$$\begin{aligned}cd\tilde{t}_{r}^{\mathrm{S}}(t)+\mu_{2}^{\mathrm{S}}\tilde{{I}}_{r}^{s}(t)&=c\left[dt_{r}(t)+d_{{r},1}^{\mathrm{S}}\right]+\mu_{2}^{\mathrm{S}}{I}_{r}^{s}(t)\\ -c\text{DCB}_{{r},12}^{\mathrm{S}}&=c\left[dt_{r}(t)+d_{{r},2}^{\mathrm{S}}\right]+\mu_{2}^{\mathrm{S}}{I}_{r}^{s}(t)\;.\end{aligned}$$
(21.57)

We remark that the estimable receiver clock parameter in the dual-frequency SPP model can be rewritten as an ionosphere-free receiver clock

$$d\tilde{t}_{r}^{\mathrm{S}}(t)=dt_{r}(t)+d_{{r},\text{ IF}}^{\mathrm{S}}\;.$$
(21.58)

Here \(d_{{r},\text{ IF}}^{\mathrm{S}}\) denotes the ionosphere-free combination of the receiver code delays of the two frequencies (similar to that for the satellite code delays, see (21.37)).

The redundancy of the dual-frequency SPP model reads \(2m_{\mathrm{S}}-[3+1+m_{\mathrm{S}}]=m_{\mathrm{S}}-4\), which means that the model is solvable if \(m_{\mathrm{S}}\geq 4\), which is similar to the single-frequency SPP model.

3.5 Multiconstellation SPP Model

This subsection focuses on the combined multiconstellation SPP model. Like with the single-constellation SPP model, first one frequency per constellation is assumed, followed by two frequencies per constellation. These frequencies between the constellations may be identical, but can also be different.

3.5.1 SPP Model: One Frequency per Constellation

Suppose we have pseudorange data from two constellations, denoted as GNSS A tracking single-frequency data of mA satellites and GNSS B tracking single-frequency data of mB satellites. We can set up the following combined SPP model

$$\begin{aligned}&{E}\left(\begin{bmatrix}\triangle{\boldsymbol{\tilde{p}}}_{{r},j}^{\mathrm{A}}(t)\\ \triangle{\boldsymbol{\tilde{p}}}_{{r},j}^{\mathrm{B}}(t)\\ \end{bmatrix}\right)\\ &=\begin{bmatrix}\mathbf{G}_{r}^{\mathrm{A}}(t)&\boldsymbol{u}_{{m}_{\mathrm{A}}}&\boldsymbol{0}\\ \mathbf{G}_{r}^{\mathrm{B}}(t)&\boldsymbol{u}_{{m}_{\mathrm{B}}}&\boldsymbol{u}_{{m}_{\mathrm{B}}}\end{bmatrix}\begin{bmatrix}\triangle\boldsymbol{r}_{r}(t)\\ cdt_{{r},j}^{\mathrm{A}}(t)\\ c\text{ ISB}_{{r},j}^{\text{AB}}\end{bmatrix}.\end{aligned}$$
(21.59)

The data of both constellations have the receiver coordinates in common, as well as the receiver clock, which is defined to be relative to the system time of constellation A. For the observations of constellation B an additional parameter shows up, which is the ISB

$$\text{ISB}_{{r},j}^{\text{AB}}=\left[d_{{r},j}^{\mathrm{B}}-d_{{r},j}^{\mathrm{A}}\right]-t^{\text{AB}}\;.$$
(21.60)

Compared to the ISB definition given in (21.10), the interchannel terms are not present in the above equations, as they may be neglected for the purpose of SPP. Another difference is that in addition to the difference in receiver hardware delays of the signals of the two constellations, the estimable ISB parameter in case of SPP is biased by the time offset between the constellations, that is, tAB (21.11). The reason is that it cannot be separated from the hardware delays difference and therefore it is only estimable lumped to them. If this time offset is known (e. g., computed from the navigation message), it disappears from the interpretation of the ISB parameter. We furthermore remark that even if the frequencies of the signals of both constellations are identical (e. g., GPS L1 and Galileo E1), these ISBs do not cancel out [21.1, 21.44]. Instead of solving an ISB parameter, one may also introduce a receiver clock error corresponding to the second constellation in the SPP model. The following relating then holds between the receiver clocks and the ISB

$$\begin{aligned}dt_{{r},j}^{\mathrm{B}}(t)&=dt_{{r},j}^{\mathrm{A}}(t)+\text{ISB}_{{r},j}^{\text{AB}}\\ &=dt_{r}(t)+d_{{r},j}^{\mathrm{B}}-t^{\text{AB}}\;.\end{aligned}$$
(21.61)

Based on this, another definition of the ISB can be given as

$$\text{ISB}_{{r},j}^{\text{AB}}=dt_{{r},j}^{\mathrm{B}}(t)-dt_{{r},j}^{\mathrm{A}}(t)\;,$$
(21.62)

that is, the difference of the estimable receiver clocks of the two constellations. Instead of parameterizing these constellation-specific receiver clocks, the ISB-parametrization is more advantageous in the event it is possible to calibrate the ISB. In that case, the ISB can be assumed known and the observations of constellation B are corrected for it, such that the multiconstellation SPP model becomes

$$E\left(\begin{bmatrix}\triangle{\boldsymbol{\tilde{p}}}_{{r},j}^{\mathrm{A}}(t)\\ \triangle{\boldsymbol{\tilde{p}}_{{r},j}^{\mathrm{B}}}(t)^{\prime}\end{bmatrix}\right)=\begin{bmatrix}\mathbf{G}_{r}^{\mathrm{A}}(t)&\boldsymbol{u}_{{m}_{\mathrm{A}}}\\ \mathbf{G}_{r}^{\mathrm{B}}(t)&\boldsymbol{u}_{{m}_{\mathrm{B}}}\end{bmatrix}\begin{bmatrix}\triangle\boldsymbol{r}_{r}(t)\\ cdt_{{r},j}^{\mathrm{A}}(t)\end{bmatrix},$$
(21.63)

with the ISB-corrected observables denoted as

$$\triangle{\boldsymbol{\tilde{p}}_{{r},j}^{\mathrm{B}}}(t)^{\prime}=\triangle{\boldsymbol{\tilde{p}}}_{{r},j}^{\mathrm{B}}(t)-\boldsymbol{u}_{m_{B}}c\text{ ISB}_{{r},j}^{\text{AB}}\;.$$

In the ISB-corrected model the observations of constellations A and B have the same parameters in common, and the dual-constellation model becomes equivalent to a single-constellation SPP model, but now based on \(m_{\mathrm{A}}+m_{\mathrm{B}}\) satellites.

The redundancy of the combined SPP model based on one frequency per system reads, if the ISB is unknown, \(m_{\mathrm{A}}+m_{\mathrm{B}}-5\). This means that \(m_{\mathrm{A}}+m_{\mathrm{B}}\geq 5\), and this can be satisfied by different combinations of satellites. In case of more than two constellations, model (21.59) is extendable with one combined ISB/time-offset parameter for each constellation that is added. The multiconstellation redundancy then reads in general \(\sum_{i=1}^{s}m_{i}-(3+s)\), where s denotes the number of constellations. In the case the ISB/time-offsets can be assumed known, the multiconstellation redundancy increases to \(\sum_{i=1}^{s}m_{i}-4\).

3.5.2 SPP Model: Two Frequencies per Constellation

The multiconstellation SPP model for two frequencies per constellation can be set up by modeling ionospheric delays as unknown parameters, as done in the single-constellation case in (21.53). In this case, the estimable parameters are, next to the receiver coordinates, an ionosphere-free clock for constellation A, as well as ionospheric delays per constellation that are biased by constellation-specific DCBs (21.54 ). In addition, an ISB parameter is parameterized, however in this case it is the ionosphere-free ISB parameter, defined as

$$\begin{aligned}\text{ISB}_{{r},\text{ IF}}^{\text{AB}}=&\left[d_{{r},\text{ IF}}^{\mathrm{B}}-d_{{r},\text{ IF}}^{\mathrm{A}}\right]-t^{\text{AB}}\\ =&\left[\frac{\mu_{2}^{\mathrm{B}}}{\mu_{2}^{\mathrm{B}}-\mu_{1}^{\mathrm{B}}}d_{\mathrm{r,1}}^{\mathrm{B}}-\frac{\mu_{1}^{\mathrm{B}}}{\mu_{2}^{\mathrm{B}}-\mu_{1}^{\mathrm{B}}}d_{\mathrm{r,2}}^{\mathrm{B}}\right]\\ &-\left[\frac{\mu_{2}^{\mathrm{A}}}{\mu_{2}^{\mathrm{A}}-\mu_{1}^{\mathrm{A}}}d_{\mathrm{r,1}}^{\mathrm{A}}-\frac{\mu_{1}^{\mathrm{A}}}{\mu_{2}^{\mathrm{A}}-\mu_{1}^{\mathrm{A}}}d_{\mathrm{r,2}}^{\mathrm{A}}\right]\\ &-t^{\text{AB}}\;.\end{aligned}$$
(21.64)

This ionosphere-free ISB corresponds to the definition given by [21.3, 21.7].

3.6 Precision and DOP

The impact of the receiver–satellite geometry (captured in matrix \(\mathbf{G}_{r}^{\mathrm{S}}(t)\) in case of a single constellation) on the precision of the receiver position obtained using SPP is usually described using the DOP concept [21.45]. The 4 × 4 cofactor matrix (variance matrix excluding the variance factor) of the receiver position and receiver clock of the single-constellation single-frequency model can analytically be given as [21.46]

$$\left(\mathbf{J}_{0}^{\top}\mathbf{J}_{0}\right)^{-1}=\begin{bmatrix}\mathbf{C}_{\hat{\boldsymbol{r}}(t)}^{\mathrm{S}}&\mathbf{C}_{\hat{\boldsymbol{r}}(t)}^{\mathrm{S}}\overline{\boldsymbol{e}}_{r}^{\mathrm{S}}(t)\\ {\overline{\boldsymbol{e}}_{r}^{\mathrm{S}}(t)}^{\top}\mathbf{C}_{\hat{\boldsymbol{r}}(t)}^{\mathrm{S}}&\frac{1}{m_{\mathrm{S}}}+{\overline{\boldsymbol{e}}_{r}^{\mathrm{S}}(t)}^{\top}\mathbf{C}_{\hat{\boldsymbol{r}}(t)}^{\mathrm{S}}\overline{\boldsymbol{e}}_{r}^{\mathrm{S}}(t)\end{bmatrix}.$$
(21.65)

This cofactor matrix is based on the design matrix of the SPP model given as in (21.51) and where

$$\overline{\boldsymbol{e}}_{r}^{\mathrm{S}}(t)=\frac{1}{m_{\mathrm{S}}}\sum_{{s}=1}^{m_{\mathrm{S}}}\boldsymbol{e}_{r}^{s}(t)$$

denotes the mean LOS vector over all satellites. The 3 × 3 cofactor matrix of the receiver position is given as

$$\mathbf{C}_{\hat{\boldsymbol{r}}(t)}^{\mathrm{S}}=\left(\sum_{{s}=1}^{m_{\mathrm{S}}}\left[\boldsymbol{e}_{r}^{s}(t)-\overline{\boldsymbol{e}}_{r}^{\mathrm{S}}(t)\right]\left[\boldsymbol{e}_{r}^{s}(t)-\overline{\boldsymbol{e}}_{r}^{\mathrm{S}}(t)\right]^{\top}\right)^{-1}.$$
(21.66)

From this last expression, one can see that if the satellite LOS vectors differ a lot from each other and from their mean, that is, when \(\boldsymbol{e}_{r}^{s}(t)-\overline{\boldsymbol{e}}_{r}^{\mathrm{S}}(t)\) is large, this is favorable for the precision with which the receiver position can be determined.

DOP values can now be computed based on the diagonal elements of the cofactor matrix of the receiver position. If \(\boldsymbol{r}(t)=[E,N,U]^{\top}\) denotes the position in a local east–north-up frame, then the following DOPs can be calculated

$$\begin{aligned}\text{GDOP}&=\sqrt{c_{\hat{{E}}}^{2}+c_{\hat{{N}}}^{2}+c_{\hat{{U}}}^{2}+c_{\text{cd}\hat{\mathrm{t}}_{{r},j}^{\mathrm{S}}}^{2}}\;,\\ \text{PDOP}&=\sqrt{c_{\hat{{E}}}^{2}+c_{\hat{{N}}}^{2}+c_{\hat{{U}}}^{2}}\;,\\ \text{HDOP}&=\sqrt{c_{\hat{{E}}}^{2}+c_{\hat{{N}}}^{2}}\;,\\ \text{VDOP}&=\sqrt{c_{\hat{{U}}}^{2}}\;.\end{aligned}$$
(21.67)

Here

$$c_{\hat{E}}^{2},\ c_{\hat{N}}^{2},\quad\text{and}\quad c_{\hat{U}}^{2}$$

denote the diagonal elements of \(\mathrm{C}_{\hat{\boldsymbol{r}}}(t)\) for the position, whereas

$$c_{\text{cd}\hat{t}_{{r},j}^{\mathrm{S}}}^{2}$$

denotes the diagonal element of (21.65) for the receiver clock. GDOP stands for geometric dilution of precision, PDOP for position dilution of precision, HDOP for horizontal dilution of precision, and VDOP for vertical dilution of precision. Unfavorable geometries, however, may lead to poor receiver precision and in some unfortunate cases even the position cannot be determined (geometry singularities). For example, when the end points of the LOS vectors describe a plane (all satellites lie on the surface of a cone) [21.47]. In that case the DOPs are infinitely large.

In case of multiconstellation positioning, it is also possible to calculate DOP values. If we assume two constellations, A and B, then these DOPs are computed based on the dual-constellation model (21.59), for which the receiver position cofactor matrix follows as

$$\mathbf{C}_{\hat{\boldsymbol{r}}(t)}=\left[\left({\mathbf{C}_{\hat{\boldsymbol{r}}(t)}^{\mathrm{A}}}\right)^{-1}+\left(\mathbf{C}_{\hat{\boldsymbol{r}}(t)}^{\mathrm{B}}\right)^{-1}\right]^{-1}\;,$$
(21.68)

that is, the inverse of a sum of the inverse cofactor matrices according to (21.66) that correspond to each individual constellation. From this expression, it easily follows that the dual-constellation DOPs are smaller (or in the worst case: equal) than their single-constellation counterparts. In case both ISB and time offset are a priori known, the receiver position cofactor matrix follows from model (21.63) as

$$\mathbf{C}_{\hat{\boldsymbol{r}}}(t)=\left(\sum_{s=1}^{m_{\mathrm{A}}+m_{\mathrm{B}}}\left[\boldsymbol{e}_{r}^{s}(t)-\overline{\boldsymbol{e}}_{r}(t)\right]\left[\boldsymbol{e}_{r}^{s}(t)-\overline{\boldsymbol{e}}_{r}(t)\right]^{\top}\right)^{-1},$$
(21.69)

with the mean LOS vector taken over both constellations, that is,

$$\overline{\boldsymbol{e}}_{r}(t)=\frac{1}{m_{\mathrm{A}}+m_{\mathrm{B}}}\sum_{{s}=1}^{m_{\mathrm{A}}+m_{\mathrm{B}}}\boldsymbol{e}_{r}^{s}(t)\;.$$

The DOP values based on this model are even smaller than those based on (21.68).

As an example, Fig. 21.4 depicts PDOP values for a certain receiver–satellite geometry of four GPS and four Galileo satellites. Besides constellation-specific PDOPs, the PDOPs are shown for the combined GPS+Galileo model assuming a receiver clock and ISB parameter (similar to assuming a receiver clock per constellation), as well as PDOPs when only one receiver clock parameter is assumed for both GPS and Galileo (ISBs known). The PDOPs of the combined model with one receiver clock are the smallest, as this model is the strongest, although in Fig. 21.4 the PDOPs of this model tend to become equal to the PDOPs of the model with two receiver clocks, but this is due to the actual geometry in this example.

Fig. 21.4a,b
figure 4figure 4

Skyplot (a) and PDOP values (b), based on 4 Galileo-IOV and 4 GPS satellites, above 10 deg cut-off elevation in Perth, Australia, for 04:05–6:00 GPST on 20 March 2013. For the combined GPS+Galileo case, distinction is made between the PDOPs based on model (21.59) and model (21.63)

3.7 PPP Model

If, in addition to the pseudoranges, also the carrier-phase observations are employed for point positioning, in combination with the use of precise (IGS) products, we speak of PPP [21.48, 21.49]. For the full details and intricacies of the PPP technique, we refer to Chap. 25; here we will restrict ourselves to an overview of the single-frequency and multifrequency PPP models based on one constellation, as to compare to their SPP counterparts. Figure 21.5 visualizes the procedure for PPP, where in the first step a reference network (e. g., the IGS network) determines (satellite-dependent) parameters that are in a second step transmitted to the users. In the third step a user applies this correction information which enables PPP.

Fig. 21.5a–c
figure 5figure 5

Visualization of the PPP(-RTK) concept: (a) CORS (global or regional) network determines GNSS parameters; (b) satellite-dependent parameters are uploaded by the network and downloaded by a user; (c) the user applies the corrections to his data, enabling single-receiver precise positioning

PPP users employing the precise (IGS) products should be aware that the precise satellite clocks are based on the ionosphere-free combination, similar to the broadcast satellite clock for most constellations. In case of single-frequency PPP, therefore, corrections for the satellite DCBs are required, but these are also provided by the IGS or its analysis centers. In addition, as single-frequency PPP users cannot form the ionosphere-free dual-frequency combination, ionospheric corrections are essential and these can be obtained from the IGS as well, in the GIM format.

Concerning the tropospheric delays, in addition the a-priori model corrections, for precise positioning applications it may be necessary to parameterize (residual) tropospheric delays. A common procedure is to map the residual tropospheric delays to local zenith, that is,

$$T_{r}^{s}(t)=T_{\mathrm{r,0}}^{s}(t)+{m}_{r}^{s}(t)T_{r}^{\mathrm{z}}(t)\;,$$

with \(T_{{r},0}^{s}(t)\) the a-priori tropospheric correction, \({m}_{r}^{s}(t)\) the mapping function , and \(T_{r}^{\mathrm{z}}\) the zenith tropospheric delay (ZTD) . An example of an accurate tropospheric mapping function is Niell’s mapping function [21.50].

GLONASS PPP (and also RTK) requires a-priori correction of the receiver- and frequency-dependent interchannel or interfrequency biases, at least for the phase data, that is, \(\Updelta\delta_{{r},j}^{\mathrm{S}}\). In [21.51], a table is presented with interchannel corrections for GLONASS receivers of nine different manufacturers. Here we assume that the data are a-priori corrected for these biases, such that GLONASS data can be processed using the general models we present here.

Due to a lack of space, the PPP models discussed here are restricted to one GNSS constellation only. PPP models for multiple constellations can however be developed along similar lines as the multiconstellation SPP model in Sect. 21.3.5. For notational convenience, from now on the system identifier S will be omitted in a single-constellation case.

3.7.1 Single-Frequency PPP Model

In case of single-frequency PPP it is assumed that identical offsets for the satellite clock and hardware bias apply to both code and phase observations, as well as a-priori corrections for tropospheric and ionospheric delays. Provided that the satellite clock offsets are based on the ionosphere-free combination (as is the case with precise IGS products), the offset terms for code and phase then can be given as

$$\begin{aligned}o_{{p}_{{r},j}^{s}}(t)&=c\left[{dt}_{\text{IF}}^{s}\left(t-\tau_{r}^{s}\right)+\frac{\mu_{j}}{\mu_{2}-\mu_{1}}\text{DCB}_{12}^{s}\right]\\ &\quad\,-{T}_{\mathrm{r,0}}^{s}(t)-\mu_{j}{I}_{r}^{s}(t)\;,\\ o_{{\varphi}_{{r},j}^{s}}(t)&=c\left[{dt}_{\text{IF}}^{s}\left(t-\tau_{r}^{s}\right)+\frac{\mu_{j}}{\mu_{2}-\mu_{1}}\text{DCB}_{12}^{s}\right]\\ &\quad\,-{T}_{\mathrm{r,0}}^{s}(t)+\mu_{j}{I}_{r}^{s}(t)\;.\end{aligned}$$
(21.70)

Like the receiver hardware biases, it is assumed that the satellite hardware biases are stable such that they can be kept as time constants in the model. The DCBs (difference of satellite hardware biases) are needed to convert the ionosphere-free satellite clocks to the clocks plus hardware bias for the required frequency. It is remarked that in case of GPS the code corresponds to the C/A code (j = 1), we also need to subtract the P1-C/A DCB (i. e., \(\text{DCB}_{1\mathrm{c}}\)) from the code correction. Applying the above offsets to the single-frequency code and phase observations yields the (linearized) full-rank single-frequency PPP model as given in Table 21.3 (top row).

Table 21.3 Full-rank undifferenced PPP models and their estimable parameters. Note: SF = single-frequency ; DF = dual-frequency

The corrected (observed-minus-computed) code and phase observables then read \(\triangle{\tilde{p}}_{{r},j}(t)=\triangle{{p}}_{{r},j}(t)+o_{{p}_{{r},j}^{s}}(t)\) and \(\triangle{\tilde{\varphi}}_{{r},j}(t)=\triangle{{\varphi}}_{{r},j}(t)+o_{{\varphi}_{{r},j}^{s}}(t)\), respectively. Precise satellite orbits are used to calculate the LOS vectors in geometry matrix \(\mathbf{G}_{r}(t)\) and to compute approximate values for the receiver–satellite ranges, used in the linearization. In this PPP model, the (residual) ZTD parameter is combined with the position parameters in the four-dimensional vector \(\boldsymbol{x}_{r}(t)\), defined as

$$\boldsymbol{x}_{r}(t)=\left[\triangle\boldsymbol{r}_{r}(t)^{\top},\,T_{r}^{\mathrm{z}}(t)\right]^{\top}\;.$$
(21.71)

In addition, the LOS vectors and tropospheric mapping coefficients are stored in the \(m\times{\mathrm{4}}\) matrix \(\mathbf{G}_{r}(t)=[\boldsymbol{g}_{r}^{1}(t),\ldots,\boldsymbol{g}_{r}^{m}(t)]^{\top}\), with the 4 × 1 geometry vector \(\boldsymbol{g}_{r}^{s}(t)\) now consisting of the LOS vector, plus the tropospheric mapping function coefficient, which is defined as

$$\begin{aligned}\boldsymbol{g}_{r}^{s}(t)=\begin{bmatrix}-\boldsymbol{e}_{r}^{s}(t)\\ {m}_{r}^{s}(t)\end{bmatrix}.\end{aligned}$$
(21.72)

Besides the receiver position, unknown parameter for both code and phase is the (biased) receiver clock \(d\tilde{t}_{r}(t)\), of which its interpretation is identical to that of single-frequency SPP.

The phase observables in the PPP model introduce their own specific parameters, which are a receiver-phase bias and phase ambiguity parameters. Unfortunately these parameters cannot be estimated independently, as their columns are linear dependent. To overcome this rank deficiency (of size 1), a choice is to estimate the between-satellite differences of the (biased) ambiguity parameters, instead of their undifferenced counterparts, that is, the estimable ambiguity parameter is \(\tilde{{N}}_{{r},j}^{s}\) in Table 21.3 , for \(s=1,\ldots,m\) and where s ≠ p. With this reparameterization, there is thus one ambiguity parameter less estimable, since we form between-satellite differences with respect to the \(p\,\)th satellite. This arbitrarily chosen satellite is referred to as pivot satellite. Thus, the \((m-1)\)-vector of estimable ambiguities reads

$$\tilde{\mathbf{N}}_{{r},j}=\left[\tilde{\boldsymbol{N}}_{{r},j}^{1},\ldots,\tilde{\boldsymbol{N}}_{{r},j}^{p-1},\tilde{\boldsymbol{N}}_{{r},j}^{p+1},\ldots,\tilde{\boldsymbol{N}}_{{r},j}^{m}\right]^{\top}\;.$$
(21.73)

In the PPP design matrix in Table 21.3 this vector is multiplied by the \({m}\times(m-1)\) matrix C m , which is defined as

$$\begin{aligned}\mathbf{C}_{m}=\begin{bmatrix}\mathbf{I}_{p-1}&\boldsymbol{0}\\ \mathbf{0}&\begin{pmatrix}\mathbf{0}_{1\times(m-p)}\\ \mathbf{I}_{{m}-{p}}\\ \end{pmatrix}\end{bmatrix}.\end{aligned}$$
(21.74)

This matrix can be regarded as the identity matrix of dimension m having its p-th column removed. A consequence of parameterizing between-satellite ambiguity differences for undifferenced observables is that it should be somewhere compensated by the other estimable parameters. In this case the estimable receiver-phase bias parameter, that is, \(\tilde{{\delta}}_{{r},j}\) in Table 21.3, gets biased by the ambiguity plus hardware biases corresponding to the pivot satellite.

Although the ambiguities \({N}_{{r},j}^{s}\) have the property of being integer, in the PPP model they are not estimable as such, because of the lumping of the satellite-phase and code hardware delays to them (Table 21.3 ). The consequence is that for every epoch of data the number of phase observations equals the number of phase parameters they introduce, which means that the phase data do not contribute to the estimation of the receiver position, which is thus fully governed by the (less precise) code observables. However, this situation changes in multiepoch mode; in that case the phase data start to contribute to the solution of the receiver position (as their estimable ambiguity parameters are time constant). The longer this time span, the more it is governed by the phase data; after a certain time the position precision will have converged to a certain level. The redundancy of this multiepoch, single-frequency PPP model equals \(m-5+(k-1)(2m-5)\), with k denoting the number of epochs. Note that for a single epoch (k = 1) this redundancy reduces to m − 5, which is 1 less than the redundancy of its SPP counterpart. This is due to the parameterization of the ZTD in the PPP model.

In the absence of ionospheric corrections, single-frequency PPP is still possible, thereby making use of the opposite sign of the ionospheric delays for code and phase. In this case the model is, however, not solvable based on a single epoch of data, as there are too many unknown parameters. Based on two epochs, however, the full-rank single-frequency PPP model is presented in Table 21.3 (second row). The estimable ambiguity parameters of this ionosphere-float model (as ionospheric delays are unknown parameters) have the same interpretation as in the single-frequency ionosphere-corrected PPP model, but the estimable receiver clock has a completely different interpretation; in the ionosphere-float case it is biased by the receiver bias, as well as the pivot satellite ambiguity and hardware biases (there is no estimable receiver bias parameter). The estimable ionospheric parameter is biased by hardware delays and (pivot satellite) ambiguities as well. Based on a minimum of two epochs, the redundancy of this single-frequency, ionosphere-float PPP model equals m − 9, requiring this model a large number of 9 satellites to be solvable. This redundancy is, however, based on the parameterization of different receiver positions for both epochs (i. e., a kinematic solution). If the receiver can be assumed static and the ZTD is assumed time constant, the model becomes stronger since \(\boldsymbol{x}_{r}(t_{1})=\boldsymbol{x}_{r}(t_{2})\), increasing the redundancy with 4 to m − 5, which is identical to the redundancy of the single-epoch, single-frequency, ionosphere-corrected PPP model.

Subject to the availability of precise GNSS orbits, clocks , DCBs, and ionosphere products, the positioning accuracy of single-frequency PPP is typically at decimeter level after a few minutes of convergence time [21.52].

3.7.2 Dual-Frequency PPP Model

In the dual-frequency PPP case, the ionospheric delays are assumed as unknown parameters and therefore no ionospheric corrections are incorporated. In that case DCBs are not needed as well. The correction terms for code and phase are in that case equivalent and read

$$o_{{p}_{{r},\text{IF}}^{s}}(t)=o_{{\varphi}_{{r},\text{IF}}^{s}}(t)=c{dt}_{\text{IF}}^{s}\left(t-\tau_{r}^{s}\right)-{T}_{{r},0}^{s}(t)\;.$$
(21.75)

Like in the single-frequency GPS case, if the first frequency corresponds to the C/A code (j = 1), we need to subtract the P1-C/A DCB (i. e., \(\text{DCB}_{1\mathrm{c}}\)) from the code correction. The linearized full-rank model for the dual-frequency PPP case is given in Table 21.3 (bottom row).

The estimability and interpretation of the code-related parameters (i. e., receiver position and clock) in this dual-frequency PPP model is exactly the same as in the dual-frequency SPP model (21.54) and (21.58). As a consequence of the absence of the satellite DCB corrections in the dual-frequency PPP model, satellite DCBs get lumped to the estimable ionospheric parameters and hence its interpretation becomes a combination of the true ionospheric delay plus satellite and receiver DCBs (Table 21.3). The ambiguity parameters also get biased by the satellite DCBs.

The phase-ambiguity parameters are in the dual-frequency PPP case estimable as between-satellite differenced parameters (relative to pivot satellite p), similar as in the single-frequency PPP model; however the interpretation between the dual- and single-frequency cases differs (Table 21.3). In both cases, the ambiguities are not integer estimable.

The redundancy of the dual-frequency PPP model equals \(m-5+(k-1)(3m-5)\), which for a single epoch (k = 1) reduces to m − 5, similar to the previously discussed single-frequency PPP models. The positioning accuracy of dual-frequency (GPS) PPP can reach centimeter level, however only after a convergence time (based on the constant ambiguity terms) of typically more than 30 min [21.52].

4 Relative Positioning Models

In this section, we discuss the differential or relative GNSS positioning models, in which observations of more than one receiver are combined such that errors that are common between the receivers can be eliminated or reduced. Another important advantage is that in a relative measurement setup the carrier-phase ambiguities can be estimated to integer values, thereby greatly improving the positioning accuracy. The models in this section are restricted to the single-epoch case. For all relative positioning models it is assumed that in case of FDMA constellations interchannel bias corrections are a-priori corrected and do not show up in the observation equations. As with the models for PPP, the discussion of the relative positioning models in this chapter will be restricted to a single GNSS constellation only.

4.1 Principle of DGNSS and (PPP-)RTK

The typical accuracy of (single-constellation) SPP is in the order of 10 m. This accuracy is basically due to the uncertainty in the orbits, satellite clocks , and atmospheric delays. Despite the developments of PPP during the past decade, the technique of differential GNSS (DGNSS) has already been applied for decades to improve this positioning accuracy through eliminating or significantly removing errors that are common for receivers simultaneously tracking data of the same GNSS satellites. More details about DGNSS and services based on this concept can be found in Chap. 26. Here, we will briefly review the principle of DGNSS, following the discussion in [21.12].

4.1.1 Satellite Clock Evaluation

Due to the difference in travel time between two or more receivers in a relative positioning setup, the satellite clock and satellite hardware delay are evaluated at (slightly) different times of transmission, that is, \(t-\tau_{1}^{s}\) for the reference receiver, denoted using subscript 1, and \(t-\tau_{r}^{s}\) for the other (rover) receiver, denoted using subscript r (Fig. 21.6). This difference in travel time, that is, \(|\tau_{r}^{s}-\tau_{1}^{s}|\), is at most 19 ms (for one receiver experiencing the satellite in zenith and the other receiver experiencing the same satellite at zero degrees elevation) [21.18]. This means that the difference in transmission time, that is, \(|(t-\tau_{1}^{s})-(t-\tau_{r}^{s})|\), is at most 19 ms as well. Assuming that the satellite clock drifts with a rate of at most 10−11 s/s (Chap. 5), this means that after 19 ms the satellite clock (in terms of distance) has changed with \(c\cdot 10^{-11}\cdot 19\cdot 10^{-3}\approx{\mathrm{0.06}}\,{\mathrm{mm}}\), which is negligible compared to the precision of the phase and code observations. Thus, we may safely assume that for the purpose of evaluation of the satellite clock at the time of transmission

$$dt^{s}(t-\tau_{1}^{s})=dt^{s}\left(t-\tau_{r}^{s}\right)\doteq dt^{s}(t-\tau^{s})\;.$$
(21.76)
Fig. 21.6
figure 6figure 6

Relative GNSS positioning: two receivers (reference 1 and rover r) quasi-simultaneously receive signals from satellite s at time t. On their ways, they propagate through the atmosphere (ionosphere and atmosphere), affecting their travel times (denoted as \(\tau_{1}^{s}\) and \(\tau_{r}^{s}\))

4.1.2 Code-Dominated DGNSS Positioning

Recall the (nonlinear) code observation equation (21.1 ). Its expectation can be given as

$$\begin{aligned}{E}(p_{{r},j}^{s}(t))&=\rho_{r}^{s}\left(t,t-\tau_{r}^{s}\right)+T_{r}^{s}(t)+\mu_{j}{I}_{r}^{s}(t)\\ &\quad\,+c[dt_{r}(t)+d_{{r},j}]\\ &\quad\,-c\left[dt^{s}\left(t-\tau_{r}^{s}\right)-d_{j}^{s}\right]\;.\end{aligned}$$
(21.77)

Now assume a reference receiver r = 1, which is stationed at a known location. Based on this known position together with the known position of the satellite (computed from the ephemeris), the range \(\rho_{1}^{s}(t,t-\tau_{1}^{s})\) can be computed. Subtracting the observed pseudorange from this computed range yields the pseudorange corrections (PRC) for satellite s

$$\text{PRC}_{p,j}^{s}(t)=\rho_{1}^{s}\left(t,t-\tau_{1}^{s}\right)-p_{1,j}^{s}(t)\;.$$
(21.78)

Applying these pseudorange corrections to the pseudoranges of a user r yields, making use of (21.76)

$$\begin{aligned}{E}\left(\tilde{p}_{{r},j}^{s}(t)\right)&=\rho_{r}^{s}\left(t,t-\tau_{r}^{s}\right)+T_{1{r}}^{s}(t)+\mu_{j}{I}_{1{r}}^{s}(t)\\ &\quad\,+c[dt_{1{r}}(t)+d_{1{r},j}]\;.\end{aligned}$$
(21.79)

Here the corrected pseudorange reads

$$\tilde{p}_{{r},j}^{s}(t)=p_{{r},j}^{s}(t)+\text{PRC}_{\mathrm{p},j}^{s}(t)\;.$$

Furthermore, between-receiver differenced unknown parameters are denoted as \((\cdot)_{1{r}}=(\cdot)_{r}-(\cdot)_{1}\). Thus, besides the elimination of satellite clocks and hardware delays, users employing the pseudorange corrections may significantly reduce the errors due to tropospheric and ionospheric delays. For sufficiently short distances, these differential atmospheric errors are so small (due to the spatial correlation of the atmosphere), compared to the measurement precision of the code data, that they may be neglected and disappear as unknown parameters. The combined differential receiver clock and hardware delay, that is, \(c[dt_{1{r}}(t)+d_{1{r},j}(t)]\), can be regarded as a receiver clock error to be solved by the user using a model which has the same structure as the SPP model discussed in the previous section.

Next to the pseudorange corrections, in practice usually also so-called range-rate corrections (RRC) are determined and transmitted (in real-time) to users, as to account for the difference between the time of determination of the corrections at the reference station (t0) and the time the corrections are applied by the users (t)

$$\text{PRC}_{{p},j}^{s}(t)=\text{PRC}_{{p},j}^{s}(t_{0})+(t-t_{0})\text{RRC}_{p,j}^{s}(t_{0})\;,$$
(21.80)

where \(t-t_{0}\) is referred to as latency . It will be clear that the accuracy of the pseudorange corrections improves for smaller latencies.

Using the above concept of DGNSS, the positioning accuracy can be improved to 1–2 m. The accuracy can be improved further (to submeter level) by using carrier-phase smoothing (Chap. 20), but its performance is limited due to local receiver bias (multipath) and spatial decorrelation of the atmosphere.

4.1.3 Phase-Dominated DGNSS (RTK or PPP-RTK) Positioning

For the carrier-phase observations, we can apply a similar technique as for code. The expectation of the (nonlinear) phase-observation equation reads (21.2 )

$$\begin{aligned}{E}\left(\varphi_{{r},j}^{s}(t)\right)&=\rho_{r}^{s}\left(t,t-\tau_{r}^{s}\right)+T_{r}^{s}(t)-\mu_{j}{I}_{r}^{s}(t)\\ &\quad\,+c[dt_{r}(t)+\delta_{{r},j}]+\lambda_{j}{N}_{{r},j}^{s}\\ &\quad\,-c\left[dt^{s}\left(t-\tau_{r}^{s}\right)-\delta_{j}^{s}\right]\;.\end{aligned}$$
(21.81)

For a reference receiver 1, we can subtract the observed carrier-phase from the computed range, which yields the phase-range corrections (PRC) for satellite s

$$\text{PRC}_{\varphi,j}^{s}(t)=\rho_{1}^{s}\left(t,t-\tau_{1}^{s}\right)-\varphi_{1,j}^{s}(t)\;.$$
(21.82)

These phase-range corrections are in a next step applied to correct the carrier-phases of the user r, corresponding to the same satellite s

$$\begin{aligned}E\left(\tilde{\varphi}_{{r},j}^{s}(t)\right)&=\rho_{r}^{s}\left(t,t-\tau_{r}^{s}\right)+T_{1r}^{s}(t)-\mu_{j}{I}_{1{r}}^{s}(t)\\ &\quad\,+c[dt_{1r}(t)+\delta_{1{r},j}]+\lambda_{j}{N}_{1{r},j}^{s}\;.\end{aligned}$$
(21.83)

Here the corrected carrier-phase reads \(\tilde{\varphi}_{{r},j}^{s}(t)=\varphi_{{r},j}^{s}(t)+\text{PRC}_{\varphi,j}^{s}(t)\). If the latency of the corrections equals zero, DGNSS positioning with phase (and code) is better known as the real-time kinematic (RTK) positioning technique. The accuracy of RTK positioning is at centimeter level (or better), provided that the carrier-phase ambiguities can be resolved to their integer values. We remark that the corrected phase-observation equations cannot be directly used for positioning as the system is (as with PPP) rank deficient. How to deal with this is discussed in Sect. 21.4.4.

In practice, under average ionospheric conditions, the differential atmospheric errors can be neglected for distances between the receivers up to about 10 km, and the positioning method is referred to as short-baseline RTK . Satellite orbit errors can also be ignored for these short distances (Sect. 21.4.2 ). RTK based on GPS is a proven positioning concept and when GPS is combined with other constellations even more promising results are obtained (e. g., [21.53] for RTK based on GPS with Galileo and [21.54] for GPS combined with BeiDou). Extending the RTK technique to longer distances is possible, but then the differential atmospheric errors and orbit errors need to be taken into account (long-baseline RTK) [21.55, 21.56]. In case of network RTK corrections for the atmospheric delays are estimated from a network of surrounding reference stations and transmitted to users. More details about (network) RTK positioning can be found in Chap. 26. The technique of PPP-RTK [21.57] (or PPP-AR; AR = Ambiguity Resolution) also relies on correction information provided by a reference network, but the main difference with network RTK is that with PPP-RTK the correction are provided in the parameter space, while in case of network RTK the corrections are in the observation space. PPP-RTK is discussed in further detail in Sect. 21.4.5.

4.2 Impact of Orbit Errors

When linearizing the GNSS observation equations, the satellite positions are held fixed to their values as computed (per receiver) in the SPP processing. The accuracy of satellite positions computed from the broadcast ephemeris is at the level of a few meters, while based on precise ephemeris this is (for new constellations: expected) at the level of 5–10 cm [21.58]. Errors in these fixed satellite positions may negatively impact the estimated receiver position. If we denote the errors in the satellite position as vector \(\triangle\boldsymbol{r}^{s}\), then its effect on the relative baseline is upper bounded according to the following rule-of-thumb [21.59]

$$\left|\left[\boldsymbol{e}_{1{r}}^{s}(t)\right]^{\top}\triangle\boldsymbol{r}^{s}(t)\right|\leq\frac{\|\boldsymbol{r}_{1{r}}(t)\|}{\|\boldsymbol{r}_{r}^{s}(t)\|}\|\triangle\boldsymbol{r}^{s}(t)\|\;,$$
(21.84)

with \(\boldsymbol{e}_{1{r}}^{s}(t)=\boldsymbol{e}_{r}^{s}(t)-\boldsymbol{e}_{1}^{s}(t)\) the between-receiver differenced LOS vector, \(\boldsymbol{r}_{1{r}}(t)=\boldsymbol{r}_{r}(t)-\boldsymbol{r}_{1}(t)\) the relative receiver position (baseline) vector, and \(\boldsymbol{r}_{r}^{s}(t)=\boldsymbol{r}^{s}(t)-\boldsymbol{r}_{r}(t)\) the receiver–satellite position vector. For example, the impact of an orbit error of 2 m on a baseline of 100 km is at most only 1 cm (assuming a 20000 km receiver–satellite range). The above upper bound can also be used to assess the effect of differences in reference frames of the satellite positions in a multiconstellation case.

For longer baselines (and network-RTK or PPP-RTK) precise ephemeris should be used, restricting the impact of orbit errors on the receiver position.

4.3 Ionosphere-Fixed/Weighted/Float Models

Differential ionospheric delays generally become larger for increasing baseline lengths. To flexibly apply the models to a whole range of baseline lengths, the relative models presented in this section are presented for three different versions regarding the presence of the differential ionospheric delays.

For sufficiently short baselines the ionosphere-fixed model is presented, in which the differential ionospheric delays are absent. This corresponds to the assumption that the absolute ionospheric delays for a certain satellite are equal for all receivers, as they intersect the ionosphere in the same part, that is, \({I}_{1}^{s}(t)={I}_{r}^{s}(t)\doteq I^{s}(t)\) (Fig. 21.7). For longer baselines the size of the differential ionospheric delays may be within certain bounds such that knowledge can be incorporated in the form of (soft) constraints. The resulting model is referred to as the ionosphere-weighted model. For even longer baselines, when we do not have any a-priori knowledge on the differential ionospheric delays, the ionospheric delays are assumed as completely unknown parameters. This is the ionosphere-float model. This terminology concerning the tuning of the ionospheric delays is adopted from [21.60].

Fig. 21.7
figure 7figure 7

Visualization of propagation of GNSS signals through the ionosphere. Signals of receivers that are relatively close to each other travel through similar parts of the ionosphere, while more remote receivers experience a more different ionospheric delay

4.4 Undifferenced Relative Positioning Models

In this subsection, the relative positioning model is presented based on the original undifferenced, uncombined observation equations for code and phase. The link with the models based on differenced observations will be made later on in this chapter. An important advantage of the undifferenced model is that it is more flexible than differenced; this flexibility has been recognized already for a long time [21.18, 21.61, 21.62, 21.63, 21.64]. For example, satellites that are only visible by some of the receivers in the network can still be used, while differencing algorithms can only process those satellites that are in view by all receivers. Another important advantage of the undifferenced model is that temporal constraints can be incorporated to parameters that would have been eliminated when differencing, for example, clocks or hardware delays. The undifferenced models that are presented in this section are assumed to be valid for a network of n GNSS receivers. By simply setting n = 2 the results for a single-baseline model are obtained.

4.4.1 Rank-Deficient Undifferenced Model

As with the undifferenced models for point positioning (Sect. 21.3), also for the relative positioning model based on undifferenced observations it is not possible to estimate all parameters uniquely because the system of observation equations is rank deficient. To overcome this rank deficiency, as in the case of the point positioning models, we apply the theory of S-systems (Chap. 22), resulting in linear combinations of parameters that are estimable. There is, however, not a unique way to choose the estimable linear combinations; in theory there are infinite possibilities. Different choices lead to different interpretations of the estimable parameters.

One choice leads to the so-called distinct clocks model , for which a receiver clock as well as a satellite clock parameter becomes estimable for each frequency for all code and phase data [21.18, 21.65]. Another choice results in a full-rank undifferenced model in which common receiver clock and satellite clock parameters become estimable. This is the so-called common clocks model  [21.66, 21.67]. This model is reviewed here, as its estimable parameters have a clear link with those presented in the previous sections for SPP and PPP. The common clocks model as presented here applies to a general case of f ≥ 2 frequencies.

4.4.2 Regional Networks

For distances between the receivers that are smaller than about 500 km usually not the position and ZTD of all receivers are estimated in absolute sense by means of relative models, as the LOS vectors of the different receivers with respect to the same satellite become close to parallel, resulting in poorly estimable absolute positions and ZTDs [21.68]. In the extreme case, if the LOS vectors are assumed to be equivalent for the different receivers, that is, \(\boldsymbol{g}_{1}^{s}(t)=\cdots=\boldsymbol{g}_{n}^{s}(t)\doteq\boldsymbol{g}^{s}(t)\) (21.72 ), this causes an additional rank deficiency in the network model. A common procedure to overcome this additional rank deficiency is to estimate the position and ZTD of all receivers relative to that of one of receivers (i. e., the so-called pivot receiver).

4.4.3 Common Clocks Undifferenced Model

The estimable parameter functions corresponding to the common clocks model have been derived in [21.69] and are presented in Table 21.4. To differentiate the estimable parameters from their original counterparts, the estimable ones are denoted using a tilde. Concerning the interpretation, it can first of all be seen that all estimable parameters are a function of their original parameter, but biased by one or more other parameters. These other parameters are frequently the parameters corresponding to the pivot receiver and/or pivot satellite (for both we selected the first receiver and first satellite, denoted using a 1 subscript or superscript, but this could be any other receiver and satellite in the network).

Table 21.4 Estimable undifferenced parameters for the common clocks relative positioning model. Note: the (modernized) receiver DCB is defined as \(\text{DCB}_{{r},1j}(t)=d_{{r},1}(t)-d_{{r},j}(t)\), while the (modernized) satellite DCB is defined as \(\text{DCB}_{1j}^{s}(t)=d_{1}^{s}(t)-d_{j}^{s}(t)\)

The estimable receiver/ZTD parameters (\({\tilde{\boldsymbol{x}}}_{r}(t)\)) are absolutely estimable for global networks and relatively estimable in case of a regional network. Absolutely is put between quotes here, as the receiver positions are still relative with respect to the satellite positions that are held fixed. The presence of the pivot receiver’s position+ZTD is however compensated by their presence in the estimable satellite clock (\(d{\tilde{t}}^{s}(t)\)) from a regional network. This compensation holds for all biases present in a certain estimable parameter. Note that the estimable satellite clock can be written as a combination of ionosphere-free satellite clock, minus the ionosphere-free clock of the pivot receiver, plus (in case of a regional network) the pivot receiver’s position and/or ZTD.

If the ionosphere is assumed to be float instead of fixed/weighted, this causes an additional rank deficiency, which leads to differences in interpretation of the estimable receiver clock (\(d{\tilde{t}}_{r}(t)\)), receiver phase and code delay (\({\tilde{\delta}}_{{r},j}\) and \({\tilde{d}}_{{r},j}\), respectively), as well as the estimable ionospheric delay (\({\tilde{{I}}}_{r}^{s}(t)\)). Note the subtle difference in the interpretation of the estimable ionospheric delay between the ionosphere-weighted and ionosphere-float models: in the first case the DCB of the pivot receiver appears (i. e., DCB1,12), while in the second case it is the DCB corresponding to the receiver for which the ionospheric delay parameter is considered (i. e., \(\text{DCB}_{{r},12}\)). Furthermore, note that the interpretation of the ionospheric delay in case the ionosphere is float is exactly the same as the estimable ionospheric delay parameter of the dual-frequency PPP model in Table 21.3, if no satellite DCB corrections are applied.

Special attention needs the estimable satellite code delay parameter (\({\tilde{d}}_{j}^{s}\)). From Table 21.4 it follows that it is estimable as a modernized DCB (i. e., frequency j relative to frequency 1), however, with respect to the (traditional) DCB between the first two frequencies. This whole satellite-dependent DCB term is also relative to a similar DCB term, but then for the pivot receiver. As a consequence, satellite code parameters are only estimable when at least three frequencies are used (i. e., if j ≥ 3, thus for example not in the legacy dual-frequency GPS case).

Concerning the phase ambiguities (\({\tilde{{N}}}_{{r},j}^{s}\)), they are estimable as double-differenced (DD) parameters, and thus integer valued, with respect to the network’s pivot receiver and pivot satellite. By means of integer ambiguity resolution (Chap. 23), the network parameters can be estimated with the highest possible precision.

Based on the estimable undifferenced parameter functions, the system of full-rank GNSS network observation equations can be given as follows

$$\begin{aligned}{E}(\triangle p_{{r},j}^{s}(t))&={\boldsymbol{g}_{[r]}^{s}(t)}^{\top}{\tilde{\boldsymbol{x}}}_{r}(t)+c[d{\tilde{t}}_{r}(t)+{\tilde{d}}_{{r},j}]\\ &\quad\,-c[d{\tilde{t}}^{s}(t)-{\tilde{d}}_{j}^{s}]+\mu_{j}{\tilde{{I}}}_{r}^{s}(t),\quad r\geq 1\;,\\ {E}\left(\triangle\varphi_{{r},j}^{s}(t)\right)&={\boldsymbol{g}_{[r]}^{s}(t)}^{\top}{\tilde{\boldsymbol{x}}}_{r}(t)+c[d{\tilde{t}}_{r}(t)+{\tilde{\delta}}_{{r},j}]\\ &\quad\,-c\left[d{\tilde{t}}^{s}(t)-{\tilde{\delta}}_{j}^{s}\right]-\mu_{j}{\tilde{{I}}}_{r}^{s}(t)+\lambda_{j}{\tilde{{N}}}_{{r},j}^{s}\;,\\ r\geq 1\;,\quad&\left[{E}\left({I}_{r}^{s}(t)-{I}_{1}^{s}(t)\right)\right.\left.={\tilde{{I}}}_{r}^{s}(t)-{\tilde{{I}}}_{1}^{s}(t),r\geq 2\right].\end{aligned}$$
(21.85)

Note that the between-receiver ionospheric constraints, which are included in the form of pseudo observation equations, only appear in case the ionosphere is weighted (that is why we denote them using square brackets).

The redundancy of the undifferenced network model reads in the ionosphere-fixed/weighted cases \((n-1)f(m-1)-4n+(k-1)[n(2fm-1)-(2m-1)-4n]\), where the 4 reflects the estimation of both positions and ZTD parameters in the network. In case of a regional network, the 4n is to be replaced by \(4(n-1)\). In the ionosphere-float case it reads \((n-1)(f-1)(m-1)-4n+(k-1)[n(\{2f-1\}m-1)-(m-1)-4n]\), requiring one more frequency.

4.5 PPP-RTK Models

As discussed in Sect. 21.3.7 , (standard) PPP is possible by applying satellite positions and clocks that are determined by a (global) reference network (and satellite DCBs in case of single-frequency PPP). This information is not sufficient for the single-receiver GNSS user to resolve the ambiguities in his carrier-phase observations to integer values, which is needed for high-precision PPP based on short convergence times. The information that is lacking for integer ambiguity resolution enabled PPP (PPP-RTK or PPP-AR) are corrections for satellite phase and code biases, since these parameters hamper the estimable PPP ambiguities from being integer (Table 21.3).

If the reference network adopts an undifferenced model formulation, the crucial satellite phase and code bias information is among the estimable parameters. We emphasize that the choice of a common clocks network model (as done in the previous subsection) is not a prerequisite for PPP-RTK; the network may also adopt another S-system. In fact, the user does not even need to know the S-system of the network as he can equally apply corrections determined by networks that are based on different S-systems  [21.69]. However, if the reference network adopts the common clocks model, the estimable satellite clocks are ionosphere-free parameters and this allows a direct comparison with the clocks of, for example, the IGS.

In the literature, other network models can be found that serve as basis for the generation of PPP-RTK corrections [21.35, 21.70, 21.71, 21.72]. Usually these network models are not based on strictly undifferenced observables, but on linear combinations between observables, of which the ionosphere-free and Melbourne–Wübbena combinations (Chap. 20) are frequently used. Consequently the hardware delay and ambiguity parameters estimated using these linear combinations of observables are in the form of wide-lane and narrow-lane combinations. One-to-one transformation formulas between the corrections of various PPP-RTK approaches are presented in [21.73].

As with the discussion of the models for PPP, in the following we make a distinction between PPP-RTK models without ionospheric corrections (ionosphere-float PPP-RTK model) and those including ionospheric corrections (ionosphere-corrected PPP-RTK model).

4.5.1 Ionosphere-Float PPP-RTK Model

In the absence of ionospheric corrections, the PPP-RTK corrections for code and phase are the satellite clock as well as satellite code and phase-delay parameters from the common clocks network (and tropospheric and other corrections)

$$\begin{aligned}o_{{p}_{{r},j}^{s}}(t)&=c\left[d\tilde{t}^{s}(t)-{\tilde{d}}_{j}^{s}\right]-{T}_{{r},0}^{s}(t)\;,\\ o_{{\varphi}_{{r},j}^{s}}(t)&=c\left[d\tilde{t}^{s}(t)-{\tilde{\delta}}_{j}^{s}\right]-{T}_{\mathrm{r,0}}^{s}(t)\;.\end{aligned}$$
(21.86)

Here \({\tilde{d}}_{j}^{s}\) is only applied in case j ≥ 3, that is, for code observations at a third or higher frequency. Thus, in the legacy dual-frequency GPS case it is not applied, but it is for the third frequency observations transmitted by the Block IIF GPS satellites.

If the PPP-RTK user adopts – like the network – a common clocks model, the estimable user parameters plus their interpretation automatically follow from Table 21.4 by regarding receiver r to be the user receiver, instead of a network receiver. The difference is that there are no satellite clock as well as satellite phase and code bias parameters for the user, as these are corrected for. However, the interpretation of the estimable user’s position+ZTD, receiver clock, phase delay, code delay, ionospheric delay, and ambiguity parameters is as given in the table, for the case the ionosphere is float. The only difference in the interpretation of the user parameters may be the pivot satellite, showing up in the estimable phase delays and ambiguities. It is namely not needed that the user should adopt the same pivot satellite as the network; this can be any of the satellites he has in view.

For the PPP-RTK user’s position and ZTD it means that in case of a regional network they are – like for the network receivers – estimable relative to those of the pivot receiver in the network. In case the network pivot receiver’s position is held fixed in the processing (a usual assumption in case of CORS networks, i. e., \(\triangle r_{1}(t)=0\)), the estimable user’s position is not relative to the network’s pivot receiver; however the user’s estimable ZTD parameter still is, that is,

$$\tilde{T}_{r}^{\mathrm{z}}(t)=T_{r}^{\mathrm{z}}(t)-T_{1}^{\mathrm{z}}(t)\;.$$

The estimable PPP-RTK user’s ambiguity is also relative, with respect to the network pivot receiver’s ambiguity and with respect to an arbitrarily chosen pivot satellite p

$${\tilde{{N}}}_{{r},j}^{s}=\left[{N}_{{r},j}^{s}-{N}_{1,j}^{s}\right]-\left[{N}_{{r},j}^{p}-{N}_{1,j}^{p}\right]\;,$$
(21.87)

for s ≠ p and j ≥ 1. It is estimable as a double-differenced ambiguity and thus standard ambiguity resolution (LAMBDA) is applied to estimate the integer PPP-RTK ambiguities. Usually a three-step-procedure is followed to solve the position based on the integer ambiguities (Chap. 23).

If the (corrected) pseudorange and carrier-phase observables of, in general, f frequencies are denoted as vectors \(\triangle{\boldsymbol{\tilde{p}}}_{r}(t)\) and \(\triangle{\boldsymbol{\tilde{\varphi}}}_{r}(t)\), respectively, the full-rank undifferenced, multifrequency PPP-RTK model is given in Table 21.5 (second row). It is emphasized that the receiver code bias parameters (\(\tilde{d}_{{r},j}\)) only show up in case of triple- or higher frequency (i. e., j ≥ 3) and are absent in a dual-frequency case.

Table 21.5 Full-rank undifferenced multifrequency (MF) PPP-RTK models

4.5.2 Ionosphere-Corrected PPP-RTK Model

The ionosphere-float PPP-RTK approach of which the model was presented in the previous section requires a relatively long time before the ambiguities have converged and the integers can be resolved. To speed this up, it is essential to incorporate ionospheric corrections. Global reference networks (such as the IGS network) provide ionospheric corrections in the form of GIMs. Although these global ionospheric corrections may serve standard PPP, for PPP-RTK, aiming at centimeter level precision, they are not precise enough. More precise ionospheric corrections can be generated by a regional reference network that better captures the spatial variation of the ionospheric delays than a global network.

A way to generate these regional ionospheric corrections is by means of Kriging interpolation  [21.74] of the estimated ionospheric delays at the network receivers to the approximate location of the user [21.67]. The interpolation, carried out on a satellite-by-satellite basis, can be given as

$${I}_{\bar{r}}^{s}(t)=\boldsymbol{h}_{\bar{r}}^{\top}\left[{{I}}_{1}^{s}(t),\ldots,{{I}}_{n}^{s}(t)\right]^{\top}.$$
(21.88)

Here \(\boldsymbol{h}_{\bar{r}}\) denotes the n-vector performing the interpolation over the n network receivers and \({I}_{\bar{r}}^{s}(t)\) denotes the interpolated ionospheric delay at the (approximate) location of the user. The entries of the interpolation vector depend on the assumed spatial coherence of the ionosphere, as well as on the distances of the PPP-RTK user with respect to the network receivers. A property of the Kriging interpolation vector is that its entries add up to 1 (i. e., \(\boldsymbol{h}_{\bar{r}}^{\top}\boldsymbol{u}_{n}=1\)). At first sight there seems to be a problem to perform the interpolation, as it is based on the original, unbiased ionospheric delays, while the ionospheric parameters that are estimable are biased by other parameters. Fortunately this is not a problem, and the interpolation should simply be based on the estimable biased ionospheric parameters. If the network model is in the ionosphere-float common clocks S-system, the interpolation of the estimated network ionospheric corrections can then be written as

$$\tilde{{I}}_{\bar{r}}^{s}(t)={I}_{\bar{r}}^{s}(t)-\frac{1}{\mu_{2}-\mu_{1}}c\left[\text{DCB}_{12}^{s}+\text{DCB}_{\bar{r},12}\right].$$
(21.89)

Thus, the interpolated ionospheric correction the PPP-RTK user should apply can be interpreted as the interpolated ionospheric delay itself, plus the satellite DCB (the interpolation does not affect this since it is the same for all receivers), minus the interpolated receiver DCB, that is,

$$\text{DCB}_{\bar{r},12}=\boldsymbol{h}_{\bar{r}}^{\top}\left[\text{DCB}_{1,12},\ldots,\text{DCB}_{n,12}\right]^{\top}\;.$$

The presence of the satellite DCB as a bias of the interpolated ionospheric corrections means that the user does not have to explicitly correct for it, as is the case when, for example, GIM-based ionospheric corrections are used.

The PPP-RTK corrections for code and phase can now be given as

$$\begin{aligned}o_{{p}_{{r},j}^{s}}(t)&=c\left[d\tilde{t}^{s}(t)-{\tilde{d}}_{j}^{s}\right]-{T}_{{r},0}^{s}(t)-\mu_{j}\tilde{{I}}_{\bar{r}}^{s}(t)\;,\\ o_{{\varphi}_{{r},j}^{s}}(t)&=c\left[d\tilde{t}^{s}(t)-{\tilde{\delta}}_{j}^{s}\right]-{T}_{\mathrm{r,0}}^{s}(t)+\mu_{j}\tilde{{I}}_{\bar{r}}^{s}(t)\;.\end{aligned}$$
(21.90)

It is assumed that the expectation of the user’s predicted ionospheric delay corresponds to its true ionospheric delay, that is,

$${E}\left({I}_{\bar{r}}^{s}(t)\right)={E}\left({I}_{r}^{s}(t)\right).$$

Like with the ionosphere-float PPP-RTK model, if in the ionosphere-corrected case the user adopts a common clocks model as well, his estimable position/ZTD, receiver clock, receiver hardware bias, and ambiguity parameters follow from Table 21.4 by regarding receiver r to be the user receiver. Important to emphasize is that the ionosphere-float DCB parameters within the estimable receiver clock as well as receiver phase/code delay apply in this case as well, with the difference that \(\text{DCB}_{{r},12}\) should be replaced by its network-interpolated counterpart \(\text{DCB}_{\bar{r},12}\). Important consequence is that the estimable receiver code DCB is already estimable for two frequencies (i. e., j ≥ 2) instead of three.

The PPP-RTK model for the ionosphere-corrected case is given in Table 21.5 (first row). Note that as the ionospheric delays are corrected for there are no ionospheric parameters. Furthermore, the receiver code delays are estimable from the second frequency onward, in contrast to the ionosphere-float PPP-RTK model, where they are estimable only from the third frequency and higher. In the single-frequency (f = 1) case, the model reduces to the PPP model given in Table 21.3 (SF-PPP ionospheric-correction).

4.6 Link Between PPP-RTK and PPP

If the full-rank PPP-RTK design matrix in Table 21.5 is considered for two frequencies (i. e., f = 2), such that the part for the receiver code biases disappears, it is exactly identical to the full-rank design matrix corresponding to dual-frequency standard PPP (Table 21.3) (DF PPP iono-float). Although the interpretation of the parameters differs between PPP and PPP-RTK, the solution of PPP and PPP-RTK with the ambiguities treated as float are identical. Hence, standard PPP can be considered as a special case of PPP-RTK. In relation to this, it follows from the interpretations that the satellite phase biases, that is, \({\tilde{\delta}}_{j}^{s}\), exactly correct for the bias that is inside the PPP ambiguities in order to make them become PPP-RTK ambiguities and thus integer. Thus, in general

$$\left[\tilde{{N}}_{{r},j}^{s}\right]_{\text{PPP}}-\frac{c}{\lambda_{j}}\left[\tilde{{\delta}}_{j}^{s}-{\tilde{\delta}}_{j}^{p}\right]=\left[\tilde{{N}}_{{r},j}^{s}\right]_{\text{PPP-RTK}}\;.$$
(21.91)

Here \([\tilde{{N}}_{{r},j}^{s}]_{\text{PPP}}\) denotes the estimable PPP ambiguity of which its interpretation is given in Table 21.3 and \([\tilde{{N}}_{{r},j}^{s}]_{\text{PPP-RTK}}\) denotes the estimable integer PPP-RTK ambiguity as in (21.87). Thus, when the estimable between-satellite differenced satellite phase bias is subtracted from the estimable PPP ambiguities, the estimable integer PPP-RTK ambiguities are obtained.

5 Differenced Positioning Models

Differencing techniques are traditionally applied in GNSS processing to reduce the amount of unknowns and observations. However, they may also result in a loss of information, for example, in the multiepoch case incorporating temporal constraints on parameters which would otherwise be eliminated by means of differencing. This section briefly presents the differenced versions of the single-constellation positioning models presented earlier in this chapter. Although not discussed in detail, we mention that differencing causes (mathematical) correlation between the differenced observations and this should be appropriately taken into account through the variance–covariance matrix of the observations.

5.1 Single Differencing

Differencing the observations with respect to a chosen pivot satellite removes the receiver-dependent parameters from the models (Fig. 21.8a). This section presents the between-satellite differenced versions of the SPP, PPP, and PPP-RTK models.

Fig. 21.8a–d
figure 8figure 8

Various differencing strategies: (a) between-satellite single differencing; (b) between-receiver single differencing; (c) double differencing; (d) triple differencing

5.1.1 Between-Satellite Differenced SPP Model

Taking the differences of the code observables between satellite s and (pivot) satellite p, the single-differenced, single-frequency SPP model (21.50) becomes

$${E}\left(\mathbf{D}_{m}^{\top}\triangle\tilde{\boldsymbol{p}}_{{r},j}(t)\right)=\left[\mathbf{D}_{m}^{\top}\mathbf{G}_{r}(t)\right]\,\triangle\boldsymbol{r}_{r}(t)\;.$$
(21.92)

Here the \((m-1)\times m\) (transposed) differencing matrix is defined as

$$\begin{aligned}\mathbf{D}_{m}^{\top}=\begin{bmatrix}\mathbf{I}_{{p}-1}&-\boldsymbol{u}_{{p}-1}&\boldsymbol{0}\\ \boldsymbol{0}&-\boldsymbol{u}_{m-p}&\mathbf{I}_{m-p}\\ \end{bmatrix}.\end{aligned}$$
(21.93)

A property of this differencing matrix is that \(\mathbf{D}_{m}^{\top}\boldsymbol{u}_{m}=\boldsymbol{0}\). In the dual-frequency case in which atmospheric delays are estimated, see (21.53) for the undifferenced dual-frequency SPP model, its between-satellite differenced counterpart becomes

$$\begin{aligned}&{E}\left(\begin{bmatrix}\mathbf{D}_{m}^{\top}\triangle\tilde{\boldsymbol{p}}_{{r},1}(t)\\ \mathbf{D}_{m}^{\top}\triangle\tilde{\boldsymbol{p}}_{{r},2}(t)\end{bmatrix}\right)\\ &=\begin{bmatrix}\mathbf{D}_{m}^{\top}\mathbf{G}_{r}(t)&\mu_{1}\mathbf{I}_{{m}-1}\\ \mathbf{D}_{m}^{\top}\mathbf{G}_{r}(t)&\mu_{2}\mathbf{I}_{{m}-1}\end{bmatrix}\begin{bmatrix}\triangle\boldsymbol{r}_{r}(t)\\ \mathbf{D}_{m}^{\top}\tilde{\boldsymbol{I}}_{r}(t)\\ \end{bmatrix}\;.\end{aligned}$$
(21.94)

The between-satellite differenced ionospheric delay, which is denoted as vector \(\mathbf{D}_{m}^{\top}\tilde{\boldsymbol{I}}_{r}(t)\), is free of the receiver DCB term, which appears in the undifferenced case (21.54).

5.1.2 Between-Satellite Differenced Multiconstellation SPP Model

In the presence of observations of two constellations, the SPP model in its undifferenced form was given in (21.59), assuming one frequency per constellation. In this case, the between-satellite differencing can be carried out in different ways. A first way is to choose a pivot satellite for each constellation and difference the observations corresponding to its own constellation-specific pivot satellite. A second way is to difference the observations of both constellations to one common pivot satellite.

In the first case, using a pivot satellite for each constellation, the between-satellite differenced model reads simply

$${E}\left(\begin{bmatrix}\mathbf{D}_{{m}_{\mathrm{A}}}^{\top}\triangle{\boldsymbol{\tilde{p}}}_{{r},j}^{\mathrm{A}}(t)\\ \mathbf{D}_{{m}_{\mathrm{B}}}^{\top}\triangle{\boldsymbol{\tilde{p}}}_{{r},j}^{\mathrm{B}}(t)\end{bmatrix}\right)=\begin{bmatrix}\mathbf{D}_{{m}_{\mathrm{A}}}^{\top}\mathbf{G}_{r}^{\mathrm{A}}(t)\\ \mathbf{D}_{{m}_{\mathrm{B}}}^{\top}\mathbf{G}_{r}^{\mathrm{B}}(t)\triangle\boldsymbol{r}_{r}(t)\end{bmatrix}.$$
(21.95)

Here mA and mB denote the number of satellites for constellation A and B, respectively. Compared to its undifferenced counterpart in (21.59), the receiver clock common for both constellations, as well as the ISB parameter for the observations of constellation B, have been eliminated. In the second case, where the observations of both are differenced with respect to the pivot satellite selected from constellation A, the between-satellite differenced model reads

$$\begin{aligned}&E\left(\mathbf{D}_{{m}_{\mathrm{A}}+{m}_{\mathrm{B}}}^{\top}\begin{bmatrix}\triangle{\boldsymbol{\tilde{p}}}_{{r},j}^{\mathrm{A}}(t)\\ \triangle{\boldsymbol{\tilde{p}}}_{{r},j}^{\mathrm{B}}(t)\end{bmatrix}\right)\\ &=\left[\left\{\mathbf{D}_{{m}_{\mathrm{A}}+{m}_{\mathrm{B}}}^{\top}\begin{pmatrix}\mathbf{G}_{r}^{\mathrm{A}}(t)\\ \mathbf{G}_{r}^{\mathrm{B}}(t)\end{pmatrix}\right\}\begin{pmatrix}\boldsymbol{0}\\ \boldsymbol{u}_{{m}_{\mathrm{B}}}\end{pmatrix}\right]\begin{bmatrix}\triangle\boldsymbol{r}_{r}(t)\\ c\text{ISB}_{{r},j}^{\text{AB}}\end{bmatrix}.\end{aligned}$$
(21.96)

Here \(\mathbf{D}_{{m}_{\mathrm{A}}+{m}_{\mathrm{B}}}^{\top}\) denotes the \((m_{\mathrm{A}}+m_{\mathrm{B}}-1)\times(m_{\mathrm{A}}+m_{\mathrm{B}})\) difference matrix. Due to the differencing between constellations the ISB parameter is not eliminated. Both models (21.95) and (21.96) are however equivalent in terms of redundancy and positioning solution. Although model (21.96) has one parameter more than model (21.95), it has also one more observation. However, the situation changes if the ISB can be assumed known. In that case, the observations of constellation B can be corrected for it such that model (21.96) reduces to

$$\begin{aligned}&E\left(\mathbf{D}_{{m}_{\mathrm{A}}+{m}_{\mathrm{B}}}^{\top}\begin{bmatrix}\triangle{\boldsymbol{\tilde{p}}}_{{r},j}^{\mathrm{A}}(t)\\ \triangle{\boldsymbol{\tilde{p}}}_{{r},j}^{\mathrm{B}}(t)^{\prime}\end{bmatrix}\right)\\ &=\left[\mathbf{D}_{{m}_{\mathrm{A}}+{m}_{\mathrm{B}}}^{\top}\begin{pmatrix}\mathbf{G}_{r}^{\mathrm{A}}(t)\\ \mathbf{G}_{r}^{\mathrm{B}}(t)\end{pmatrix}\right]\triangle\boldsymbol{r}_{r}(t)\;.\end{aligned}$$
(21.97)

As a consequence, the above ISB-corrected model can be considered as a single-constellation model, similar to (21.92), but now with \(m_{\mathrm{A}}+m_{\mathrm{B}}\) satellites.

5.1.3 Between-Satellite Differenced PPP(-RTK) Model

In case of single-constellation, single-frequency (ionosphere-corrected) PPP(-RTK), between-satellite differencing results in the following observation (Table 21.3)

$$\begin{aligned}&E\left(\begin{bmatrix}\mathbf{D}_{m}^{\top}\triangle{\boldsymbol{\tilde{p}}}_{{r},j}(t)\\ \mathbf{D}_{m}^{\top}\triangle{\boldsymbol{\tilde{\varphi}}}_{{r},j}(t)\end{bmatrix}\right)\\ &=\begin{bmatrix}\mathbf{D}_{m}^{\top}\mathbf{G}_{r}(t)&\quad\boldsymbol{0}\\ \mathbf{D}_{m}^{\top}\mathbf{G}_{r}(t)&\lambda_{j}\mathbf{I}_{{m}-1}\end{bmatrix}\begin{bmatrix}{\boldsymbol{x}}_{r}(t)\\ \tilde{\boldsymbol{N}}_{{r},j}\end{bmatrix}\;.\end{aligned}$$
(21.98)

Here use is made of the property that \(\mathbf{D}_{m}^{\top}\mathbf{C}_{m}=\mathbf{I}_{{m}-1}\). We remark that the interpretation of the estimable ambiguity parameters does not change as a consequence of the between-satellite differencing, because in the undifferenced model they are already estimable as between-satellite differences, see Table 21.3 in case of PPP and (21.87) in case of PPP-RTK.

In the multifrequency case, with the ionospheric delays as unknown parameters, the between-satellite differencing applied to the PPP-RTK model in Table 21.5 results in the model presented in Table 21.6.

Table 21.6 Full-rank, between-satellite differenced, ionosphere-float, multifrequency, PPP-RTK model

5.2 Double and Triple Differencing

5.2.1 Double-Differenced Relative Positioning Model

For the Relative Positioning models, as discussed in Sect. 21.4 , between-satellite differencing can be applied as well, as to remove the receiver-dependent parameters from the models. Alternatively, since multiple receivers are involved that observe the same satellites, one may difference the observations of the same satellite between each receiver and a chosen pivot receiver. This is between-receiver differencing (Fig. 21.8b), which removes the satellite-dependent parameters from the models. This means that both receiver-dependent and satellite-dependent parameters can be eliminated by either taking the between-receiver difference of two between-satellite differences, or taking the between-satellite difference of two between-receiver (Fig. 21.8c). As a consequence one obtains the well-known double-differenced positioning model.

In case the ionosphere is float, the double-differenced model has the same structure as the between-satellite differenced PPP-RTK model in Table 21.6, but instead of single-differenced observables the observables are double differenced. In addition, the ionospheric parameters are estimated as double differences as well (the estimable ambiguities are already double differenced in the full-rank between-satellite differenced model). For a double-differenced model, it is implicitly assumed that the network or baseline is of regional size such that the geometry matrices in the design matrix are identical for all receivers, that is, \(\mathbf{G}_{1}(t)=\cdots=\mathbf{G}_{n}(t)\doteq\mathbf{G}(t)\), and relative position/ZTD parameters are estimated, that is, \(\tilde{\boldsymbol{x}}_{r}(t)=\boldsymbol{x}_{r}(t)-\boldsymbol{x}_{1}(t)\).

5.2.2 Triple-Differenced Relative Positioning Model

From the double-differenced model, one could go one step further, by taking differences of two double differences in time, so as to eliminate the ambiguity parameters from the relative positioning model (provided that no cycle slips have occurred between the two epochs). As a result one obtains the triple-differenced model (Fig. 21.8d). However, triple differencing removes the possibility of taking advantage of the integer nature of these double-differenced ambiguities, which is the key requirement for obtaining high-precision positions. Other drawbacks of triple differencing is that it is only possible to estimate the receiver’s position change in time and that it creates time correlation between the observations. Therefore it not recommended to base the relative positioning model on triple-differenced observations.

5.3 Redundancy of the Differenced Models

The redundancy (number of observations minus number of estimable parameters) of the differenced models is exactly identical to those of the undifferenced versions of the models, as the models are reduced with the same number of estimable parameters as observations. This, however, only applies to the single-epoch case. In the multiepoch case the redundancy of the undifferenced models start to outperform that of the differenced models if temporal constraints on the parameters are included [21.69].

6 The Positioning Concepts Related

This chapter provided an overview of the models underlying the various positioning concepts. We end this chapter with a summary of how these positioning concepts are related to each other. Figure 21.9 presents in a schematic way the various positioning concepts. They basically differ in the way whether they are dominated by either code data or phase data, and at the scale the correction data are provided by the reference stations.

Fig. 21.9
figure 9figure 9

GNSS-based positioning concepts: SPP versus PPP that are both based on products provided by global reference network data (top); network DGNSS versus network RTK that are both based on products provided by regional reference network data (middle); single-baseline DGNSS versus single-baseline RTK that are both based on local reference station data (bottom). PPP-RTK can be regarded as a method that is conceptually equivalent to PPP, but provides the positioning accuracy of network/wide-area RTK

6.1 Global Positioning: SPP/PPP

At a global scale, absolute positioning can be realized by means of SPP or PPP. In case of SPP, based on code observations, global reference network data are employed in the form of the broadcast navigation data. In other words, the orbits, clocks, and atmospheric data that are broadcast by the GNSS satellites are products that are determined by the GNSS ground control network. PPP employs phase observations in addition to code, as well as precise corrections for orbit, clocks, and ionosphere, which are also products of a global reference network (e. g., the IGS network).

6.2 Regional Positioning: Network DGNSS/RTK

At a more regional scale, covering an area with a radius of typically 500 km or less, we have the code-dominated network DGNSS technique, versus the phase-dominated network RTK technique, where positioning is done relative to a network of reference stations [21.75]. Correction data are determined by the network and transmitted to users operating within the coverage area of the network. Network DGNSS is also known as wide-area DGNSS  [21.76]. In case of network RTK the network processing is based on ambiguity resolution (Chap. 23) as to provide the most precise corrections to users, who employ ambiguity resolution themselves as to obtain positions with centimeter level accuracy. In practice several network-RTK implementations exist (Chap. 26). Crucial to the performance of both network DGNSS and network RTK are the (quality of the) corrections for the differential ionospheric delays, which are determined by the network over the coverage area.

6.3 Local Positioning: Single-Baseline DGNSS/RTK

At a local scale, the reference data are provided by a single reference station, located in the vicinity of the user receiver, such that the differential ionospheric delays can be neglected. This leads to code-dominated single-baseline DGNSS, and phase-dominated single-baseline RTK, the latter method relying on phase integer ambiguity resolution. RTK positioning is also referred to as carrier-phase based DGNSS for which the differential ionospheric delays may be neglected for baseline lengths up to about 10 km (under average ionospheric conditions). The maximum baseline distance of single-baseline DGNSS, which is at most about 100 km, is longer than for single-baseline RTK, since the noisier code data allow more residual differential ionospheric delays than the precise phase data in case of RTK. Extending the operational distance of single-baseline RTK is possible, up to hundreds of kilometers [21.55], however then the ionospheric delays need to be modeled as unknown parameters, leading to longer convergence times.

6.4 Global/Regional Positioning: PPP-RTK

PPP-RTK can be considered as a mixture of PPP and RTK: it is conceptually PPP, but based on resolving the integer phase ambiguities as to as to obtain the positioning accuracy of (network) RTK. PPP-RTK can either be based on global or regional network products, where satellite phase bias corrections are crucial for integer ambiguity resolution and therefore centimeter level accuracy. In the absence of these satellite phase biases, PPP-RTK reduces to standard PPP. In a triple- or higher frequency case also satellite code bias corrections are required. Essential to fast integer ambiguity resolution are precise ionospheric corrections. In contrast to network RTK, in case of PPP-RTK the correction information is provided to the user in the parameter or state space, whereas in case of network RTK this is in the observation space [21.57]. A drawback of transmitting the corrections in the observation space is that a higher update rate is required than for corrections in the parameter space, as some parameters are (almost) time constant.

6.5 Accuracy of the Positioning Concepts

The attainable positioning accuracy using the concepts in the left column of Fig. 21.9 is driven by the precision of the pseudorange data, while the accuracy of the concepts in the right column is driven by the carrier-phase precision. Table 21.7 summarizes typical values of the accuracy, which can be obtained using the discussed positioning concepts. These numbers hold after a certain (convergence) time that is needed for the position to attain a certain accuracy. The positioning accuracy of single-frequency (GPS) PPP incorporating global ionospheric corrections is typically at decimeter level within a few minutes [21.77]. The positioning accuracy of dual-frequency (GPS) PPP can reach centimeter level however only after a convergence time that may last for more than 30 min [21.52]. Decimeter-level accuracy of dual-frequency (GPS) PPP after a convergence of 40 min was demonstrated for a kinematic receiver in [21.78]. A similar level of accuracy of dual-frequency PPP based on convergence times of 10–30 min was demonstrated by [21.79]. The positioning accuracy of single-baseline DGNSS (DGPS) is 1–5 m and can be obtained instantaneously. With network or wide-area DGPS the accuracy lies in the range 0.5–2 m [21.80]. In case of dual-frequency integer ambiguity resolution enabled PPP centimeter-level accuracy is feasible after about 30 min in case of a static receiver, and about 90 min in case of a kinematic receiver [21.81]. The convergence time of tens of minutes in case of dual-frequency PPP and PPP-RTK is due to the presence of the ambiguities, next to the ionospheric delays.

Table 21.7 Typical values for GPS positioning accuracy, convergence time, and coverage area for different positioning concepts. Note: SF = single-frequency; DF = dual-frequency