How to GPS
GPS
GPS systems can provide ~10m accuracy out of the box. By combining samples to reduce noise and using data from other satellite systems (GNSS), we can reduce this variance to ~3-5m. DGPS (differential) introduces corrections from known reference points to reduce variance to ~1m.
RTK
RTK/PPK provides higher-resolution GPS data by pairing a moving (rover) GPS receiver with a static (base) GPS receiver. Conceptually, what we are receiving from a GPS satellite is its location, with an ~1m variance from atmospheric interference, clock drift, and signal multipath. By gathering enough samples from a static GPS (base) receiver, we can estimate the satellite's position much more accurately. Then we can broadcast this error calculation to other GPS receivers (rover) to improve their error calculations as well. GPS L1 satellites are ~12550 miles / 20.2k kilometers away, so having an error estimate from a receiver at a known location allows us to improve our triangulation/trilateration down to the ~1 cm range (+ ~1ppm, eg as the distance between our two GPS receivers increases so does our error). Applying these corrections live is called RTK (real-time kinematics), while doing them after the flight is called PPK (post-processed). PPK requires the raw UBX datastream on both the base and rover, which not all systems provide.
Initial fix
How do we compute the location of our RTK base station in the field? There are a few basic ways:
- Survey-in: Take ~5-20 minutes worth of samples from the RTK station, then average the result to produce a location estimate. This process is good to approximately ~1m, which means our rover estimates will be off by the same amount. However, now our individual rover updates (using corrections from the base) will have a few centimeters of variance, which means we can compute the relative distance between rover location updates with high precision.
- Use a different (known) RTK source to provide NTRIP data, then use that to calculate the position of our RTK base (treating it as a rover). This depends on the distance between our remote NTRIP provider and the field RTK unit, but this should allow us to calculate the location of our base station down to ~2-3cm. A variant of this is having a pre-surveyed spot for our RTK base.
- PPP: Take ~2-24+ hours worth of samples from the RTK station, then upload this data (RINEX) to a third party (OPUS/CSRS) who computes the location with approximate 1-2 cm accuracy. This is best (and slowest) method for precision.
Ntrip
Ntrip is a protocol for streaming GNSS/RTK corrections over an IP network, with a number of public/private providers.
- RTKBase -- An open source controller with built in NTRIP streaming functionality.
- rtk2go -- public NTRIP server network.
- MoDOT provides free access for testing purposes.
Tools
- F9P -- a popular chip for capturing RTK datasteams.
- Ardusimple -- tools for capturing GPS data.
- Emlid -- tools for capturing GPS data.
- RTKlib -- most workflows involve this library under the hood.
- Septentrio -- Sub-cm positioning techniques.