Advanced Topics: Post-Processing GNSS Data With RTKlib - Introduction

Advanced Topics: 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-Static and PPP-Fixed

RTK (Real-Time Kinematic) 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.

RTKLIB is not directly supported by Bad Elf. The tools that makeup 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.

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 errors.

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, and 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. This 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 your initial configuration should you desire to create alternate configurations in the future.


Figure 1. RTKPost primary GUI.

The following steps provide for the 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 website. 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. The elevation mask is set to 15 degrees
Ensure the setting for Integer Ambiguity Resolution is set to Fix and Hold


For static recordings, set Solution for Static Mode to Single
Under Base Station, and ensure RINEX Header Position is selected
  1. Click “Execute” to have RTKLIB process your data files.

  2. 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. Sample output is shown below:

  1. % program   : RTKPOST ver.2.4.3 demo5 b24
  2. % inp file  : 2016-09-20-202818-900-160920-PT1.obs
  3. % inp file  : aztp2640.16o
  4. % inp file  : aztp2640.16n
  5. % inp file  : igs19152.sp3
  6. % obs start : 2016/09/20 20:28:38.5 GPST (week1915 246518.5s)
  7. % obs end   : 2016/09/20 20:43:18.0 GPST (week1915 247398.0s)
  8. % pos mode  : static
  9. % freqs     : L1
  10. % solution  : forward
  11. % elev mask : 15.0 deg
  12. % dynamics  : on
  13. % tidecorr  : off
  14. % ionos opt : broadcast
  15. % tropo opt : saastamoinen
  16. % ephemeris : broadcast
  17. % navi sys  : gps glonass sbas
  18. % amb res   : fix and hold
  19. % amb glo   : fix and hold
  20. % val thres : 3.0
  21. % antenna1  :                       ( 0.0000  0.0000  0.0000)
  22. % antenna2  :                       ( 0.0000  0.0000  0.0000)
  23. % ref pos   : 33.445684587 -111.937630239   361.2616
  24. %
  25. % (lat/lon/height=WGS84/ellipsoidal,Q=1:fix,2:float,3:sbas,4:dgps,5:single,6:ppp,ns=# of satellites)
  26. %  GPST                  latitude(deg) longitude(deg)  height(m)   Q  ns   sdn(m)   sde(m)   sdu(m)  sdne(m)  sdeu(m)  sdun(m) age(s)  ratio
  27. 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, 15 minute occupation times (standing still over one spot).

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.

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.

For further assistance, please contact our support team via support@bad-elf.com.



    • Related Articles

    • Advanced Topics: Trimble Business Center Basics

      Background and Overview Trimble Business Center (TBC) is a commercial software application that includes the ability to post-process L1 only RINEX data files. This introduction outlines the basic workflow for importing your RINEX files from the Bad ...
    • GNSS Surveyor: Collecting Raw Data with the Bad Elf App

      Collecting raw data with the Bad Elf app Raw logging is a feature unique to the Bad Elf GNSS Surveyor. There are two primary purposes for this capability as listed below: To collect mixed-mode NMEA/UBX files directly from the internal GPS chipset To ...
    • Collecting Raw Data With The Bad Elf App

      Collecting Raw Data With The Bad Elf App Raw logging is a feature unique to the Bad Elf GNSS Surveyor. There are two primary purposes for this capability as listed below: To collect mixed-mode NMEA/UBX files directly from the internal GPS chipset To ...
    • Accuracy Study

      Accuracy Study During the fall of 2016, Bad Elf commissioned a research report to test the accuracy of a Bad Elf GNSS Surveyor. The goal of this project was to determine if Bad Elf’s Bluetooth GPS receiver can produce consistent results at a 1-meter ...
    • Canadian Spatial Reference System

      Natural Resources Canada's (NRCAN) Canadian Geodetic Survey (CGS) provides an online application for GNSS data post-processing enabling higher accurate positioning from raw observation data. This service is unique as it allows the submission from a ...