RTKLib - GPS / GLONASS centimeter accuracy in post-processing
Unfortunately, I did not find on Habré mention of the wonderful library for processing raw measurements - RTKLib . In this regard, I ventured to write a little about how you can use it to get centimeters in relative navigation.
The goal is simple - to draw public attention.
I myself just recently started working with this library and was amazed at its capabilities for mere mortals. On the Internet there is a lot of information about practical examples, but I wanted to try it myself - and here is the result.
So, the process in general is as follows:
Suppose we have two GLONASS / GPS receivers from which we can receive raw measurements. They are called raw because they are the primary material for processing - pseudorange, doppler, phase measurements ...
Using the STRSVR utility from the RTKLib library, we need to record two data streams - one from the base station, which will be stationary, and the second from the rover, which we plan to move. It is advisable to start recording from the base in advance, 10-15 minutes before the rover is recorded.
In my case, the base was on the roof of the building, and with a rover went out into the street. I used two laptops for recording.
1) Configure Input - Serial of both laptops, this is a stream from the GNSS receiver.
2) Output - File, this will be our raw measurement file.
3) We start the recording base - Start and leisurely go to the open area.
For a small demonstration, I printed an A4 sheet with the letter H, which I wanted to circle around with an antenna, more precisely, the base for mounting on a tripod. Antenna TW3440 manufactured by the Canadian company Tallysman with a custom underlying surface of 30x30 cm.
4) We are located on the pavement, put the rover on the record and try to slowly circle the letter. Although there is a 5Hz output frequency on the rover, it's better to do everything carefully.
5) At the end of the stroke, we turn off and go to see what happened.
6) We drop both files on one computer and proceed to processing.
7) First - you need to get standard RINEX files from raw data. RTKCONV will help us with this:
8) We indicate the path to the file with raw data, as well as the folder where the program will place RINEX, the format of the raw data, in my case it is NVS BINR and in the settings we check GPS and GLO, you can leave the rest unchecked.
9) Click Convert and get the files for the rover and then for the base, it is better to place them in the appropriate folders Base and Rover.
10) Further, the most interesting is post-processing. Open the RTKPOST utility.
11) Click Options, Settings tab 1, in the mode settings, specify Kinematic to process relative measurements. We check GPS and GLO, then you can play around with the settings.
12) Output tab - you can set the output data format, for example NMEA.
13) An important point is the Positions tab, here you need to specify the coordinates of the base station, either take them from the header, or by averaging over the recording period. The more accurately we know the coordinates of the base, the more accurate will be the absolute coordinates of the rover.
For example, specify RINEX Header Position - take from the file header.
14) Click OK and go to the main window, there in the Rover field indicate the path to the RINEX file of the rover, well, for the base, the path to the corresponding file. Click Execute and wait for the result. After processing, we can see the result by clicking on Plot.
15) At the bottom of the figure it is clear that solutions with centimeter accuracy were obtained 97.3%, the rest is a floating solution, the accuracy of which is much worse.
That's all for now.
If anyone will be interested, I can write how to implement RTK mode.
It would also be nice to know your opinion: in which non-obvious applications can you use centimeter navigation solutions?