Keywords

1 Introduction

With the development of smartphones, many professional sensors such as GNSS (Global Navigation Satellite System) and IMU (Inertial Measurement Unit) are integrated into them. GNSS and IMU are widely used in the field of high precision positioning and navigation, which makes it possible to achieve accurate localization of the smartphone users. GNSS chipset calculates the ECEF (Earth-centered, Earth-fixed) coordinates of the user by receiving satellite signals. Nowadays, the most advanced smartphones are able to support multi-frequency GNSS, for example, Xiaomi MI8 is the first dual-frequency smartphone which supports GPS L1/L5, Huawei Mate 40 can even provide Beidou (B1I, B1C, B2a, B2b) and Galileo (E1, E5a, E5b) multi-frequency observations.

GNSS chipset outputs both pseudorange and carrier phase, but the quality of carrier phase observation is too poor (such as cycle slip, intermittent tracking, etc.) to be used for positioning [1]. At present, smartphone still mainly uses pseudorange for GNSS positioning. According to literature [2, 3], limited by low-cost RF front-end, linearly polarized antenna and complex urban environment, multipath effect seriously contaminates the smartphone’s pseudorange measurements. Therefore, in order to improve the positioning accuracy, it is necessary to study multipath mitigation algorithm. Traditional multipath mitigation methods [4,5,6,7,8,9,10] include the use of choke ring antenna, longer pseudo-random code observation, multi-channel DLL in signal processing, statistical modelling of multipath electrical parameters, 3D-GNSS urban environment modelling, etc. These methods require high hardware resources and power consumption, so they are difficult to be applied on smartphone.

Not only GNSS, but today’s most smartphones also integrate 9-axis MEMS (Micro-Electro-Mechanical System) sensors, they are accelerometers, gyroscopes and magnetometer, the first two are components of IMU. Compared with the industrial - or tactical-grade IMU, the ultra-low cost MEMS IMU in smartphones has a huge performance gap. For example, the bias stability of smartphone’s MEMS gyroscopes is generally greater than 30°/h. Therefore, it is almost impossible to implement SINS (Strapdown Inertial Navigation System) with these sensors, because the integration error of SINS is easy to become intolerable in a very short time. Considering the walking characteristics of pedestrians, PDR (Pedestrian Dead Reckoning) was proposed [11]. PDR analyze the raw MEMS sensor’s data and extract pedestrian behavior patterns, such as walking and stopping, so PDR avoids too much integration operations and reduces the influence of noise and integration error. However, the essence of PDR is still dead reckoning, the final accumulated error is inevitable.

In recent years, the research on the integration of PDR and GNSS has also been widely concerned [12,13,14]. Hsu et al. [6] proposed a framework of the fusion algorithm based on PDR and 3D-GNSS in urban environment. Their algorithm use a KF (Kalman Filter) to process the stride length and headings of PDR and the position and accuracy of 3D-GNSS to obtain the fusion results. The observations of the KF come from 3D-GNSS, while the PDR outputs are used to be the control inputs of KF. In their fusion framework, the real-time outputs of PDR is used to update the state transition equation, but the accumulated error of PDR is not eliminated well before fusion, so the performance of the whole fusion system will be degraded eventually. Lan et al. [12] uses the EKF (Extended Kalman Filter) to fuse PDR and GNSS, their method uses the headings derived by GNSS to assist the heading estimation of the MEMS gyroscope, which improves the overall accuracy of the heading estimation, but the severe noise in the GNSS heading estimation has not been solved well, so the initial stage of the pedestrian trajectory relies heavily on the GNSS headings.

In this paper, we derive the relationship between CN0R and pseudorange multipath error, then we propose a novel multipath mitigation method based on spectrum decomposition of CN0R, this method is able to be implemented on smartphone. On this basis, we also propose a fusion framework based on PDR and pseudorange double-difference GNSS, most of the errors in GNSS observations can be eliminated by double-difference, what is far more important is that our fusion framework combines the advantages of PDR that is not susceptible to external interference and GNSS that has no cumulative error.

The rest of this paper is organized as follows. Section 2 introduces the preliminaries and backgrounds of multipath and PDR. Section 3 gives the detailed description of our proposed multipath mitigation algorithm and PDR/GNSS fusion framework. Section 4 shows the experimental environment, setup and results. Finally, Sect. 5 concludes this article and summarizes the future works.

2 Preliminaries and Backgrounds

2.1 Influence of Multipath Effect on GNSS Measurements

Multipath effect is a propagation phenomenon that GNSS antenna receives not only the LOS (Line-of-Sight) signal from the satellite, but also the NLOS (non Line-of-Sight) signals from the satellite reflected by different objects. Multipath effect has different impacts on different GNSS measurements, such as pseudorange, carrier phase, CN0R and Doppler. Pseudorange multipath error is particularly important for the final positioning accuracy. Tranquilla and Carr [15] divide pseudorange multipath errors into three categories: (1) Diffuse multipath, which is generated by reflections on a rough surface, the signal power is scattered in various directions. (2) Specular multipath, which is generated by reflections on smooth surfaces, the signal power is reflected in one direction, such as a mirror. (3) Very low frequency multipath, which is generated by reflections from a plane far away, such as the sea.

Fig. 1.
figure 1

Multipath effect and corresponding IQ diagram in PLL

Figure 1a shows the multipath effect and Fig. 1b shows the IQ diagram of multipath signal in PLL. Due to the PLL of carrier tracking and the DLL of code tracking are not coupled, the pseudorange error caused by multipath effect can be estimated by the ideal DLL discriminator equation [16, 17]:

$$ \sum\nolimits_{i = 1}^{n} {\alpha_{i} \left[ {R\left( {\tau_{M} + T_{E/L} - \delta_{i} } \right) - R\left( {\tau_{M} - T_{E/L} - \delta_{i} } \right)} \right]cos\psi_{i} = R\left( {\tau_{M} - T_{E/L} } \right) - R\left( {\tau_{M} + T_{E/L} } \right)} $$
(1)

where \(T_{E/L}\) is the ½ time space of the discriminator and \(R\) is the ideal triangular autocorrelation function, \(\delta\) is the path distance delay of the reflected signal to the direct signal, \(\alpha\) is the ratio of the amplitude of the reflected signal to the direct, \(\psi\) is the phase delay of the reflected signal to the direct, \(n\) denotes the number of all paths. So the pseudorange multipath error \(\tau_{M}\) can be calculated as follows:

$$ \tau_{M} = \frac{{\mathop \sum \nolimits_{i = 1}^{n} \alpha_{i} \delta_{i} cos\psi_{i} }}{{1 + \mathop \sum \nolimits_{i = 1}^{n} \alpha_{i} cos\psi_{i} }} $$
(2)

In addition, the CN0R in multipath environment can be expressed as:

$$ CN_{0} R = \frac{{2BW_{n} }}{{f_{s} \tau }}A_{d} \left[ {1 + \sum\nolimits_{i = 1}^{n} {\alpha_{i}^{2} + \sum\nolimits_{i = 1}^{n} {\alpha_{i} cos\psi_{i} } } } \right] $$
(3)

where \(BW_{n}\) is the noise bandwidth of the receiver, \(f_{s}\) is the A/D sampling frequency, \(\tau\) is the integral period and \(A_{d}\) is the amplitude of the direct signal.

2.2 PDR Principles

PDR mainly includes three parts: step detection, stride length estimation and heading estimation. When a step is detected, PDR updates the heading \(\theta\) and stride length estimation \(SL\) of \(k^{th}\) step. If we know the initial position, the pedestrian 2D position \( \left\{ {u,v} \right\}\) can be obtained as below.

$$ \left\{ {\begin{array}{*{20}c} {u_{k + 1} = u_{k} + SL_{k} \cdot sin\;\theta_{k} } \\ {v_{k + 1} = v_{k} + SL_{k} \cdot cos\;\theta_{k} } \\ \end{array} } \right. $$
(4)

In this paper, we use the dynamic threshold zero-crossing detection proposed in [14] to control the transition between walking and non-walking states, and we use a binary linear regression model with the stride frequency \(f_{ST}\) and the acceleration variance \(\sigma_{a}^{2}\) as parameters to estimate pedestrian stride length. The stride length model is expressed as follows.

$$ SL = \beta f_{ST} + \gamma \sigma_{a}^{2} + \eta $$
(5)

where \(\beta\) and \(\gamma\) are weighting factors, \(\eta\) is a constant. This three parameters need to be determined by off-line training.

Heading estimation plays a key role in PDR because the accumulated heading estimation errors eventually lead to a huge difference between estimated trajectory and real trajectory. In this paper, we adopt both gyroscope and magnetometer to estimate the heading in order to maximize the benefits of different sensors.

3 Pseudorange Multipath Mitigation and Fusion Framework

3.1 Estimation of Multipath Parameters

Although Eq. 2 gives the expression of pseudorange multipath error, it is still difficult to estimate \(\alpha_{i}\), \(\delta_{i}\) and \(\psi_{i}\). In this subsection, we describe the proposed method to estimate \(\alpha_{i}\) and \(\psi_{i}\) based on the spectral decomposition of CN0R.

The premise of this method is that the changes of \(A_{d}\), \(\delta_{i}\) and \(\alpha_{i}\) is tiny enough to be regarded as constants in a short time window. This assumption is intuitively reasonable, because the elevation change rate of satellites is small during this period. However, the change rate of \(\psi_{i}\) cannot be ignored, and the time-varying expression of \(\psi_{i}\) can be modeled as follows:

$$ \psi_{i} \left( t \right) = \omega_{i} t + \mu_{i} $$
(6)

where \(\omega_{i}\) is the angular frequency and \(\mu_{i}\) is the initial phase. Now, we rearrange Eq. 3 to obtain the following equation:

$$ CN_{0} R\left( t \right) = K\left[ {1 + \sum\nolimits_{i = 1}^{n} {\alpha_{i}^{2} + \sum\nolimits_{i = 1}^{n} {\alpha_{i} cos\left( {\omega_{i} t + \mu_{i} } \right)} } } \right] $$
(7)

In the above equation, we use \(K\) instead of the constant part before the brackets in Eq. 3. Then, we apply FFT to the time domain CN0R waveform as follows.

$$ {\mathcal{F}}\left[ {CN_{0} R\left( t \right)} \right] = \mathop \smallint \limits_{0}^{T} CN_{0} R\left( t \right)e^{ - j\omega t} dt $$
(8)

where T is the interval of time window. As shown in Fig. 2, the DC (Direct Current) component \(\widehat{{A_{0} }}\) can be firstly extracted from the frequency domain CN0R waveform. After that, all other peaks in the spectrum are sorted in descending order of amplitude. The largest n peak amplitude values \(\widehat{{A_{{\omega_{i} }} }}\) with corresponding frequency \(\widehat{{\omega_{i} }}\) and \(\widehat{{\mu_{i} }}\) are selected as the components caused by NLOS signals and n is the minimum value that the energy of the selected NLOS components should exceed 95% of the energy of all the AC (Alternating Current) components.

Fig. 2.
figure 2

Spectral decomposition of CN0R

According to the results of spectral decomposition, we can obtain the following CN0R estimation.

$$ \widehat{{CN_{0} R}}\left( t \right) \approx \widehat{{A_{0} }} + \sum\nolimits_{i = 1}^{n} {\widehat{{A_{{\omega_{i} }} }}cos\left( {\widehat{{\omega_{i} }}t + \widehat{{\mu_{i} }}} \right)} $$
(9)

Comparing Eq. 7 with Eq. 9, the following equations can be listed to solve the unknown parameters \(\alpha_{i}\) and \(\psi_{i}\)

$$ \left\{ {\begin{array}{*{20}l} {K\left( {1 + \sum\nolimits_{{i = 1}}^{n} {\alpha _{i}^{2} } } \right) = \widehat{{A_{0} }}} \hfill & {} \hfill \\ {K\alpha _{i} = \widehat{{A_{{\omega _{i} }} }}} \hfill & {,\forall i = 1,2, \ldots ,n} \hfill \\ {\omega _{i} = \widehat{{\omega _{i} }}} \hfill & {} \hfill \\ {\mu _{i} = \widehat{{\mu _{i} }}} \hfill & {} \hfill \\ \end{array} } \right. $$
(10)

When \(\alpha_{i} \ll 1\) and \(\widehat{{A_{0}^{2} }} \gg \mathop \sum \nolimits_{i = 1}^{n} \widehat{{A_{{\omega_{i} }}^{2} }}\) are satisfied, we can solve Eq. 10 and obtain the following results:

$$ K = \frac{{\widehat{{A_{0} }} + \sqrt {\widehat{{A_{0}^{2} }} - \mathop \sum \nolimits_{i = 1}^{n} \widehat{{A_{{\omega_{i} }}^{2} }}} }}{2} $$
(11)
$$ \alpha_{i} = \frac{{\widehat{{A_{{\omega_{i} }} }}}}{{\widehat{{A_{0} }} + \sqrt {\widehat{{A_{0}^{2} }} - \mathop \sum \nolimits_{i = 1}^{n} \widehat{{A_{{\omega_{i} }}^{2} }}} }} $$
(12)
$$ \psi_{i} \left( t \right) = \widehat{{\omega_{i} }}t + \widehat{{\mu_{i} }} $$
(13)

Therefore, we obtain the estimation of two important parameters \(\alpha_{i}\) and \(\psi_{i}\) in the pseudorange multipath model, and substitute Eq. 12 and Eq. 13 into the following expression.

$$ \kappa_{i} \left( t \right) = \frac{{\alpha_{i} cos\psi_{i} \left( t \right)}}{{1 + \mathop \sum \nolimits_{s = 1}^{n} \alpha_{s} cos\psi_{s} \left( t \right)}} $$
(14)

Now, only \(\delta_{i}\) in Eq. 2 is uncertain, so we simplify the expression of Eq. 2 with \(\kappa_{i} \left( t \right)\) and obtain the following equation.

$$ \tau_{M} \left( t \right) = \sum\nolimits_{i = 1}^{n} {\kappa_{i} \left( t \right)\delta_{i} } $$
(15)

3.2 Mitigation of Double-Difference Pseudorange Multipath Error

The measurement model used in this paper is short baseline double-difference, which is able to eliminate measurement errors such as clock bias, ionospheric delay, tropospheric delay, etc.

$$ \nabla \Delta P\left( t \right) = \nabla \Delta \rho \left( t \right) + \nabla \Delta M_{P} \left( t \right) + \nabla \Delta \epsilon_{P} \left( t \right) $$
(16)
$$ \nabla \Delta \varPhi \left( t \right) = \nabla \Delta \rho \left( t \right) + \lambda \nabla \Delta N + \nabla \Delta M_{\varPhi } \left( t \right) + \nabla \Delta \epsilon_{\varPhi } \left( t \right) $$
(17)

where \(\nabla \Delta\) is the double-difference operator, \(\Delta\) indicates the difference between smartphone user and reference station, and \(\nabla\) indicates the difference between satellites. \(P\) is the pseudorange observation, \(\varPhi\) is the carrier phase observation, \(\rho\) is the real distance between the satellite and the receiver, \(\lambda\) is the wavelength of the carrier signal, M denotes the multipath error in pseudorange and carrier phase respectively. N is the unknown integer ambiguity of the carrier phase, \( \epsilon \) indicates the sum of other errors in pseudorange and carrier phase measurement respectively. It should be noted that \(\nabla \Delta M_{\varPhi } \left( t \right)\) and \( \nabla \Delta \epsilon_{\varPhi } \left( t \right)\) in Eq. 17 are very small, usually at the centimeter level, so they can be ignored in the pseudorange multipath error analysis. In addition, under the condition of continuous tracking, N keeps constant.

According to Eq. 16 and Eq. 17, we can obtain the below equation, which is called double-difference CMC (Code Minus Carrier).

$$ \nabla \Delta CMC\left( t \right) = \nabla \Delta P\left( t \right) - \nabla \Delta \varPhi \left( t \right) $$
(18)

Since the \(\nabla \Delta M_{\varPhi } \left( t \right)\) and \( \nabla \Delta \epsilon_{\varPhi } \left( t \right)\) can be ignored, and replace \(\nabla \Delta M_{P} \left( t \right)\) with \(\nabla \Delta \tau_{M} \left( t \right) = \nabla \tau_{M,r} \left( t \right) - \nabla \tau_{M,b} \left( t \right)\), then

$$ \nabla \Delta CMC\left( t \right) = \nabla \tau_{M,r} \left( t \right) - \nabla \tau_{M,b} \left( t \right) - \lambda \nabla \Delta N + \nabla \Delta \epsilon_{P} \left( t \right) $$
(19)

where \(\nabla \tau_{M,r}\) and \(\nabla \tau_{M,b}\) refers to the pseudorange multipath error of user (denotes r) and reference station (denotes b) respectively. Since the reference station has a reference value, \(\nabla \tau_{M,b}\) is known, so the unknowns in the above equation are \(\nabla \tau_{M,r}\) and \(\nabla \Delta N\). It should be noted that the unknown in Eq. 17 is \(\nabla \tau_{M,r} \left( t \right)\), not \(\tau_{M} \left( t \right)\) in Eq. 15. The former is the form of inter-satellite single-difference of the latter.

$$ \nabla \tau_{M,r} \left( t \right) = \mathop \sum \nolimits_{i = 1}^{n} \kappa_{i} \left( t \right)\delta_{i} - \mathop \sum \nolimits_{p = 1}^{{n^{\prime}}} \kappa_{p}^{^{\prime}} \left( t \right)\delta_{p}^{^{\prime}} $$
(20)

where \(n^{\prime}\), \(\kappa^{\prime}\) and \(\delta^{\prime}\) are corresponding to the reference satellite. If the length of the time window is m, then we have

$$ {\varvec{y}} = \left[ {\begin{array}{*{20}c} {\begin{array}{*{20}c} {\nabla \Delta CMC\left( t \right) + \nabla \tau_{M,b} \left( t \right)} \\ {\nabla \Delta CMC\left( {t - 1} \right) + \nabla \tau_{M,b} \left( {t - 1} \right)} \\ \end{array} } \\ {\begin{array}{*{20}c} \vdots \\ {\nabla \Delta CMC\left( {t - m + 1} \right) + \nabla \tau_{M,b} \left( {t - m + 1} \right)} \\ \end{array} } \\ \end{array} } \right] $$
(21)
$$ {\varvec{M}} = \left[ {\begin{array}{*{20}c} {\begin{array}{*{20}c} {\kappa_{1} \left( t \right)} \\ {\kappa_{1} \left( {t - 1} \right)} \\ \end{array} } \\ {\begin{array}{*{20}c} \vdots \\ {\kappa_{1} \left( {t - m + 1} \right)} \\ \end{array} } \\ \end{array} \begin{array}{*{20}c} {\begin{array}{*{20}c} {\kappa_{2} \left( t \right)} \\ {\kappa_{2} \left( {t - 1} \right)} \\ \end{array} } \\ {\begin{array}{*{20}c} \vdots \\ {\kappa_{2} \left( {t - m + 1} \right)} \\ \end{array} } \\ \end{array} \begin{array}{*{20}c} {\begin{array}{*{20}c} \ldots \\ \ldots \\ \end{array} } \\ {\begin{array}{*{20}c} \ddots \\ \ldots \\ \end{array} } \\ \end{array} \begin{array}{*{20}c} {\begin{array}{*{20}c} {\kappa_{n} \left( t \right)} \\ {\kappa_{n} \left( {t - 1} \right)} \\ \end{array} } \\ {\begin{array}{*{20}c} \vdots \\ {\kappa_{n} \left( {t - m + 1} \right)} \\ \end{array} } \\ \end{array} } \right] $$
(22)
$$ \user2{M^{\prime}} = \left[ {\begin{array}{*{20}c} {\begin{array}{*{20}c} {\kappa_{1}^{^{\prime}} \left( t \right)} \\ {\kappa_{1}^{^{\prime}} \left( {t - 1} \right)} \\ \end{array} } \\ {\begin{array}{*{20}c} \vdots \\ {\kappa_{1}^{^{\prime}} \left( {t - m + 1} \right)} \\ \end{array} } \\ \end{array} \begin{array}{*{20}c} {\begin{array}{*{20}c} {\kappa_{2}^{^{\prime}} \left( t \right)} \\ {\kappa_{2}^{^{\prime}} \left( {t - 1} \right)} \\ \end{array} } \\ {\begin{array}{*{20}c} \vdots \\ {\kappa_{2}^{^{\prime}} \left( {t - m + 1} \right)} \\ \end{array} } \\ \end{array} \begin{array}{*{20}c} {\begin{array}{*{20}c} \ldots \\ \ldots \\ \end{array} } \\ {\begin{array}{*{20}c} \ddots \\ \ldots \\ \end{array} } \\ \end{array} \begin{array}{*{20}c} {\begin{array}{*{20}c} {\kappa_{n}^{^{\prime}} \left( t \right)} \\ {\kappa_{n}^{^{\prime}} \left( {t - 1} \right)} \\ \end{array} } \\ {\begin{array}{*{20}c} \vdots \\ {\kappa_{n}^{^{\prime}} \left( {t - m + 1} \right)} \\ \end{array} } \\ \end{array} } \right] $$
(23)

According to Eq. 17, then we have

$$ {\varvec{x}} = \left[ {\begin{array}{*{20}c} {\begin{array}{*{20}c} {\delta_{1} } & {\delta_{2} } \\ \end{array} } & {\begin{array}{*{20}c} \cdots & {\delta_{n} } \\ \end{array} } \\ \end{array} } \right]^{T} $$
(24)
$$ \user2{x^{\prime}} = \left[ {\begin{array}{*{20}c} {\begin{array}{*{20}c} {\delta_{1}^{^{\prime}} } & {\delta_{2}^{^{\prime}} } \\ \end{array} } & {\begin{array}{*{20}c} \cdots & {\delta_{{n^{\prime}}}^{^{\prime}} } \\ \end{array} } \\ \end{array} } \right]^{T} $$
(25)
$$ {\varvec{y}} = {\varvec{Mx}} - \user2{M^{\prime}x^{\prime}} - \lambda \nabla \Delta N $$
(26)

The above equation can be solved by using least-square or KF, so, \({ }{\varvec{x}}^{^{\prime}}\) and \(\nabla \Delta {\text{N}}\) are obtained. Finally, we substitute \({ }{\varvec{x}}\) and \({ }{\varvec{x}}^{^{\prime}}\) into Eq. 18, and then we get the double-difference pseudorange observation with multipath mitigation as follows.

$$ \nabla \Delta P_{mm} \left( t \right) = \nabla \Delta P\left( t \right) - \left[ {\nabla \tau_{M,r} \left( t \right) - \nabla \tau_{M,b} \left( t \right)} \right] $$
(27)

3.3 PDR/GNSS Fusion Framework

On the one hand, because of the cumulative errors, the trajectory of PDR drifts seriously but keeps smooth. On the other hand, the trajectory of GNSS is not smooth due to thermal noise, but it does not drift, its trajectory is more like point clouds. This is a very obvious difference between PDR and GNSS, so our fusion framework aims to suppress the cumulative errors and smooth the random noise, and the final fusion trajectory can truly reflect the real position of the pedestrian. Our PDR/GNSS fusion framework is shown in Fig. 3. The fusion idea is based on joint heading and stride length estimation, which uses PDR heading to smooth GNSS heading. First, GNSS provides initial information, then PDR generates the heading and stride length estimation and GNSS generates the latitude, longitude and height with multipath mitigation. After coordinate transformation, we can get the GNSS results \(\theta^{GNSS}\) and \(SL^{GNSS}\), and PDR synchronized results \(\theta^{PDR}\) and \(SL^{PDR}\).

Fig. 3.
figure 3

Fusion framework of PDR/GNSS

Then, the joint heading and stride length estimation send \(\hat{\theta }\) and \(\widehat{SL}\) estimations to the location update module to calculate the positions according to Eq. 4. The joint heading estimation is given as follows.

$$ \hat{\theta }_{k + 1} = \frac{1}{Z}\varTheta_{k + 1} + \frac{Z - 1}{Z}\left( {\hat{\theta }_{k} + \theta_{k + 1}^{PDR} - \theta_{k}^{PDR} } \right) $$
(28)
$$ \varTheta_{k + 1} = p\theta_{k + 1}^{GNSS} + \left( {1 - p} \right)\theta_{k + 1}^{PDR} $$
(29)

In the above equations, the inputs are \(\theta^{PDR}\) and \(\theta^{GNSS}\), and the output is the joint heading estimation. Z is the smoothing coefficient, it is usually set to 30 to 50. p is a weighting factor and usually ranges from 1 to 1.5. The inputs of the joint stride length estimation includes the GNSS stride length, the PDR stride length after synchronization and the output \(SL^{MODEL}\) of the PDR synchronization module, which is trained in advance for different pedestrian models [18].

4 Experimental Results

4.1 Experimental Setup

The experimental environment is shown in Fig. 4. Xiaomi MI8 is selected as the test smartphone, and the raw GNSS observations and MEMS sensor data are recorded by self-developed APP. The first experiment is static multipath experiment, the reference station is a NovAtel PP6 receiver, and we use a survey-grade Huace B5 receiver to obtain the groundtruth. In order to verify the effectiveness of our pseudorange multipath mitigation method, we select two scenarios: (1) weak multipath scenario, such as a bridge, see Fig. 4a, (2) strong multipath scenario, such as a balcony, see Fig. 4b. The second experiment is PDR/GNSS fusion positioning test, as shown in Fig. 4c. On this playground, the blue triangle represents the starting and ending point, the pedestrian walks around the playground three times in the direction of the red arrow, and the yellow landmark is the groundtruth. During the test, the pedestrian holds Xiaomi MI8 with his right hand and walks at a normal speed. The smartphone records the GNSS and MEMS raw data, and we still use NovAtel PP6 as the reference station, the whole test takes about 25 min. In addition, the pedestrian is asked to keep still for 1min when he comes to the red pentagram, because this place is close to the viaduct. According to previous research [18], the vehicles passing by the pedestrian also lead to GNSS multipath, so we choose this location to test the anti-multipath effect of our fusion algorithm.

Fig. 4.
figure 4

Experimental environments

4.2 Results of Pseudorange Multipath Mitigation

Figure 5a shows the comparison of the double-difference pseudorange residual and the estimated double-difference pseudorange multipath error in the weak multipath scenario. Double-difference pseudorange residual refers to the right side in Eq. 16 without \(\nabla \Delta \rho \left( t \right)\), so it mainly contains multipath error and noise. Because the total epochs are more than 100 min, it is not convenient to observe the estimated results, we zoom in on the area which horizontal axis ranges from 3000 to 3500, as shown in the green line box. There are two kinds of multipath errors based on the different distance delay of NLOS signal, they are high-frequency and low-frequency multipath errors. The former takes minutes as observation period, while the latter takes hours as observation period, so we can see from the enlarged area in Fig. 5a that the high-frequency multipath errors are well estimated.

Figure 5b shows the comparison of the double-difference pseudorange residual and the estimated double-difference pseudorange multipath error in the strong multipath scenario. Similar to Fig. 5a, most of the high-frequency multipath errors can be estimated effectively, but the low-frequency multipath error estimations are not accurate, as shown in the green line box, which horizontal axis ranges from 5000 to 6300. The low-frequency multipath error is usually caused by a very short NLOS path, so it is very difficult to eliminate from the observation level.

Fig. 5.
figure 5

Estimated multipath error in weak and strong multipath scenario

Figure 6 shows the comparison of the 3D positioning error with and without multipath mitigation. Even in the weak multipath scenario, smartphone’s GNSS chipset produces more than 5 m multipath errors due to the poor performance of smartphone’s antenna and RF front-end. Here, the positioning error with multipath mitigation can quickly converge to less than 2 m within 5 min, while the positioning error without multipath mitigation needs more than 100 min to converge to less than 2 m, which verifies the effectiveness of the proposed multipath mitigation algorithm.

Fig. 6.
figure 6

3D positioning error with and without multipath mitigation

4.3 Results of Fusion Positioning

The results of PDR are shown in Fig. 7. The figure above shows a total of 2004 steps detected and a total of 5 stops during the test, where the walker stay at the beginning once, the end once and the viaduct side three times. The figure in the middle shows the estimated headings with a periodic pattern. The figure below shows the results of stride length estimation. The red dotted line is the average stride length, about 0.75 m. There are five glitches in the estimated results, corresponding to five places to stay. When the pedestrian remains stationary, slight jitter may lead to wrong detection and estimation of PDR.

Fig. 7.
figure 7

Step detection, heading and stride length estimation of PDR

Figure 8 shows the positioning comparison of standalone PDR, standalone GNSS and the proposed fusion algorithm. We can see that the trajectory of PDR is very smooth, and the heading and stride length estimation in the first few minutes are more accurate. However, the accumulated error over time causes the PDR trajectory to deviate from the groundtruth gradually, and the deviation is getting larger and larger. When the pedestrian comes to the stop point, the positioning results of PDR are shown as ‘drift point’ in the figure, there are obvious errors in the heading estimation here, which lead to more severe drift in the subsequent position estimation. The trajectory of GNSS is distributed around the real trajectory, due to the large noise, the positioning results are easy to jump, and cannot form a continuous trajectory, especially at the stop point, it looks like a point cloud. Fusion result combines the advantages of PDR and GNSS, it reduces the noise variance without large drift, and forms a relatively smooth trajectory. But it also jumps at the stop point due to the remaining errors in stride length estimation, therefore, the final trajectory still has some of the distortions compared with the groundtruth.

Fig. 8.
figure 8

Fusion positioning comparison results

5 Conclusion and Future Work

In this paper, we derive the relationship between CN0R and pseudorange multipath error, then we propose a novel multipath mitigation method based on spectrum decomposition of CN0R which can be implemented on smartphone. On this basis, we also propose a PDR/GNSS fusion framework which combines the advantages of PDR that is not susceptible to external interference and GNSS that has no cumulative error. The experimental results verify the effectiveness and superiority of the two algorithms. The future work of smartphone-based PDR/GNSS fusion positioning needs to focus on two aspects: Low-frequency multipath error needs more research, especially the influence of antenna and environment, the proposed multipath mitigation needs to be improved to better adapt the low-frequency multipath; The integrity monitoring of PDR/GNSS fusion system is necessary for long-term application, therefore, integrity monitoring is one of the urgent tasks in the future.