Post-processing GNSS Data with RTKLIB - Introduction

Background and Overview

RTKLib is an open source program package for GNSS positioning. The project is packaged developed and maintained by Tomoji Takasu from the Tokyo University of Marine Science and Technology in Japan. These instructions only provide the basics of setup and operation. Please visit the RTKLIB website for more information.

Some features of RTKLIB include:

  • It supports standard and precise positioning algorithms with: GPS, GLONASS, Galileo, QZSS, BeiDou and SBAS.
  • It supports various positioning modes with GNSS for both real-time and post-processing: Single, DGPS/DGNSS, Kinematic, Static, Moving-Baseline, Fixed, PPP-Kinematic, PPP-Staticand PPP-Fixed

RTK (Real-Time Kinemtic) is an algorithm for processing measurements made from satellite navigation systems. When working with the Bad Elf GNSS Surveyor, RTKLIB is used to compute differential positioning using carrier phase measurements through post-processing of satellite data.

Note: RTKLIB is not directly supported by Bad Elf. The tools that make up RTKLIB are not commercial software and do require experience and understanding of the techniques for post-processing.

Post-processing Basics

Successful post-processing of raw data using RTKLIB requires a number of specialized files, only one of which is produced by the GNSS Surveyor.

  • A RINEX log (.obs) from the GNSS Surveyor
  • A RINEX log (.o or .obs) and nav (.n or .nav) file from a base station
  • (Optional) precise ephemeris and clock files from the IGS (.clk and/or .sp3 files)

For purposes of clarity, the GNSS Survey is referred to as the Rover. The Base is typically a CORS station or a fixed reference station that stores recorded satellite data in RINEX format. Most countries have a network of reference stations and observations that are publicly available.

Tip: The closer your reference station, the better your result. Although it is possible to achieve a result from a station 100km away, the end result will have additional accuracy error.

For more information on how to begin a raw recording session or how to offload raw recorded data consult the following help articles.

Setting up  RTKPost

Start the RTKLIB RTKPOST software, a GUI such as that shown in Figure 1 appears. From this GUI, the first step is to configure the options used for post-processing. These option will remain set unless they are changed at a future time. RTKPost also has a means to save and load configuration files. As a good measure, you should save you initial configuration should you desire to create alternate configurations in the future.

Figure 1. RTKPost primary GUI.

The following steps provide for basic configuration and setup of the RTKPOST application. Once configured, steps 4 and 6 are not required unless one desires to make changes to the configuration.

  1. Click on the ellipses “...” next to RINEX OBS: Rover. Select the RINEX file downloaded from your Bad Elf app.
  2. Click on the ellipses “...” next to RINEX OBS: Base Station. Select the RINEX file downloaded from your base station.
  3. Under RINEX *NAV/CLK, SP3… click on the ellipses “...” on the first line and select the NAV file from your base station. On the second line, optionally, select the SP3 or CLK file. SP3 and CLK files can be found on the IGS web site. The additional CLK and SP3 files provide precise ephemeris and clocks. They are required for long baselines.
  4. Click on the button labeled “Options” and ensure the following tabs are configured as shown below.

    Ensure Positioning Mode is set to static and filter type is set to Forward. Elevation mask set to 15 degrees.

    Ensure setting for Integer Ambiguity Resolution is set to Fix and Hold

    For static recordings, set Solution for Static Mode to Single

    Under Base Station, ensure RINEX Header Position is selected

  5. Click “Execute” to have RTKLIB process your data files.
  6. Click “Plot” to see your solution on a map. Alternatively click on “View” to see a text file containing the solution

Getting a Result

The final result(s) are stored in a file with the extension .POS. This position file contains information about how the position was calculated and with what level of accuracy is statistically expected. A sample output is shown below:

% program   : RTKPOST ver.2.4.3 demo5 b24
% inp file  : C:\Users\larry\Google Drive\Data Collection\2016_09_20-SDLOFFICE\2016-09-20-202818-900-160920-PT1.obs
% inp file  : C:\Users\larry\Google Drive\Data Collection\2016_09_20-SDLOFFICE\aztp2640.16o
% inp file  : C:\Users\larry\Google Drive\Data Collection\2016_09_20-SDLOFFICE\aztp2640.16n
% inp file  : C:\Users\larry\Google Drive\Data Collection\2016_09_20-SDLOFFICE\igs19152.sp3
% obs start : 2016/09/20 20:28:38.5 GPST (week1915 246518.5s)
% obs end   : 2016/09/20 20:43:18.0 GPST (week1915 247398.0s)
% pos mode  : static
% freqs     : L1
% solution  : forward
% elev mask : 15.0 deg
% dynamics  : on
% tidecorr  : off
% ionos opt : broadcast
% tropo opt : saastamoinen
% ephemeris : broadcast
% navi sys  : gps glonass sbas
% amb res   : fix and hold
% amb glo   : fix and hold
% val thres : 3.0
% antenna1  :                       ( 0.0000  0.0000  0.0000)
% antenna2  :                       ( 0.0000  0.0000  0.0000)
% ref pos   : 33.445684587 -111.937630239   361.2616
% (lat/lon/height=WGS84/ellipsoidal,Q=1:fix,2:float,3:sbas,4:dgps,5:single,6:ppp,ns=# of satellites)
%  GPST                  latitude(deg) longitude(deg)  height(m)   Q  ns   sdn(m)   sde(m)   sdu(m)  sdne(m)  sdeu(m)  sdun(m) age(s)  ratio
2016/09/20 20:28:38.500   33.624035271 -111.914980503   419.2279   1   9   0.0003   0.0004   0.0006   0.0001  -0.0004  -0.0002   3.00  999.9


Assuming good quality Rover data and a reasonable baseline to the base station, one can expect to get a fixed position; indicated by a “1” in the “Q” column. Bad Elf has performed comprehensive testing on the GNSS Surveyor and has demonstrated quality results with good sky conditions, minimal interference from natural or manmade structures, with 15 minute occupation times (standing still over one spot).

Tip: It is imperative that one understands the datum used by the base station as it may differ from WGS84. Since post-processing calculates a trajectory from the Base to the Rover, the final solution will be referenced to the Base location. If for example your Base uses coordinates based upon NAD83, your final position may be shifted 1-2 meters.

Moving GPS Receiver

If your Bad Elf is not going to be stationary then one must configure RTKPOST in Kinematic mode. Refer to the configuration pages shown in Figure 2. Change the Positioning Mode to Kinematic under the “Settings1” tab. The resultant file will now contain all the positions calculated at each epoch from the input data produced by the Bad Elf. This particular change is useful if one desires to record a track versus a static point.

Tip: If you remain stationary for 3-5 minutes before moving, the Kinematic portion of your recording will likely process better and produce a more accurate result from the starting position.

Additional Resources

There are a number of tutorials and working groups that provide additional advanced tutorials and alternate versions of RTKLIB. The list below is a sample of some of the sites we have found valuable in our experience.