Introduction

Precise point positioning (PPP) (Malys and Jensen 1990, Zumberge et al. 1997) has become a useful GNSS positioning technology in geoscience and meteorology (Blewitt et al. 2016; Leandro et al. 2011; Rocken et al. 2005). Nonetheless, phase biases originating from both receiver and satellite hardware are absorbed into the undifferenced ambiguities in PPP and cannot be eliminated in data processing as in the case of double-difference (DD) ambiguities (Geng et al. 2010b; Teunissen and Kleusberg 1998). Retrieving the integer property of single-station ambiguities in PPP had been considered difficult. As a result, PPP accuracy, especially for the east component, is worse than that of the relative positioning (Calais et al. 2006). Moreover, a long observation period or initialization time is required to achieve centimeter-level positioning accuracy (Geng et al. 2009; Ghoddousi-Fard and Dare 2005). This deficiency of PPP has greatly limited its applications in time-critical applications.

Fortunately, ambiguity resolution (AR) at a single receiver can be attempted by separating the phase biases from undifferenced ambiguities to recover the integer property of these ambiguities in PPP (Collins et al. 2008; Ge et al. 2008; Laurichesse et al. 2009). It can improve remarkably the positioning accuracy, especially in real-time processing or when the observation period is short (Ge et al. 2008; Geng et al. 2009; Schwarz et al. 2009). In addition, the initialization times of PPP can also be reduced by implementing PPP-AR (Geng et al. 2010a; Geng and Shi 2017). Although PPP-AR has been developed for many years and its advantages are significant, only a few research institutions have exploited this technique for scientific research, such as in geoscience and meteorology. One of the reasons is that only a few software packages have been developed to achieve the function of PPP-A and are free for researchers.

To recover the integer property of the undifferenced ambiguities in PPP and implement PPP-AR, phase bias products should be derived from a network solution. Nowadays, CNES (Centre national d’études spatiales) provides wide-lane phase biases and integer satellite clocks to achieve PPP-AR (Loyer et al. 2012). Meanwhile, based on the PANDA (Positioning And Navigation Data Analyst) software developed at Wuhan University, which is a sophisticated tool for GNSS data analysis and currently serves as one of the fundamental platforms for scientific studies in China (Liu and Ge 2003), we have also developed a set of software packages dedicated to phase bias estimation, and productive research collaborations have been established with several internationally renowned institutions, such as NGI (Nottingham Geospatial Institute) and SOPAC (Scripps Orbit and Permanent Array Center). We hence designed an open-source software for GPS PPP-AR (i.e., PRIDE PPP-AR) using Fortran 95. It has been installed and tested successfully under a few popular Linux platforms such as Ubuntu in addition to Mac OS. Released under the terms of the GNU General Public License (version 3) (GPLv3, see http://www.gnu.org/licenses/gpl.html), PRIDE PPP-AR supports various research, applications and developments through GPS single-station ambiguity resolution. It is worth noting that PRIDE PPP-AR is capable of processing high-rate GPS data (i.e., 1 Hz, 5 Hz, 10 Hz), which will be useful to GNSS seismology. The software package is hosted on the PRIDE Lab homepage (http://pride.whu.edu.cn) for efficient access. Some user-friendly shell scripts for batch processing have also been prepared along with PRIDE PPP-AR. Meanwhile, we also release phase clock/bias products at ftp://igs.gnsswhu.cn/pub/whu/phasebias/ to enable PPP-AR.

PRIDE PPP-AR is mainly composed of two modules, undifferenced GPS data processing and integer ambiguity resolution. The undifferenced processing module consists of two functions: data cleaning and least-squares adjustment. Data cleaning will identify bad measurements and detect cycle slips, while least-squares adjustment provides the core function dedicated to estimate unknown parameters such as positions, receiver clocks, troposphere delays and ambiguities. We use the undifferenced processing module to achieve ambiguity-float solutions. The other module, integer ambiguity resolution, makes use of the phase clock/bias products, which are also released by the PRIDE Lab to recover the integer nature of undifferenced ambiguities and accomplish ambiguity resolution subsequently. To show users how to use the software, we introduce here the batch processing scripts of PRIDE PPP-AR and also give some examples to show its performance.

In the following, the general description on PRIDE PPP-AR is introduced in the first section. After that, a description of the main modules of PRIDE PPP-AR is presented in detail. Some useful scripts for batch processing are introduced in the third section, and the performance of PRIDE PPP-AR is shown next. The final section is dedicated to a future plan and possible amelioration of PRIDE PPP-AR.

General description

The PRIDE PPP-AR software was designed following the principles of readability, modularity, extensibility and maintainability. These principles permit the PRIDE PPP-AR software to be utilized more flexibly and comfortably. A procedural programming language, FORTRAN-95, was used for the development which is especially suitable for numerical and scientific computations. To facilitate PPP-AR, relevant batch scripts and user-friendly tools for data collection are also released along with the software. At present, PRIDE PPP-AR supports both the Linux and the Mac OS operating system.

To achieve both flexibility and openness, PRIDE PPP-AR abides by the GNU General Public License version 3 (GPLv3, http://www.gnu.org/licenses/gpl.html). This license does not restrict the users’ development environment and allows PRIDE PPP-AR to be used in any open- or closed-source project without requiring the project to open its source code. The PRIDE Lab believes that the open-source model will be beneficial to PRIDE PPP-AR by allowing any users to make contributions in a variety of ways. Such contributions range from reporting a bug or suggesting an improvement to contributing new or improved functionalities.

Structure of PRIDE PPP-AR

This section first briefly exhibits the overall structure of PRIDE PPP-AR in Fig. 1 and then describes each module of PRIDE PPP-AR in detail. PRIDE PPP-AR is mainly composed of undifferenced processing and integer ambiguity resolution. The undifferenced processing module includes data cleaning and parameter estimation and is in charge of generating wide-lane and narrow-lane ambiguities. Float PPP solutions can be obtained afterward. Based on the ambiguity estimates, the ambiguity resolution module then uses the phase clock/bias products to fix the ambiguities to integers and finally a PPP-AR solution is achieved.

Fig. 1
figure 1

Overall structure of PRIDE PPP-AR

Undifferenced processing

The undifferenced processing has two functions: date cleaning and least-squares adjustment. Data cleaning is used to identify bad measurements and detect cycle slips. Later, least-squares adjustment is used to process raw measurements and estimate unknown parameters. The undifferenced processing module is mainly comprised of tedit (turboedit), lsq (least-squares adjustment) and redig (a posteriori residual diagnosis).

  • tedit (turboedit) In the PRIDE PPP-AR software, tedit is used to identify bad measurements and cycle slips in a RINEX observation file. The module tedit is mainly based on the pre-processing algorithms by Blewitt (1990) named “TurboEdit.” However, to satisfy the criteria for cycle-slip detection, several minutes of continuous phase data are required by TurboEdit before and after a cycle slip (Huang et al. 2016; Xiao et al. 2017). tedit improves the pre-processing algorithm of cycle-slip detection, short data-piece removal and data gap identification. More details can be found in the software manual (http://pride.whu.edu.cn). Despite this, some small cycle slips may not be identified when there are rapid ionospheric variations or serious multipath effects (Blewitt 1990; de Lacy et al. 2008; Liu 2010). We will later analyze a posteriori measurement residuals to identify remaining small cycle slips. It should be noted that we do not repair cycle slips but just mark and record them in a separate file, i.e., the rhd-file (RINEX health diagnosis), for further processing.

  • lsq (least-squares adjustment) The module of lsq is used to process raw measurements and estimate unknown parameters such as positions, receiver clocks, tropospheric delays and ambiguities. It is the core part of PRIDE PPP-AR, and most data processing of PPP is implemented within this module. PPP float solutions can be obtained through this module.

In general, all parameters to be estimated are introduced for a single receiver. Because PRIDE PPP-AR uses dual-frequency receiver data by default, the ionospheric-free combination observable is used to remove the first-order ionospheric delays (Hofmann-Wellenhof et al. 2012). The impacts of higher-order delays on the positions are normally minimal and hence are ignored currently in PRIDE PPP-AR (Petrie et al. 2010; Ueda et al. 2007). Moreover, tropospheric delays are first corrected with the Saastamoinen model for a priori wet and dry delays (Saastamoinen 1973). Then, the residual zenith delays are estimated as piece-wise constants or random-walk parameters for each epoch with the Global Mapping Function (GMF) or Vienna Mapping Function 1 (Boehm et al. 2006a, b; Niell 1996). Finally, the receiver clock is estimated as a white-noise-like parameter and the ambiguities are estimated as real-valued constants over each continuous arc. The wide-lane ambiguities are estimated in the lsq module using the Hatch–Melbourne–Wübbena combination measurements (Hatch 1982; Melbourne 1985; Wübbena 1985).

Besides this estimation strategy, PPP is complicated by the antenna phase center offset and variation, the phase wind-up effect, the relativistic effect, the station displacement effects and the intra-frequency pseudorange biases (Hofmann-Wellenhof et al. 2012; Kouba and Héroux 2001; Yan and Yang 2017). The processing strategy of GPS PPP is summarized in Table 1.

Table 1 Summary of the processing strategy of GPS PPP
  • redig (a posteriori residual diagnosis) The module redig is used to analyze a posteriori measurement residuals derived from lsq in order to identify remaining small cycle slips and bad measurements. This module has three functions: the first is to remove huge residuals; the second is to remove short periods of data (e.g., < 10 min); the third is to check big jumps between adjacent epochs and mark a new ambiguity at this epoch. Iterations between the lsq and the redig modules are carried out until no new ambiguities are detected. After analyzing the a posteriori residuals, the rhd-file will be updated accordingly.

Integer ambiguity resolution

The module of integer ambiguity resolution is used to fix the wide-lane and narrow-lane ambiguities to achieve PPP-AR solutions. An overview of this module is shown in Fig. 2. The core part is arsig (ambiguity resolution at a single receiver).

Fig. 2
figure 2

Overview of the ambiguity resolution module

The procedure for ambiguity resolution is divided into three steps:

First, based on the PPP float solutions, the wide-lane ambiguities are fixed to the nearest integer using a bootstrapping method (Teunissen 1998).

Second, once wide-lane ambiguities are fixed, the float narrow-lane ambiguities are obtained. Unlike wide-lane ambiguities, the integer candidates for narrow-lane ambiguities are identified by means of the LAMBDA (Least‐squares AMBiguity Decorrelation Adjustment) method if a short period of data is used. However, if the observation period is as long as 24 h, the float narrow-lane ambiguities can be fixed directly to their nearest integers using a bootstrapping method. This is because there are a large number of ambiguities to be resolved over 24 h, and consequently the LAMBDA method will become inefficient.

Third, after the wide-lane and narrow-lane ambiguities are fixed, the results about integer ambiguities are generated in a separate file, i.e., the con-file. In the next round of lsq processing, these integer ambiguities will be introduced as hard constraints to achieve ambiguity-fixed solutions.

Batch processing

Considering that PRIDE PPP-AR consists of so many sub-modules, it would be painstaking for users to be familiar with each one. Thus, we provide an easy-to-use batch processing shell script named “pride_pppar.” It will automatically perform GPS data processing utilizing PRIDE PPP-AR according to the command line arguments. The common way to call “pride_pppar” is “pride_pppar config date_start date_end y/n.” Here, the first argument “config” means the configuration file of PRIDE PPP-AR and it needs to be edited manually by users. Through the configuration file, users can set the processing time span, data sampling rate, GPS satellites to be excluded, stations to be involved, mapping functions, positioning modes, etc. (detailed description of the configuration file can be found in the user manual). The second and the third arguments denote the start and end epochs of data processing, respectively. The fourth argument is the AR switch. Here, “y” means that a fixed solution is desired while “n” means a float solution.

After “pride_pppar” starts, it carries out three jobs in sequence, i.e., (1) table and product preparation, (2) data cleaning, (3) final processing. Status information and error messages will be printed to the screen while the shell script is running. If necessary, users can debug the software according to these messages. Once “pride_pppar” is successfully executed, all the results will be placed within individual folders named “year/doy” (day of year) in the working directory. Users can refer to the manual for a detailed description of all the result files.

Along with the source code, we also provide a few examples for the users to learn the software quickly. After running the “test.sh” script, users should check the correctness of their results with reference to our benchmark results. Also, a configuration file template is provided in the example. Then, the users can start their own customized PPP processing with PRIDE PPP-AR easily.

Performance of PRIDE PPP-AR

One month of 24-hour GPS measurements at about 511 IGS reference stations in January of 2018 is used to test PRIDE PPP-AR (Fig. 3). The models and processing strategies used in the test are shown in Table 1.

Fig. 3
figure 3

Station distribution. About 511 stations are chosen as test stations

We use CODE (Centre for Orbit Determination in Europe) final products because the satellite attitude model of PRIDE PPP-AR is consistent with that of CODE. Note that PRIDE lab provides phase clock/bias products at ftp://igs.gnsswhu.cn/pub/whu/phasebias/. To show the performance of software and products, we show the solutions from both float PPP and ambiguity-fixed PPP using our phase clock/bias products in the following.

Daily solutions

For each station, we compute the float PPP and fixed PPP with our products over 1 month (January 2018). To assess the accuracy of the daily solutions, the IGS weekly solutions are used as a reference value. In this comparison, a seven-parameter Helmert transformation is applied to eliminate the systematic deviation. A threshold of five times the standard deviation is set up to remove those outliers within the transformed position residuals. Then, the RMS of transformed position residuals for all involved stations in IGS weekly positions is evaluated. Table 2 shows the means of all daily RMS statistics. Compared with the RMS statistics of float PPP for all three components, i.e., 2.85, 1.68 and 5.68 mm, the fixed PPP with our phase clock/biases products has obviously smaller RMS statistics of 1.43, 1.59 and 5.31 mm, respectively, for the east, north and up components. Especially for the east component, it is improved by about 49.8% with a mean fixing rate of 95.6%.

Table 2 Mean of all daily (January 2018) RMS (mm) of transformed position residuals for all involved stations when comparing the float and fixed PPP solutions with the IGS weekly positions

Moreover, Fig. 4 shows the RMS of the transformed position residuals with float solutions in contrast to those with fixed solutions for all involved stations over the month. Each dot in figure represents one station. Most dots are below the dashed line in the panel for the east component, whereas no such phenomenon can be identified in the other two panels. Based on these statistics, we can demonstrate that the ambiguity-fixed daily positions outperform those float solutions, especially for the east component.

Fig. 4
figure 4

RMS of the transformed position residuals with daily float solutions in contrast to those with daily fixed solutions for each station over 1 month. Each dot denotes one station, and all involved stations are present within each panel. Note that the up component has a different scale compared with the horizontal components

Sub-daily solutions

In addition, to assess the accuracy of the sub-daily solutions, the whole 24-hour daily observations are divided into 24 1-hour sub-daily parts. And the daily solutions are used as reference values. Only solutions with more than four ambiguities fixed are accounted in the following statistics. Table 3 presents the mean value of all sub-daily RMS (mm) for all test stations. Note that here we do not use the seven-parameter Helmert transformation anymore. The fixed PPP with our phase clock/bias products has visibly smaller RMS statistics for all three components, i.e., 1.04, 0.64 and 2.01 cm, in contrast to the RMS statistics of float PPP with 3.17, 1.24 and 3.17 cm, respectively, for the east, north and up components. The three components are improved by about 67.2%, 48.4% and 36.6%, respectively, with a mean fixing rate of 97.17%.

Table 3 Mean of all sub-daily (January 2018) RMS (mm) for all involved stations when comparing float and fixed PPP solutions with our daily solutions

Moreover, Fig. 5 shows the RMS of the position errors with float solutions in contrast to those with fixed solutions for each station over 1 month of 2018. Each dot in figure represents one station. In the three panels, most dots are below the dashed line. Compared with the daily solution (Fig. 4), the performance of PPP-AR is more effective. The ambiguity-fixed sub-daily positions not only outperform those float solutions in the east component, but also have an evident improvement for the other two components.

Fig. 5
figure 5

RMS of sub-daily float solutions in contrast to those with sub-daily fixed solutions for each station over 1 month. For each day, the whole 24-hour daily data observations are divided into 24 1-hour sub-daily parts. The daily solution is used as reference solutions for float solutions and fixed solutions. Each dot denotes one station and about 500 stations are present within each panel. Note that the up component has a different scale compared with the horizontal components

Kinematic solutions

Here, we only exemplify the position time series of one station (ZIMM) to demonstrate the performance of kinematic solutions for PRIDE PPP-AR. The float and fixed PPP solutions are illustrated in Fig. 6. RMS of the differences of kinematic solution with respect to daily solutions is shown in figure. Compared with the RMS statistics of float PPP for all three components, i.e., 0.67, 0.52 and 1.62 cm, the fixed PPP solutions with our phase clock/biases products have slightly smaller RMS statistics of 0.54, 0.43 and 1.32 cm, respectively, for the east, north and up components. PPP-AR can reduce the noise in all three components in contrast to float PPP solutions.

Fig. 6
figure 6

Twenty-four-hour kinematic solutions (cm) with respect to daily solutions for the east, north and up components at station ZIMM on January 1, 2018. Float solutions and fixed solutions are presented using black, blue traces, respectively. Traces within each panel have been offset by about 2 or 4.5 cm to avoid overlap. Note that the up component panel has a different vertical scale

In addition, the mean RMS of kinematic solutions of all test stations is used to demonstrate the performance of fixed PPP compared with float PPP in Fig. 7. The statistic value is presented in Table 4. Compared with the RMS statistics of float PPP for all three components, i.e., 1.08, 0.92 and 2.51 cm, the fixed PPP with our phase clock/bias products has smaller RMS statistics of 0.77, 0.83 and 2.32 cm, respectively, for the east, north and up components with a mean fixing rate of 98.36%. In the three components, fixed solutions have a less significant improvement compared with the float solution in contrast to the daily solutions (Fig. 5) and sub-daily solutions (Fig. 6).

Fig. 7
figure 7

RMS of kinematic float solutions in contrast to those with kinematic fixed solutions for each station over 1 month. Each dot denotes one station and about 500 stations are present within each panel. Note that the up component has a different scale compared with the horizontal components

Table 4 Mean of all kinematic (January 2018) RMS (mm) for all stations used in test when comparing float and fixed PPP solutions with the daily solutions

Tropospheric solutions

With PRIDE PPP-AR, we can also obtain tropospheric estimates and the results are recorded in the tropospheric solution file, i.e., the ztd-file. To show the performance of the tropospheric estimate, the troposphere of the IGS solution is used as truth benchmark. RMS of the tropospheric float solutions in contrast to those with tropospheric fixed solutions for each station over 1 month is shown in Fig. 8. The fixed solutions do not have an obvious improvement compared with the float solutions. This is because the daily tropospheric solutions of float PPP have already achieved a high accuracy and the fixed tropospheric solutions do not improve the accuracy of the tropospheric estimate significantly.

Fig. 8
figure 8

RMS of troposphere float solutions in contrast to those with tropospheric fixed solutions for each station over 1 month. Each dot denotes one station, and all involved stations are present within this figure

Conclusions and prospects

The open-source software PRIDE PPP-AR has been presented, and the main modules are illustrated in detail. To show users how the software works, we introduce processing procedure and usage. Some user-friendly tools and shell scripts have also been provided with the software package PRIDE PPP-AR. To show the performance of PRIDE PPP-AR, daily solutions, sub-daily solutions, kinematic solutions and troposphere solutions are discussed. A detailed manual and some demonstration examples are also presented on the website http://pride.whu.edu.cn. Furthermore, some other new research achievements are also shown on the website. PRIDE lab is committed to persistently improve its functionalities and update the software version. The software is also available at the GPS Tool Box website at: https://www.ngs.noaa.gov/gps-toolbox.