RTK is a technique to improve the accuracy of gps system. Traditional GPS receivers, like one you can find in your smartphone, or on most of the robotic platforms could only determine their position with 2-4 meters accuracy. RTK can give you centimeters.
The whole GPS system is based on measuring how long does it take for a signal to travel from a satellite to the receiver. Knowing the precise orbits of the space vehicles – the ephemeris, and at least 4 travel times one can determine his position on the planet.
Given the L1 GPS carrier frequency is 1575MHz, each wave is around 19cm in length. A receiver also measures the carrier phase of each of the signals. Theoretically, this should have given us millimeter precision! So why do we still have to struggle with 2-4 meters accuracy? What are the sources of error, and what we can do to remove them?
The satellites orbit at 20 200 km above Earth surface. Transmitted signals travel through ionosphere and atmosphere and are slowed down and perturbed on the way. For example, travel time on cloudy day and in clear sky conditions would be different! Many factors can increase position error, the great thing is that we can assume that these factors do not change much in one area. Usually, the area where we can assume that most of the errors are stationary is around 40km in diameter.
There are also GPS augmentation systems (DGPS), like SBAS or WAAS that measure current signal perturbations on many ground control stations all over the world, build a error propagation model and broadcast corrections through satellites or radio. Many commercial receivers can use these signals for submeter positioning accuracy. But we want to get closer to centimeters, right?
The technology that would let us do it is called RTK (real-time kinematics). Two receivers are used, one of them is stationary and is called “base station”, the other one is the “rover”. The base station measures errors, and knowing that it is stationary transmits corrections in special format (RTCM) to the rover. The idea is simple, but not the math. Commercial systems could be subcentimeter precise and would cost you a fortune($5k+).
If you do not need the precise coordinates in real-time, you can just record the data from the rover and the base and process it afterwards thus eliminating need in constant radiolink. This method is called post processing and is the most precise among all.
Commercial grade GPS receivers usually only calculate coordinates, which are useless for RTK or post processing. The key word here is “raw data”, and you will need a receiver that outputs it. Raw data includes pseudoranges, carrier phase measurement and ephemeris data, but not coordinates. Among widely available gps receivers with raw data are: u-blox Neo or Lea with T or P postfix, Navis N-08C, Skytraq s1315f. Navio RTK comes with u-blox NEO6T.
A large open source breakthrough was made by Tomoji Takasu, who has written RTKLIB – an application for gps data processing and RTK corrections calculation. The software runs on Linux, and if you still don’t catch my drift, yes you can run it on Raspbery Pi with Navio!
There is an amazing paper on the basics of GPS navigation, which I would highly recommend to anyone interested in the topic. It is called GPS compendium, and is available from u-blox website.