For GNSS radio channel estimation, the multipath signal with a delay within one and a half code chips delay relative to the LOS is more interesting because the multipath signal falling in this delay affects the pseudorange measurement accuracy most significantly. The MEDLL method (Van Nee 1992) with the maximum-likelihood principle was proposed to estimate the delay, amplitude, and phase bias. However, the MEDLL method assumes a stable channel condition and needs three-dimensional exhaustive search, which prohibits its extensive application. The least-squares-based iterative multipath super-resolution algorithm (Nam and Kong 2013) employs an iterative update formula to estimate the delay and complex amplitude simultaneously to reduce the computational complexity. However, the update step size must be selected carefully for convergence. The fast-iterative maximum-likelihood algorithm (Sahmoudi and Amin 2008) employs another iterative closed-form solution to estimate multipath delays. The Coupled Amplitude Delay Lock Loop (CADLL) algorithm (Chen et al. 2011, 2013) utilizes several units of the Delay Lock Loop (DLL) and Amplitude Lock Loop (ALL) to estimate and lock to the multipath delay and complex amplitudes. The coupled DLL and ALL method improves the estimation resolution and tracks multipath parameters sequentially.

However, it is found that there has not been a readily suitable method for GNSS multipath parameter estimation in urban dynamic environments. Thus, a systematic method for estimating multipath delay, amplitude, Doppler fading frequency, lifetime, and the NLOS signal is introduced in this report.

The multipath channel for the GNSS land vehicle application in an urban environment is time variant, and it can be modeled as a superposition of discrete paths, given by (Rappaport 2009).

$$\begin{aligned} x\left( t \right) &= \mathop \sum \limits_{l = 0}^{L - 1} \alpha_{l} \left( t \right)c\left( {t - \tau_{l} \left( t \right)} \right)\cos \left( {2\uppi ft + 2\uppi v_{l} \left( t \right)t} \right) \\&\quad+ n\left( t \right),\quad 0 \le t \le T_{\delta } , \end{aligned}$$

(1)

where \(\alpha_{l} \left( t \right)\) and \(\tau_{l} \left( t \right)\) denote the complex weight and the propagation relative delay of the *l*-th path, respectively, *l *= 0 denotes the LOS signal, \(c\left( t \right)\) is the spreading code of the GNSS signal, \(f\) is the carrier frequency of the LOS signal, the Doppler fading frequency \(v_{l} \left( t \right)\) is the carrier frequency difference of the *l*-th multipath relative to LOS in which it is caused by the relative movement between the satellite, reflector, and receiver, \(T_{\delta }\) is the time interval of interest, *L* is the number of paths, and \(n\left( t \right)\) is the white Gaussian noise with power spectra equal to \(N_{0} /2\). Without loss of generality, the delays {\(\tau_{0}\), \(\ldots\), \(\tau_{L - 1}\)} are assumed to be distinct, where \(\tau_{0}\) < \(\tau_{1}\) < \(\cdots\) < \(\tau_{L - 1}\).

The multipath lifetime \(\varepsilon \left( t \right)\) is used to describe the existing time of a multipath ray in a real environment. Therefore, the vector \(\theta_{l} \triangleq \left[ {\tau_{l} , \alpha_{l} ,v_{l} ,\varepsilon_{l} } \right]\) is defined to characterize a multipath signal uniquely. Then, \(\theta \triangleq \mathop {\bigcup }\limits_{l = 0}^{L - 1} \theta_{l}\) denotes the entire multipath parameter space, which is of interest for estimation.

In a GNSS receiver, \(x\left( t \right)\) in (1) is first down-converted to the IF band, following which it is sampled and correlated with the local replica signal. Let the correlation interval be defined by \(T = NT_{s}\), where \(T_{s}\) is the sampling period and \(N\) is the total sample number in the correlation interval. The resultant correlation value has the form

$$z\left( k \right) = \mathop \sum \limits_{l = 0}^{L - 1} \widetilde{\alpha }_{l,k} R\left( {\delta \tau_{k} - \widetilde{\tau }_{l,k} } \right)\exp \left( {\delta \theta_{k} + \widetilde{\varphi }_{l,k} } \right) + n_{k} ,$$

(2)

where \(R\left( {\delta \tau_{k} - \widetilde{\tau }_{l,k} } \right)\) is the normalized autocorrelation function of the spreading code sequence, \(n_{k}\) is the complex white Gaussian noise with zero mean and variance of \(N_{0} /\left( {2T} \right)\), \(\delta \tau_{k}\) and \(\delta \theta_{k}\) are, respectively, the time and phase synchronization error between the LOS signal and the local replica signal, and \(\widetilde{\tau }_{l,k}\) and \(\widetilde{\varphi }_{l,k}\) are, respectively, the average relative delay and carrier phase bias of the *l*-th multipath path with respect to the LOS in the *k*-th interval for which \(\widetilde{\tau }_{l,0}\) = 0 and \(\widetilde{\varphi }_{l,0}\) = 0.

When \(T\) is small, it is reasonable to assume that the channel is invariant in the small interval. Thus, one can have \(\tau_{l,k} \approx \widetilde{\tau }_{l,k}\), \(v_{l,k} \approx \widetilde{v}_{l,k}\), and \(\alpha_{l,k} \approx \widetilde{\alpha }_{l,k}\). To simplify the notation, the subscript *k* is omitted in the following expressions; however, it should be noted that the estimated parameters from the correlation value \(z\) are considered as in the current interval. To increase the estimation observability, a bank of correlation values with equal spacing intervals in the delay dimension are computed in the receiver, given by

$$z\left( k \right) = \left[ {\begin{array}{*{20}c} {z\left( {k,\delta \tau - \frac{M - 1}{2}\varDelta } \right)} & \ldots & {z\left( {k, \delta \tau + \frac{M - 1}{2}\varDelta} \right)} \\ \end{array} } \right]^{\text{T}} ,$$

(3)

where \(\varvec{z}\left( k \right)\) is the correlation bank vector and

$$\begin{aligned} z\left( {k,\delta \tau + m\varDelta } \right) &= \mathop \sum \limits_{l = 0}^{L - 1} \widetilde{\alpha }_{l,k} R\left( {\delta \tau_{k} + m\varDelta - \widetilde{\tau }_{l,k} } \right)\\&\quad\times\exp \left( {\delta \theta_{k} + \widetilde{\varphi }_{l,k} } \right) + n_{k} \left( {m\varDelta } \right). \end{aligned}$$

(4)

In (4), \(\varDelta\) is the spacing interval between two adjacent correlators, and *M* is the total number of correlators in the bank.

In this study, on the basis of the CADLL architecture (Chen et al. 2011, 2013), an algorithm for functioning in a dynamic channel condition was developed to estimate the multipath delay, complex amplitude, and Doppler fading frequency from the raw IF GNSS signal. First, the correlation value vector \(\varvec{z}\left( k \right)\) in (3) is decomposed into *L* separate single path correlation value vectors, i.e.,

$$\begin{aligned} \varvec{z}_{l} \left( {k|\hat{\varvec{\theta }}\left( {k - 1} \right)} \right) &= \varvec{z}\left( k \right) - \mathop \sum \limits_{{\begin{array}{*{20}c} {p = 0} \\ {p \ne l} \\ \end{array} }}^{L - 1} \hat{\varvec{z}}_{p} \left( {k|\hat{\varvec{\theta }}_{p} \left( {k - 1} \right)} \right),\\ &\quad l \subset \left( {0, \cdots ,L - 1} \right), \end{aligned}$$

(5)

where \(\hat{\varvec{\theta }}_{p} \left( {k - 1} \right)\) is the estimated parameter vector for the *p*-th multipath from the previous \(k - 1\) interval and \(\hat{\varvec{z}}_{p} \left( {k|\hat{\varvec{\theta }}_{p} \left( {k - 1} \right)} \right)\) is the predicted correlation bank vector for the *p*-th multipath according to the signal model in (2) with the aid of \(\hat{\varvec{\theta }}_{p} \left( {k - 1} \right)\):

$$\hat{z}_{p} \left( {k|\hat{\theta }_{p} \left( {k - 1} \right)} \right) = \widetilde{\alpha }_{p,k - 1} \exp \left( {\widetilde{\varphi }_{p,k - 1} } \right)\left[ {\begin{array}{*{20}c} {R\left( { - \frac{M - 1}{2}\varDelta - \widetilde{\tau }_{p,k - 1} } \right)} & \cdots & {R\left( { + \frac{M - 1}{2}\varDelta - \widetilde{\tau }_{p,k - 1} } \right)} \\ \end{array} } \right].$$

(6)

In (6), \(\widetilde{\alpha }_{p,k - 1}\), \(\widetilde{\varphi }_{p,k - 1}\), and \(\widetilde{\tau }_{p,k - 1}\) are the estimated multipath amplitude, carrier phase bias, and delay of the *p*-th multipath from the \(k - 1\) interval. The initial multipath parameters can be obtained via a coarse grid search. For each decomposed single path, a narrow-spacing DLL together with two ALLs, called a “unit,” are used to estimate and track the delay, the in-phase amplitude, and the quadrature-phase amplitude. The spacing of the DLL is set as 0.1 chip to guarantee a good tracking accuracy for the delay.

Because the delay and amplitude of a multipath signal usually have fast fading variations in a dynamic channel, the original CADLL architecture was modified by incorporating a Kalman filter to track the variations. The state vector of the Kalman filter is defined as \(\varvec{s} = \left[ {\tau ,\dot{\tau },\alpha^{I} ,\dot{\alpha }^{I} ,\alpha^{Q} ,\dot{\alpha }^{Q} ,\varphi ,v} \right]^{\text{T}}\), where \(\dot{\tau }\) is the derivative of the delay \(\tau\), \(\alpha^{I}\) and \(\alpha^{Q}\) denote the in-phase and quadrature phase amplitudes, respectively, and \(\dot{\alpha }^{I}\) and \(\dot{\alpha }^{Q}\) denote the derivatives of \(\alpha^{I}\) and \(\alpha^{Q}\), respectively. The state transition can be derived as

$$\underbrace {{\left[ {\begin{array}{*{20}c} {\tau_{k} } \\ {\dot{\tau }_{k} } \\ {\alpha^{I}_{k} } \\ {\dot{\alpha }^{I}_{k} } \\ {\alpha^{Q}_{k} } \\ {\dot{\alpha }^{Q}_{k} } \\ {\varphi_{k} } \\ {v_{k} } \\ \end{array} } \right]}}_{{\varvec{s}_{k} }} = \underbrace {{\left[ {\begin{array}{*{20}c} {\begin{array}{*{20}c} {\varvec{A}_{2 \times 2} } & {\varvec{0}_{2 \times 2} } \\ {\varvec{0}_{2 \times 2} } & {\varvec{A}_{2 \times 2} } \\ \end{array} } & {\begin{array}{*{20}c} {\varvec{0}_{2 \times 2} } & {\varvec{0}_{2 \times 2} } \\ {\varvec{0}_{2 \times 2} } & {\varvec{0}_{2 \times 2} } \\ \end{array} } \\ {\begin{array}{*{20}c} {\varvec{0}_{2 \times 2} } & {\varvec{0}_{2 \times 2} } \\ {\varvec{0}_{2 \times 2} } & {\varvec{0}_{2 \times 2} } \\ \end{array} } & {\begin{array}{*{20}c} {\varvec{A}_{2 \times 2} } & {\varvec{0}_{2 \times 2} } \\ {\varvec{0}_{2 \times 2} } & {\varvec{A}_{2 \times 2} } \\ \end{array} } \\ \end{array} } \right]}}_{\varvec{\varPhi}}\underbrace {{\left[ {\begin{array}{*{20}c} {\tau_{k - 1} } \\ {\dot{\tau }_{k - 1} } \\ {\alpha^{I}_{k - 1} } \\ {\dot{\alpha }^{I}_{k - 1} } \\ {\alpha^{Q}_{k - 1} } \\ {\dot{\alpha }^{Q}_{k - 1} } \\ {\varphi_{k - 1} } \\ {v_{k - 1} } \\ \end{array} } \right]}}_{{\varvec{s}_{k - 1} }} + \varvec{w}_{{8{\text{x}}1}}$$

(7)

where \(\varvec{\varPhi}\) is the transition matrix, \(\varvec{A}_{{2{\text{x}}2}} = \left[ {\begin{array}{*{20}c} 1 & {T_{k} } \\ 0 & 1 \\ \end{array} } \right]\), and \(\varvec{w}_{{8{\text{x}}1}}\) is the state transition noise.

The measurement equation of the Kalman filter is

$$\underbrace {{\left[ {\begin{array}{*{20}c} {\widetilde{\tau }_{k} } \\ {\widetilde{\alpha }_{k}^{I|P} } \\ {\widetilde{\alpha }_{k}^{Q|P} } \\ {\widetilde{\varphi }_{k} } \\ \end{array} } \right]}}_{{\varvec{y}_{k} }} = \underbrace {{\left[ {\begin{array}{*{20}c} {\begin{array}{*{20}c} {\varvec{B}_{1 \times 2} } & {\varvec{0}_{1 \times 2} } \\ {\varvec{0}_{1 \times 2} } & {\varvec{B}_{1 \times 2} } \\ \end{array} } & {\begin{array}{*{20}c} {\varvec{0}_{1 \times 2} } & {\varvec{0}_{1 \times 2} } \\ {\varvec{0}_{1 \times 2} } & {\varvec{0}_{1 \times 2} } \\ \end{array} } \\ {\begin{array}{*{20}c} {\varvec{0}_{1 \times 2} } & {\varvec{0}_{1 \times 2} } \\ {\varvec{0}_{1 \times 2} } & {\varvec{0}_{1 \times 2} } \\ \end{array} } & {\begin{array}{*{20}c} {\varvec{B}_{1 \times 2} } & {\varvec{0}_{1 \times 2} } \\ {\varvec{0}_{1 \times 2} } & {\varvec{B}_{1 \times 2} } \\ \end{array} } \\ \end{array} } \right]}}_{\varvec{H}}\underbrace {{\left[ {\begin{array}{*{20}c} {\tau_{k} } \\ {\dot{\tau }_{k} } \\ {\alpha^{I}_{k} } \\ {\dot{\alpha }^{I}_{k} } \\ {\alpha^{Q}_{k} } \\ {\dot{\alpha }^{Q}_{k} } \\ {\varphi_{k} } \\ {v_{k} } \\ \end{array} } \right]}}_{{\varvec{s}_{k} }} + \varvec{r}_{{4{\text{x}}1}}$$

(8)

where \(\varvec{y}_{k}\) is the measurement vector, in which \(\widetilde{\tau }_{k}\) is the multipath delay being tracked by the unit’s DLL for the *l*-th multipath ray, \(\widetilde{\alpha }_{k}^{I|P}\) and \(\widetilde{\alpha }_{k}^{Q|P}\) are the in-phase and quadrature phase prompt correlator values of the unit for the *l*-th multipath, and \(\widetilde{\varphi }_{k}\) is the multipath phase bias measurement that is given as \({ \arg }\left( {\widetilde{\alpha }_{k}^{I|P} + j\widetilde{\alpha }_{k}^{Q|P} } \right)\). Here, \(\varvec{H}\) is the observation matrix in which \(\varvec{B}_{{1{\text{x}}2}} = \left[ {\begin{array}{*{20}c} 1 & 0 \\ \end{array} } \right]\), and \(\varvec{r}_{{4{\text{x}}1}}\) is the measurement noise. It is necessary to note that \(\varvec{w}_{{8{\text{x}}1}}\) and \(\varvec{r}_{{4{\text{x}}1}}\) are affected by the vehicle motion, signal carrier-to-noise ratio, and environment type. They can be carefully tuned and stored in a lookup table for future use. As soon as a multipath signal is detected, a unit containing the Kalman filter shown in (7) and (8) is allocated for tracking it. The *C*/*N*_{0} of this multipath signal, estimated by the narrow wide band correlation method (Parkinson and Spilker 1996), is used as the metric for detecting a loss of lock. A loss of lock occurs for this multipath when its estimated *C*/*N*_{0} is lower than a threshold. In this case, this multipath is regarded as being vanished. Accordingly, the emerging and vanishing time of the multipath is recorded by the unit, and its lifetime \(\varepsilon\) can be readily obtained.

Next, the model order determination can be applied to determine whether the input signal is over-fitted, i.e., whether the supposed number of multipath signals is greater than the actual number. Classical information theory methods for model selection can be used to estimate *L* (Wax and Kailath 1985; Was and Ziskind 1989). According to the method of Wax and Kailath, the optimal model order \(\hat{L}\) is the one that achieves the Minimum Description Length (MDL) given the observed data \(\varvec{z}\left( k \right)\):

$$\hat{L} = \mathop {\text{argmin}}\limits_{{L \in \left\{ {0, \cdots ,M - 1} \right\}}} {\text{MDL}}\left( L \right),$$

(9)

where

$${\text{MDL}}\left( L \right) = - \log P\left( {\varvec{Z}|\hat{\varvec{\theta }}^{\left( L \right)} } \right) + \frac{1}{2}\chi \log N.$$

(10)

In (10), \(P\left( {\varvec{Z}|\hat{\varvec{\theta }}^{\left( L \right)} } \right)\) is the probabilistic model of the observed dataset \(\varvec{Z} = \left\{ {\varvec{z}\left( 1 \right), \cdots ,\varvec{z}\left( N \right)} \right\}\), where *N* is the number of epochs that are lumped to make the set, \(\hat{\varvec{\theta }}^{\left( L \right)}\) is the optimal parameter vector estimate under the assumption of *L*, and \(\chi\) is the number of free parameters in the vector \(\hat{\varvec{\theta }}^{\left( L \right)}\). To compute the MDL value, sample-covariance estimation and eigenvector decomposition are applied. More-detailed information about the MDL method can be found in previous research (Wax and Kailath 1985; Wax and Ziskind 1989). Then, all the valid parameters for each path along with the optimal model order \(\hat{L}\) are grouped together as a new set of multipath estimates and fed to the next epoch.

In this study, a correlator bank with *M *= 127 is used for each satellite channel. The correlation interval \(T\) was set to 10 ms, and the minimal detected multipath power is −150 dBm, which corresponds to approximately maximal 20 dB power attenuation relative to the LOS signal. This minimal multipath power detection level is carefully designed due to the cross-correlation mitigation level between different B1I PRN codes. Multipath signals lower than this power level cannot be guaranteed to enable reliable detection and are therefore treated as noise. The maximally detected multipath number for each satellite is 4, and the maximal delay estimation window is 600 m. The estimation resolution for two closely spaced multipath signals in delay is 0.1 chip, which corresponds to approximately 15 m for the B1I signal.

In the algorithm mentioned above, it is supposed by default that the first arrival path is the LOS signal and all the delays and carrier phase bias are estimated relative to the first arrival path. In the NLOS case, it encounters a strong multipath while the LOS signal is completely blocked by some obstacle. Thus, all the estimated parameters are erroneous because their delays and carrier phases are relative to the multipath signal, which is being tracked by the receiver. Therefore, finding a way to detect and remove the NLOS situation is needed.

During the data collection, a precise RTK-GNSS/IMU receiver, e.g., the NovAtel FANS system, was used to work simultaneously and share the same antenna with the signal recording system. Precise trajectory position, vehicle velocity, and satellite ephemeris can be logged, so that a precise predicted pseudorange for each satellite at each epoch is available. Similarly, the pseudorange for the first arrival path in (2) can be measured as well. Regarding these two pseudoranges, if their difference is larger than a threshold, a NLOS case can arise, that is

$$\left| {\hat{\rho}_{\text{meas}} \left(k \right) - \rho_{\text{pred}} \left(k \right)} \right| > \epsilon_{\rho},$$

(11)

where \(\hat{\rho }_{\text{meas}} \left( k \right)\) denotes the pseudorange measurement corrected by the ionosphere delay, troposphere delay, satellite clock error, and local clock error for the first arrival path in the current epoch, \(\rho_{\text{pred}} \left( k \right)\) stands for the predicted pseudorange computed with precise receiver position and satellite ephemeris, and the bound \(\epsilon_{\rho}\) is empirically set as 15 m according to the extensive recorded data. According to the NLOS detection method given in (11), the local clock error must be carefully estimated because it directly influences the accuracy of the measured pseudorange \(\hat{\rho }_{\text{meas}} \left( k \right)\). For this, an open-sky environment is used at the beginning of the data collection and continued for a while to let the receiver correctly compute its initial position and the local clock error. Following this, the van is driven to a more densely urbanized environment to collect the multipath data. In the dense urban environment, the uncontaminated LOS signals are selected to maintain local clock error estimation. When no clean LOS signals are available in some particularly poor environments, the local clock error could be treated as constant until the van is driven out of the area. When new, clean LOS signals are observed, the receiver local clock error estimation is continued. It has been proved by experiments that this method can work well in the data collection campaign.

When a NLOS case is detected, the signal tracked by the receiver is just the NLOS signal. Thus, the pseudorange error computed in (11), the amplitudes and Doppler frequency that are estimated in the tracking loop, and the time period during which the NLOS case exists constitute the parameter vector \(\theta_{l}\) of the NLOS signal, which are the delay, Doppler fading frequency, amplitude, and lifetime. Figure 1 shows the diagram of the multipath parameter estimation method.

It needs to be pointed out that the estimation method proposed is a universal multipath parameter estimation algorithm for dynamic channel conditions. It can be readily extended to other BDS satellite signals, such as B1C, B2a, and B3I, and other GNSS satellite signals.