|Author:||T. Takasu and other contributors.|
|License:||BSD 2, GPL >=v3 for versions before and including 2.4.2b11|
|Platform:||win ; linux ; android|
Open source program package for GNSS positioning
RTKLIB is an open source GNSS toolkit for performing standard and precise positioning. Using GNSS raw data, it is possible to do realtime and post-processing to accurately determine a position, using either a base station, precise point positioning (PPP) or precise ephemerides and clock data. The software supports all major satellite constellations (GPS, GLONASS, Galileo, BeiDou, SBAS, QZSS) and major file exchange formats. The toolkit runs with a GUI on Windows and commandline tools on Linux.
With professional receivers and antennas, it is possible to achieve centimeter accuracy, while low-cost single frequency equipment can achieve decimeter accurary.
- 1 Realtime and post-processing modes
- 2 Usage
- 3 Supported hardware
- 4 Unofficially supported hardware
- 5 Supported file formats
- 6 Source-code
- 7 Mailing list
- 8 Research
Realtime and post-processing modes
- Single enables positioning as a normal GNSS receiver using supplied ephemerides and clock data from the satellites. If the SBAS data is available for this geographic region, it can be used to improve the rover's position (Single+SBAS)
- Differential GPS/GNSS where positioning results from a rover and base station are used to improve the rover's position.
- Real Time Kinematic (RTK)
- Kinematic Raw data from a moving rover is combined with raw data from a static base station to improve the rover's position.
- Static Similar to above, but the rover is stationary.
- Moving-Baseline Similar to above, but the distance between the rover and base station is calculated irrespective of the base station's position.
- Fixed Used for RTKLIB testing.
- Precise Point Positioning (PPP)
- PPP-Kinematic Raw data from a moving rover is combined with real time predicted or non-real time measured precise ephemerides and satellite clocks to improve the rover's position.
- PPP-Static Similar to above, but the rover is stationary.
- PPP-Fixed Used for RTKLIB testing.
With the approriate GNSS antenna and receiver, it is possible to collect raw data on a windows or linux machine using RTKNAVI (or STRSVR). Open Input Streams (press the I in RTKNAVI), choose Serial type for the rover and in the configuration dialogs choose the correct COM port. Also under Cmd choose the correct initialization file for the receiver (found in the data subdirectory). Choose the correct format for the receiver. Close the dialog and open Log Streams (press the L), choose File as output for the rover and select the file destination. The raw data from the receiver should now be saved to file when pressing "Start".
Converting traces to RINEX-format
Before traces can be post-processed, they needs to be converted to the RINEX file format. This is done with RTKCONV or convbin, and the RINEX files are saved as .obs, .nav and possibly .sbs.
The RINEX files can be post-processed with RTKPOST or rnx2rtkp. The RINEX .obs-file from the rover is needed together with either
- ephemerides and clock solutions (f.ex. from IGS in .sp3 and .clk that can be downloaded using RTKGET
- RINEX file from a nearby base station
- Saved base station raw data collected with RTKLIB in real time.
Under Options:Settings1 choose the correct positioning mode, and in the tab Output choose NMEA under Solution Format. In the Positions tab either input the correct position of the base station or let RTKPOST use the position in the RINEX file.
The quality of the postprocessed RTK data strongly depends on the baseline length (distance between the base station and rover). The following figures show the static location variation for B=0.8 km and B=20.2 km
Collecting base station data in real-time
First, apply for access to an NTRIP caster (see full list) from the network you want access to:
|Name||Country||Caster address||Application Form||Reference Station locations|
|IGS-IP by BKG||Germany||||||international base stations|
|IGS-MGEX by BKG||Germany||||||international base stations using GPS, GLONASS, Galileo, QZSS|
|EUREF-IP by ASI||Italy||||||mostly European base stations|
|EUREF-IP by BKG||Germany||||||mostly European base stations|
|EUREF-IP by ROB||Belgium||||||mostly European base stations|
|RBMC by IBGE||Brazil||||||mostly Brazilian base stations|
|ASG by EUPOS||Poland||||||Polish base stations|
|Trignet by National Geospatial Information||South Africa||||||All of South Africa. Free of charge|
Then, using the correct NTRIP caster, username and password, configure either RTKNAVI or STRSVR to collect the raw data in real time as RTCM 2 or 3 and save/log it to a file.
Set up your own base station and NTRIP caster
Using a hardware receiver, configure STRSVR to input the data from the serial port. As Output, choose NTRIP Server and configure the appropriate settings for your NTRIP caster. Under Conversion Option choose Conversion from <your binary format> to RTCM 3. For Message Types enter the appropriate types as listed in the RTKLIB Manual p. 27 (f.ex. 1002(1), 1019(1)).
You also need to set up an NTRIP caster:
- Lefebure NTRIP Caster - Windows GUI, free
- BKG Standard NTRIP Broadcaster v.0.1.5 - Linux commandline, free
- BKG Professional Ntrip Broadcaster v.2.0.15 - €1000
|Brand||Device||Supported frequencies||Approximate price|
|SkyTraq||S1315F||Single frequency GPS||€100|
|NVS||NV08C BINR||Single frequency GPS and GLONASS||€250|
|U-blox||LEA-6T||Single frequency GPS||$349 €295|
|U-blox||LEA-5T||Single frequency GPS||No longer available|
|U-blox||LEA-4T||Single frequency GPS||No longer available|
|U-blox||NEO-6T||Single frequency GPS||€140|
|U-blox||NEO-6P||Single frequency GPS (also pseudoPPP)||€140|
|U-blox||EVK-6P||Single frequency GPS (also pseudoPPP)|
|U-blox||EVK-7P||Single frequency GPS (also pseudoPPP)||250,€+|
|Hemisphere||Eclipse||Dual frequency GPS, GLONASS and Galileo||From $1125|
|Hemisphere||Crescent||Single frequency GPS||Unknown|
|JAVAD||Multiple receivers supporting GRIL/GREIS||Multiple frequencies||From $1500|
|NovAtel||OEM4/V/6, OEM3, OEMStar and Superstar II||Multiple frequencies||Unknown|
Of the supported hardware, the most affordable are the single frequency receivers. The dual frequency receivers are more expensive but have a higher accuracy.
Unofficially supported hardware
sirf2 (with pre-XTrack firmware) and sirf4 receivers support raw data messages (MID7, MID8 and MID28) out of the box. Some sirf3-based receivers were successfully patched to enable carrier phase in MID28. Keeping the long story short, ALL ublox receivers CAN provide GPS raw data output. Recent ublox6 with external flash and ublox7-based receivers can also provide glonass raw data (soon to be supported by rtklib). To enable RXM-RAW and RXM-SFRB output on antaris4 the following CUSTOM UBX message can be used
b5 62 09 01 09 00 14 6c 00 00 00 00 00 00 ff 92 f7
For ublox6 ROM6.02 use:
to enable RXM-RAW
b5 62 09 01 10 00 dc 0f 00 00 00 00 00 00 23 cc 21 00 00 00 02 10 27 0e
to enable RXM-SFRB
b5 62 09 01 10 00 08 11 00 00 00 00 00 00 0f cc 21 00 00 00 02 11 42 4d
For ublox6 ROM7.03 use:
to enable RXM-RAW
b5 62 09 01 10 00 c8 16 00 00 00 00 00 00 97 69 21 00 00 00 02 10 2b 22
to enable RXM-SFRB
b5 62 09 01 10 00 0c 19 00 00 00 00 00 00 83 69 21 00 00 00 02 11 5f f0
RTKLIB patch providing support for TRK-SFRB can be found here: http://forum.openstreetmap.org/viewtopic.php?pid=339782#p339782 The RXM-SFRBX message on ublox6/7 flash based receivers can be used for decoding GPS almanac/ephemerides and GLONASS ephemerides. It is not yet supported for decoding the GLONASS OBS data, but the work is going on.
|Brand||Device||Module||ROM/Flash||Ext. antenna||antenna Imax/Vmax||Frequency||Approximate price||Comment|
|sirf2||NL-209PU||-||Flash2.4.2||-||-||=1 Hz||No longer available|
|U-blox4||-||EM-500||ROM5.00||mMCX||?||>10 Hz||No longer available|
|U-blox4||-||NL-507ETTL||ROM5.00||-||-||10 Hz||RAM patch|
|U-blox4||-||NL-508EUSB||ROM5.00||-||-||10 Hz||RAM patch|
|U-blox4||Wintec WBT-300||-||ROM5.00||-||-||>10 Hz||RAM patch. Supports RAW over Bluetooth.|
|U-blox4||Wintec WBT-201||-||ROM5.00||-||-||>10 Hz||RAM patch. Supports RAW over Bluetooth.|
|U-blox4||Wintec WSG-1000||-||ROM5.00||int. uFL||?||>10 Hz||RAM patch. Supports RAW over Bluetooth.|
|U-blox5||NL-402U||NL-551EUSB||EXT6.02||-||-||~2 Hz||No longer available||Flash patch for LEA-5H EXT_G50_602_LEA-5H.bdbfccefb9dbd8395dec7adece53c1f9|
|U-blox5||NL-403P||NL-550ERS||EXT6.02||-||-||~2 Hz||No longer available||Flash patch for LEA-5H EXT_G50_602_LEA-5H.bdbfccefb9dbd8395dec7adece53c1f9|
|U-blox5||NL-404P||NL-550ERS||EXT6.02||-||-||~2 Hz||No longer available||Flash patch for LEA-5H EXT_G50_602_LEA-5H.bdbfccefb9dbd8395dec7adece53c1f9|
|U-blox5||NL-422MP||NL-550ERS||EXT6.02||-||-||~2 Hz||No longer available||Flash patch for LEA-5H EXT_G50_602_LEA-5H.bdbfccefb9dbd8395dec7adece53c1f9|
|U-blox5||DFRduino||LEA-5H||EXT6.02||-||-||~2 Hz||No longer available||Flash patch for LEA-5H EXT_G50_602_LEA-5H.bdbfccefb9dbd8395dec7adece53c1f9|
|U-blox6||DFRduino||LEA-6H||EXT7.03||-||-||~2 Hz||Flash patch for LEA-6H|
|U-blox6||NL-602U||NL-651EUSB||ROM6.02||-||-||10 Hz||RAM patch|
|U-blox6||NL-602U||NL-651EUSB||EXT7.03||-||-||~2 Hz||Flash patch for LEA-6H|
|U-blox6||NL-603P||NL-650ERS||ROM6.02||-||-||10 Hz||RAM patch|
|U-blox6||NL-603P||NL-650ERS||EXT7.03||-||-||~2 Hz||Flash patch for LEA-6H|
|U-blox6||NL-604P||NL-650ERS||ROM6.02||-||-||10 Hz||RAM patch|
|U-blox6||NL-604P||NL-650ERS||EXT7.03||-||-||~2 Hz||Flash patch for LEA-6H|
|U-blox6||NL-622MP||NL-650ERS||ROM6.02||-||-||10 Hz||RAM patch|
|U-blox6||NL-622MP||NL-650ERS||EXT7.03||-||-||~2 Hz||Flash patch for LEA-6H|
|U-blox6||NL-622MP||NL-650ERS||EXT1.00||-||-||~2 Hz||Flash patch for LEA-6H. Can support RAW GLONASS, because of the low quality of its patch antenna (but with reduced C/No ratio)|
|U-blox6||Grove GPS||E-1612||ROM7.03||uFL||?||>10 Hz||$29.90||RAM patch|
|U-blox6||Xbee GPS||NEO-6M||ROM7.03||uFL||?||>10 Hz||$31.50||RAM patch|
|U-blox6||-||NL-660ERS||EXT1.00||-||-||~2 Hz||Supports RAW GLONASS (using flash image for LEA-6N)|
|U-blox6||-||NL-661EUSB||EXT1.00||-||-||~2 Hz||Supports RAW GLONASS (using flash image for LEA-6N)|
|U-blox6||-||NL-662ETTL||EXT1.00||-||-||~2 Hz||Supports RAW GLONASS (using flash image for LEA-6N)|
|U-blox6||NL-663MP||NL-661EUSB||EXT1.00||-||-||~2 Hz||Supports RAW GLONASS (using flash image for LEA-6N)|
|U-blox6||NL-664MP||NL-660ERS||EXT1.00||-||-||~2 Hz||Supports RAW GLONASS (using flash image for LEA-6N)|
|U-blox6||NL-682MP||NL-660ERS||EXT1.00||-||-||~2 Hz||Supports RAW GLONASS (using flash image for LEA-6N)|
|U-blox7||EVK-7N||NEO-7N||EXT1.01||SMA||?||>10 Hz||200,€+||Supports RAW GLONASS. Can be also used with NEO-7P RAW firmware.|
|NVS||Globalsat TR-600G||NV08C-CSM||V2.06+||SMA||/3V||10 Hz||~140,€+ ||Supports RAW GLONASS. Needs better STM32F103 firmware adaptation.|
Supported file formats
- RINEX 2.10-2.12, 3.00-3.02
- RTCM 2.3, 3.1, 3.2
- NTRIP 1.0
- NMEA 0183 (only output)
- ANTEX 1.4
- IONEX 1.0
- NGS PCV
- EMS 2.0
The source code is hosted on github .
- FOSS-GPS -- Open Source GPS-related discussion and support
- T. Takasu and A. Yasuda (2008): Evaluation of RTK-GPS Performance with Low-cost Single-frequency GPS Receivers
- T. Takasu (2009): Evaluation of GPS L1 Antenna/Receivers
- T. Takasu (2009): Development of the low-cost RTK-GPS receiver with an open source program package RTKLIB
- W. Stempfhuber, M. Buchholz (2011): A Precise, Low-Cost RTK GNSS System For UAV Applications
- D. Grieneisen (2012): Real Time Kinematic GPS for Micro Aerial Vehicles
- B. Wiśniewski, K. Bruniecki, M. Moszyński (2013): Evaluation of RTKLIB's Positioning Accuracy Using low-cost GNSS Receiver and ASG-EUPOS.
- T. Takasu (2013): PPP Ambiguity Resolution Implementation in RTKLIB v 2.4.2
- S. Carcanague (2013): Low-cost GPS/GLONASS Precise Positioning Algorithm in Constrained Environment
- S. Carcanague, O. Julien, W. Vigneau, C. Macabiau, G. Hein (2013): Finding the right algorithm - Low-Cost, Single-Frequency GPS/GLONASS RTK for Road Users