Introduction

Due to their low cost, GNSS chipsets are now ubiquitous in mobile intelligent terminals, such as smartphones, tablets and smartwearables. The positioning accuracy of these consumer-grade GNSS receivers averages several meters under ideal observation conditions; their accuracy is reduced to tens of meters under more complex conditions. Various programs and services that enable users to perform daily activities, e.g., arranging travel routes, sharing location with social networks, and enjoying location-based services (LBS), are developed using the GNSS modules in smartphones. Future improvement of GNSS chipset positioning accuracy will promote further diversification of LBS and replacement of existing devices (Verhagen et al. 2010). The accuracy of the latest GNSS navigation messages, e.g., orbit, clock and atmospheric corrections, is approximately 1 m, making front-end noise and receiver-dependent multipath the main sources of observation error in consumer devices. There was considerable uncertainty regarding the ability of GNSS receivers to provide meter-level accuracies until Google announced the availability of GNSS observations from devices running the Android version 7 operating system to developers. At Google I/O in May of 2016, the company reported the availability of GNSS observations for use in applications on the Android N (“Nougat” = version 7) operating system. These data enable us to obtain pseudorange, Doppler and carrier phase observations from a smartphone or tablet that may help in the development of advanced algorithms to increase position accuracy.

Several studies have attempted to improve the meter-level accuracy of differential GNSS (DGNSS) or of real-time kinematics (RTK) using these devices. Previous studies fall into two main categories: hardware add-on or modification methods and user-developed software (Yoon et al. 2016). Pesyna et al. (2014) demonstrated that centimeter-scale positioning accuracy is possible using smartphone-quality GNSS antenna data. In this experiment, a signal received by a smartphone antenna revealed that the antenna is the primary impediment to fast and reliable resolution of the integer ambiguities. However, until the Android N operating system provided GNSS observations, it was impossible to improve smartphone GNSS positioning accuracy without external hardware. Thus, some researchers proposed user-developed software with independent DGNSS or RTK capability. Hwang et al. (2012) developed a smartphone application with wireless communication, NRTIP client, and RTK processing features that simplify the Network RTK-GPS system and reduce cost. Thus, the smartphone can use the DGNSS or RTK corrections of GNSS receiver data connected to the smartphone via Bluetooth. This method has also been simplified and implemented without pseudorange observations (Byungwoon et al. 2013; Chen et al. 2014). By computing DGNSS in the coordinate domain, this technique utilizes the pseudorange corrections to estimate the coordinate corrections and applies the coordinate corrections to the initial coordinates obtained from the smartphone GNSS chipset.

Recently, Laurichesse et al. (2017) presented initial positioning results from his Android application. With the use of additional techniques such as Doppler filtering and SBAS augmentation, sub-meter accuracy can be reached. Also, with a smart device providing GNSS phase observations, it is possible to reach decimeter-level accuracy through rapid-static surveys, without phase ambiguity resolution (Realini et al. 2017). Some initial efforts to process smartphone GNSS observations independently have been presented. The results confirmed that noisy pseudorange observations provide meter-level accuracy and that the current quality of carrier phase observations may enable centimeter-level smartphone positioning accuracy. Progress reports can be found in Riley et al. (2017) and Asari et al. (2017) of smartphone GNSS observations which open new perspectives in the effective use of such mass-market devices for precise positioning and professional surveying purposes. We discuss the quality of smartphone GNSS observations in terms of (C/N0), pseudorange noise, pseudorange rate error and phase rate error. Using the GNSS observations, an algorithm is developed to achieve higher positioning accuracy. Our static and kinematic data analyses indicate that the release of smartphone GNSS observations may lead to more accurate positioning through the development of advanced positioning algorithms.

First, we briefly introduce and summarize the Android N operating system, the release of GNSS observations, and our experimental design. Second, we assess the quality of the GNSS observations from Android smartphones. Third, we present and discuss results from static and kinematic positioning experiments using GNSS observations. Finally, we summarize our findings and speculate on the implications of the release of GNSS observations.

Accessing smartphone GNSS observations and data collection methods

Before the release of the Android N operating system, which coincided with the availability of GNSS observations such as pseudorange, Doppler and carrier phase, these data were strictly protected by chip manufacturers, and only the position computed by GNSS chipsets was available to developers. The software stack of the Android operating system is shown in Fig. 1 (Humphreys et al. 2016). The GNSS observations are only available at the hardware abstraction level in the “L” release. In Release “M”, observations are available at the application framework level through an application programming interface (API) provided by Android developers. Fortunately, we can use GNSS observations from the “M” release in our applications with the Android N operating system. Depending on the device, GNSS observations can include all or some of the following data: pseudorange, pseudorange rate, navigation messages, accumulated delta or carrier range, and hardware (HW) clock.

Fig. 1
figure 1

Android software stack with the GNSS components and the data flow path

An API is defined by Android N as a collection of protocols that provide developers access to system functionalities. The GNSS observations are included in the GnssClock and GnssMeasurement software classes, as explained in the android location APIs. Furthermore, the Gnsslogger application and its source code were released by Google. The first Android products with GNSS observations include: Nexus 9 tablet, Nexus 5× smartphone, Nexus 6p smartphone, Pixel smartphone and the Pixel XL smartphone. The Nexus 9 tablet is suitable for continuous carrier phase observation as duty cycling is disabled in the Android N version 7.1 release (Wesson et al. 2010).

The device used in this study is a Nexus 9 tablet running the Broadcom 4752 GNSS chip, jointly developed by Google and HTC. The Nexus 9 tablet can be updated with the latest version of Android N (version 7.1.1) and can provide pseudorange data, navigation messages, accumulated delta ranges and HW clocks for GPS and GLONASS. In the following analysis, only GPS observations were used. Figure 2 shows the location where three sets of experimental data were collected and the equipment used in this study. The static dataset was collected under normal satellite visibility on June 26, 2017 in the center of a field at the Wuhan University School of Geodesy and Geomatics. One set of kinematic data was collected on the track surrounding the field under open sky, except for several seconds of shielding by nearby trees and buildings. The other set of kinematic data was collected from the road surrounding the field, where the GNSS signal is obscured by trees. In the static data analysis experiment, the Nexus 9 tablet was placed on the playground. In the kinematic positioning performance experiment, the phone was held by a human as it is in practice. During the test, the Nexus 9 tablet did not use Wi-Fi, Bluetooth, and only location permission is accessed.

Fig. 2
figure 2

Static and kinematic data collection locations (top), and locations of Nexus 9 tablet and NovAtel devices for static data collection (bottom)

The sky plot and availability of GPS satellites in the static data collection are shown in Fig. 3. The top two images show that between 7 and 10 GPS satellites were observed on the L1 frequency for more than 4 h using the Nexus 9. The maximum number of visible GPS satellites on the L1 frequency by a geodetic-quality NovAtel antenna and receiver during this same time period was 9, but with an improved signal to noise ratio (SNR). The smartphone GNSS antenna uses linear polarization, rendering it susceptible to multipath effects from GNSS signals bouncing off nearby surfaces before reaching the antenna (Pathak et al. 2003). Thus, the smartphone antenna is highly sensitive to low-quality GNSS signal capture compared with the geodetic-quality device. This difference explains the absence of the G11, G18 and G27 signals from the NovAtel data.

Fig. 3
figure 3

Sky plot and availability of GPS satellites of static data with 10° angle lower limit using Nexus 9 (top) and NovAtel devices (bottom)

Quality assessment of smartphone GNSS observations

This section assesses the quality of smartphone GNSS observations by comparing the (C/N0), code measurement noise, pseudorange rate error and phase rate error to similar observations from geodetic-quality GPS L1 signals. The (C/N0) obtained from a GNSS receiver is the result of the gains and losses along the complete transmission chain, providing critical performance data for characterizing a variety of accessible signals. Measurements of the pseudorange noise can distinguish the quality of pseudorange observations accessible with modern GNSS receivers. The error in the temporal variation of the pseudorange and the phase observations indicates differences in the noise level among these observations. Thus, we use the quality assessment described in this section to inform a positioning algorithm, described in later sections.

Carrier-to-noise density ratio

The (C/N0) value measured by the receiver is relevant to the gains and losses reported along the transmission chain, including those from the satellite payload and antenna, the signal path, and both the receiving antenna and receiver (Hauschild et al. 2012). The average (C/N0) of both the Nexus 9 and the NovAtel were analyzed with respect to elevation angle and later compared to assess the quality of the GNSS observations. In this analysis, we classified (C/N0) values within an elevation range of 2° into one group, and we computed a group average.

Figure 4 displays average (C/N0) values for the G02, G05, G06, G09 and G28 L1 signals. At elevation angles greater than 50°, the average values of (C/N0) for the Nexus 9 and NovAtel ranged from 30 to 40 dB-Hz and 40 to 50 dB-Hz, respectively. Thus, (C/N0) values measured with the Nexus 9 smartphone were approximately 10 dB-Hz lower than values obtained from a geodetic-quality antenna and receiver, indicating the quality of the smartphone observations. The elevation angle of the satellite above the horizon generally provides an explanation for different (C/N0) values among satellites. However, although G02, G05 and G28 were at higher angles during the experiment, Nexus 9 (C/N0) values showed a larger variability than (C/N0) values from NovAtel.

Fig. 4
figure 4

Average (C/N0) values vs. elevation for the Nexus 9 and NovAtel devices. G02 and G05 are shown on the top plot, while G06, G09 and G28 are shown on the plot on the bottom

Figure 5 shows a comparison of the standard deviation of (C/N0) values with 50° elevation angles cutoff. At large angles, the standard deviation of Nexus 9 (C/N0) values was approximately two to three times larger than the standard deviation of the NovAtel observations. Thus, the smartphone data were unstable and susceptible to environmental interference. Therefore, local multipath was the dominant factor determining the dependence of (C/N0) on the azimuth and elevation (Humphreys et al. 2016). Under typical circumstances in which a smartphone is held in a user’s hand, noisy observations caused by local multipath effects pose significant challenges for sub-meter-level smartphone positioning.

Fig. 5
figure 5

Standard deviation of (C/N0) values of G02, G05, G06 and G28 with 50° elevation angles cutoff

Code measurement noise

The zero-baseline and short-baseline approach have been widely applied to evaluate the noise characteristics of GNSS observations (Amiri-Simkooei and Tiberius 2007). For the smartphone devices with built-in GNSS antenna, such as the Nexus 9, it is hard to carry out the zero-baseline experiment without external hardware. Therefore, we use a short-baseline experiment to determine the pseudorange noise of a smartphone. The Nexus 9 and the middle NovAtel antenna in Fig. 2 form a short baseline to assess the observations of Nexus 9 through station single differencing. For comparison, the right NovAtel antenna and middle NovAtel antenna also form short baseline to calculate the station single-difference combination of two NovAtel devices. The prior coordinates of three stations are obtained through high-precision surveying devices. The single-difference combination between two stations is defined as

$$\begin{aligned} \Delta P_{{AB}}^{i} & =\Delta S_{{AB}}^{i}+c \cdot \Delta \text{d}{t_{AB}}+\Delta M_{{AB}}^{i}+\Delta \varepsilon \\ & \Downarrow \\ \left( {P_{A}^{i} - P_{B}^{i}} \right) & =\left( {S_{A}^{i} - S_{B}^{i}} \right)+c \cdot \Delta \text{d}{t_{AB}}+v_{{AB}}^{i} \\ \end{aligned}$$
(1)

where \(\Delta\) is single differencing operator, \(P_{A}^{i}\) and \(P_{B}^{i}\) are pseudorange observations and \(S_{A}^{i}\) and \(S_{B}^{i}\) are the ranges between the satellite and the station calculated using broadcast ephemeris and prior station coordinates, \(c\) is the speed of light, \(\text{d}t\) is the receiver-clock error, \(M\) is multipath error, \(\varepsilon\) is the pseudorange noise, and \(v_{{AB}}^{i}\) indicates the station single-difference residual. Each individual station is signified by either \(A\) or \(B\) and \(i\) indicates the satellite number. Although the atmospheric and satellite-dependent errors can be eliminated or reduced by a single differencing, the receiver-clock bias still exists. The average OMC (observation minus computation) value of the observed satellites is used as the receiver-clock bias, defined as follows:

$$\Delta \text{d}{t_{AB}}=\frac{1}{n}\sum\limits_{{i=1}}^{n} {\left( {\Delta P_{{AB}}^{i} - \Delta S_{{AB}}^{i}} \right)} \;$$
(2)

where \(n\) is the number of satellites viewed and \(\Delta \text{d}{t_{AB}}\) is the average receiver-clock bias value of station \(A\) and \(B\).

As the satellite and atmospheric delay errors were differenced and the receiver-clock bias was estimated, \(v_{{AB}}^{i}\) represents the noise of the pseudorange observations, plus the errors in the ranges due to imperfect position determination, plus the noise contribution from the clock estimates and the multipath error. Generally, we assume that the smartphone pseudorange noise is much larger than that of a geodetic-level device. Thus, \(v_{{AB}}^{i}\) is affected by smartphone pseudorange noise and multipath error mainly, if the receiver-clock bias is eliminated. The station single-difference (SD) pseudorange residuals of the Nexus 9 and the NovAtel are shown in Fig. 6.

Fig. 6
figure 6

Station single-difference pseudorange residuals of all observed satellites in static data collected by Nexus 9 (top plot) and NovAtel devices (bottom plot)

The Nexus 9 single-difference pseudorange residuals ranged from − 20 to 20 m, while the NovAtel residuals ranged from − 1 to 1 m. The results indicated that the Nexus 9 code measurement noise was much larger than that of the NovAtel. Accuracy assessment of the code measurement noise can be improved using the same receiver clock; however, this is difficult to implement without external hardware. As gross errors were apparent in the station single-difference pseudorange residuals, the factors influencing the observation quality were investigated.

As illustrated in Fig. 7, the single-difference pseudorange residuals of G02 and G12 using Nexus 9 and NovAtel showed different relationships with elevation. As elevation decreased, the NovAtel residuals showed gross errors, indicating that the observation accuracy was related to elevation. Thus, the observation accuracy of the geodetic-quality device is determined by the elevation of the GNSS satellites, and the weight of observations is generally elevation dependent during data processing. Conversely, the Nexus 9 residuals showed a weak relationship with elevation.

Fig. 7
figure 7

Nexus 9 and NovAtel station single-difference pseudorange residuals of G02 and G12 vs. elevation

Figure 4 shows that the (C/N0) of the smartphone ranged between 30 and 40 dB-Hz, approximately 10 dB-Hz lower than representative values from geodetic-quality devices. As illustrated in Fig. 8, the (C/N0) values showed a strong relationship with the Nexus 9 station single-difference pseudorange residuals, and gross errors were present when the (C/N0) decreased to 20 dB-Hz. Typically, using geodetic receivers, the SNR is smaller when the satellite is tracked at lower elevation angles, which justifies the elevation-dependent weighting. With the tablet, we do not see this correlation as much because SNR varies more significantly, regardless of elevation angle. Therefore, we prefer SNR-dependent weighting during smartphone GNSS data processing.

Fig. 8
figure 8

Nexus 9 station single-difference pseudorange residuals of G02 and G12 vs. (C/N0)

Pseudorange rate error and phase rate error

To obtain the high-precision solution, in addition to formulating the correct observation model, it is important to identify and construct a dynamic model that can accurately describe the user’s dynamics (Zhou and Li 2015). As an effective and important complement to GNSS kinematic navigation, the GNSS Doppler observations provide the velocity information of moving objects (Zhou et al. 2013). The estimated velocity can be added as state vector and incorporated into a positioning method. To transform a smartphone into a high-precision positioning device, it is necessary to consider carrier phase observations, which are up to 100 times more precise than pseudorange observations. However, the carrier phase observations contain an unknown offset, referred to as carrier phase ambiguity. This ambiguity is difficult to resolve when obstructions such as trees, buildings, and overpasses conceal the satellite from the GNSS receiver antenna.

Figure 9 shows a comparison of the pseudorange rate, phase rate, and Doppler data. The majority of pseudorange rates for G09 and G23 varied within ± 10 m/s, while phase rates and Doppler varied within ± 0.2 m/s. Doppler measurements give the instantaneous rate of change of the carrier. To get a comparable pseudorange and phase rate, the two rate values of (t− 1, t) and (t, t + 1) are averaged. The meter-level pseudorange rate noise was approximately two orders of magnitude larger than the phase rate and the Doppler. Furthermore, the pseudorange rate noises of G09 and G23 were both slightly higher during the first 1500 epochs compared with other epochs. This result can be explained by the fact that observation quality is strongly related to SNR and not elevation. Therefore, phase and Doppler observations showed a centimeter per second precision and can be used to derive user velocity and detect observation error.

Fig. 9
figure 9

Comparison of the pseudorange rate, phase rate, and Doppler data from Nexus 9

Smartphone GNSS positioning performance

We assessed the positioning performance of smartphone GNSS observations under different conditions shown in Fig. 2. One set of static data was collected under an open sky with normal satellite visibility, whereas kinematic data were collected in both open and shielded environments. Based on our quality assessment, the GNSS observations from smartphones can be used to determine position.

Positioning algorithm based on a time-differenced filter

The pseudorange, phase and Doppler observations were combined into an algorithm to obtain a precise position. The weight of each observation was determined by SNR, and the satellites with low SNR are also eliminated. An advantage of the SNR weighting is that it performs as well as elevation-dependent weighting in clear sky conditions but is often better in poor signal environments. For \(n\) satellites used in the positioning equation, an SNR-based variance covariance matrix can be constructed as follows:

$$\Sigma =\text{diag}({s_1},\;{s_2}, \ldots ,{s_n})$$
(3)

where

$${s_i}=a+b \times {10^{( - SN{R_i})/10}}$$
(4)

and the constants a and b need to be determined for each equipment. Here the following values have been used: \(a=10\;{\text{m}^2}\) and \(b={150^2}\;{\text{m}^2}\text{Hz}\) (Kuusniemi et al. 2007).

The Doppler and phase rate were used to estimate velocity, which was added as states in the positioning solution. The architecture of our positioning algorithm is based on a time-difference filter (TD Filter), shown in Fig. 10.

Fig. 10
figure 10

Architecture of the TD Filter positioning algorithm

First, the GNSS observations error was detected by the SNR values associated with each observation. Second, the observations were processed with a single point positioning (SPP) algorithm and a single point velocity (SPV) determination algorithm. In this part, only the pseudorange and Doppler observations were used to determine the position and velocity of the smartphone. Next, a time-differenced carrier phase (TDCP) technique was applied to obtain precise GNSS velocities.

The TDCP method uses single-difference observations of the one-way carrier phase observations in conjunction with the difference between carrier phase observations at two successive epochs, \({t_j}\) and \({t_{j - 1}}\), as (van Graas and Soloviev 2004; Freda et al. 2015)

$$\begin{aligned} \lambda \cdot \Delta \Phi & =\lambda \cdot \left[ {\Phi \left( {{t_j}} \right) - \Phi \left( {{t_{j - 1}}} \right)} \right] \\ & =\Delta d+c\Delta \delta {t_u}+c\Delta \delta {t_s}+\Delta \delta {d_{\text{eph}}} - \Delta \delta {d_{\text{iono}}}+\Delta \delta {d_{\text{trop}}}+\Delta \eta \\ \end{aligned}$$
(5)

where \(\Delta\) is the differencing operator, \(\Delta d\) is the change in the geometric range between two epochs, \(\Delta \updelta {t_u}\) and \(\Delta \updelta {t_s}\) are the differenced user and satellite clock error, respectively, \(\Delta \updelta {d_{\text{eph}}}\), \(\Delta \updelta {d_{\text{iono}}}\) and \(\Delta \updelta {d_{\text{trop}}}\) are the time-differenced residuals of common mode errors, i.e., ephemeris, ionosphere and troposphere errors, and \(\Delta \upeta\) indicates the differenced multipath and receiver noise. Assuming \(m\) equations (\(m \geqslant 4\)), the velocity can be estimated using the weighted least squares method.

Finally, the smartphone user’s position was obtained using the robust Kalman filter. The state model and measurement equation are given as follows:

$$\left\{ {\begin{array}{*{20}{l}} {{X_j}={X_{j - 1}}+V\cdot\Delta t+W} \\ {Z=H\cdot{X_j}+R} \end{array}} \right.$$
(6)

where \(X\) is the user position, \(V\) is the user velocity, \(Z\) is the measurement vector, \(H\) is the coefficient matrix, \(W\) is the state noise, and \(R\) is the observation noise. If the TDCP method works, the user velocity is obtained from TDCP. Otherwise, the velocity derived from SPV will be used.

Static data analysis

In the static data experiment, the GNSS observations were processed by a TD filter positioning algorithm. To assess performance, the NovAtel GNSS observations were processed by a TD filter and compared with the original GNSS chipsets positioning results of Nexus 9. The position errors in the east, north and up-vertical directions are shown in Fig. 11.

Fig. 11
figure 11

Comparison of the static data positioning performance. The red, blue, and green lines represent the GNSS chipsets positioning error of Nexus 9, Nexus 9 TD filter positioning error, and NovAtel TD filter positioning error, respectively

Figure 11 indicates that the positioning errors of the smartphone GNSS chipsets averaged approximately several meters with a large standard deviation. Processing these same data with a TD filter reduced the position errors to below 1 m. In contrast, the higher quality NovAtel data showed a short convergence time and a more accurate positioning. A comparison of the static positioning RMS errors is shown in Table 1, where Nexus 9 SPP represents the smartphone GNSS observations processed by single point positioning (SPP).

Table 1 Comparison of static data positioning RMS errors

We find that processing smartphone pseudorange observations with SPP resulted in large RMS error values, reaching approximately 7.7 m in the horizontal direction and exceeding 10 m in the vertical direction. These errors surpassed those of the smartphone GNSS chipset data obtained from the Android API. The large variability in the smartphone pseudorange observations indicates a need for a dedicated algorithm to increase positioning accuracy. Incorporating the velocity estimates from the Doppler and carrier phase observations reduced the RMS errors of the Nexus 9 TD filter positions to less than 0.8 and 1.4 m in the horizontal and vertical directions, respectively. Due to the superior quality of GNSS observations, the RMS errors of NovAtel TD filter positions are approximately 0.2 and 0.3 m in the horizontal and vertical directions, respectively.

Figure 12 displays the velocity estimates from the Nexus 9 and NovAtel observations, while Fig. 13 illustrates the RMS errors of these values. Nexus 9 velocity estimates varied within ± 0.02 and ± 0.05 m/s in the horizontal and vertical directions, respectively. The NovAtel velocity estimates were approximately one-half of the Nexus 9 velocity estimates in all directions. By comparing the RMS errors of the velocities, we found that the NovAtel and Nexus 9 velocities were of the same order of magnitude, but the accuracy of the NovAtel estimates was slightly higher. Using the velocity estimates to determine position, the pseudorange noise was smoothed. Therefore, TD filter is a practical positioning algorithm that incorporates the full suite of observational data, particularly the carrier phase observations.

Fig. 12
figure 12

Velocity estimated using Nexus 9 and NovAtel static data

Fig. 13
figure 13

RMS errors of estimated velocities for Nexus 9 and NovAtel

The static data positioning analysis demonstrated that including Doppler and carrier phase observations in smartphone GNSS positioning solution smoothed the pseudorange noise after several minutes of continuous velocity estimation and resulted in sub-meter accuracy. We evaluated the characteristics of smartphone GNSS observations and developed TD filter, an advanced positioning algorithm that achieved a higher positioning accuracy than GNSS chipsets.

Kinematic positioning performance

In the kinematic experiments, two circuits were used; one on a track with open sky except for several seconds of shielding from trees and buildings, and the other on a road surrounding a field, where the GNSS signal was significantly shielded by trees. The GNSS observations from the smartphone were processed by TD filter, and the results were compared with the original positioning output of the Nexus 9 GNSS chipset. The purpose of the kinematic experiment was to assess the practicality of TD filter in a pedestrian environment. The results of these tests are presented in Fig. 14.

Fig. 14
figure 14

Comparison of smartphone GNSS chipset and TD filter track in both kinematic circuits

The circuit around the track processed by TD filter was continuous and smooth except for the locations where the circuit was shielded by trees and buildings. The chipset output of this circuit showed more noise than the TD filter results, and did not align well with the circuit. Due to heavy shielding of the road circuit, there were many deviations between the TD filter output and the actual circuit that was traversed. However, the chipset output of this same circuit showed a stable noise level with no considerable deviations. These results indicate the difficulty of obtaining continuous positioning results using only GNSS observations in a pedestrian environment.

Figure 15 shows the position dilution of precision (PDOP), the number of satellites viewed, and the number of satellites used in the two kinematic circuits. In both circuits, between one and three satellites are eliminated during error detection. There are two steps for error detection and elimination. First, the satellite is excluded when its SNR is lower than 15 dB-Hz. Second, if the posteriori variance of unit weight \({\hat {\sigma }^2}\) exceeds the threshold, we believe that there could be an error in measurements. In our experiments, the following value has been used: \({\hat {\sigma }^2}={5.0^2}\,{\text{m}^2}\). On the track, PDOP varies with the surrounding features while remaining relatively stable on the road. A greater number of satellites are viewed during kinematic track 1 data collection, but many fail to pass through the error detection process. The average PDOP of kinematic track 1 and kinematic track 2 are 4.71 and 4.42, respectively, which indicates less than ideal conditions in this setting.

Fig. 15
figure 15

PDOP, the number of satellites viewed, and the number of satellites used in the positioning solution. The top and bottom plots represent the status of TD filter track 1 and TD filter track 2, respectively

Conclusions

We analyzed and assessed GNSS observations from an Android smartphone and studied the positioning accuracy of both static and kinematic observations. The carrier-to-noise density ratio, pseudorange noise, pseudorange rate error and phase rate error were characterized. Our results demonstrate that the observation quality of smartphone GNSS observations is lower than that of geodetic-quality GNSS devices. Therefore, it is difficult to obtain meter-level positioning accuracy using only pseudorange observations from smartphones. Based on our quality assessment of smartphone GNSS observations, we draw the following conclusions:

  1. 1.

    The average (C/N0) value of the GPS L1 smartphone GNSS observations is approximately 10 dB-Hz lower than a representative value from a geodetic-quality antenna and receiver. Furthermore, these observations are unstable even at high elevation angle.

  2. 2.

    Elevation-dependent weighting does not characterize well the SNR variations observed from the Nexus 9 tablet. The Nexus 9 station single-difference pseudorange residuals on all available signals varies between − 20 and 20 m and are larger than the values from a geodetic-quality antenna and receiver.

  3. 3.

    The pseudorange and phase rate experiments show that the pseudorange rate varied within ± 10 m/s, while the phase rate and Doppler both varies within ± 0.2 m/s.

After assessing the quality of the smartphone GNSS observations, we combined the pseudorange, carrier phase and Doppler data with a dedicated algorithm and obtained a higher level of positioning accuracy than smartphone GNSS chipset original positioning results. In the static positioning analysis, we used an estimated velocity in conjunction with a TD filter to greatly improve the positioning accuracy. The results show that the RMS error of the position is less than 0.6 and 1.4 m in the horizontal and vertical directions, respectively. Finally, the kinematic positioning experiments in a pedestrian environment indicate that we cannot obtain a continuous positioning solution with only a smartphone GNSS sensor.