UAV Systems Engineering · Module 2
M2-T3: GNSS receivers and positioning
Metres, decimetres or centimetres: the positioning mode, not the receiver brand, sets the accuracy class and what the link to a base station must do.
A UAV that must land on a pad or hold a position beside a structure cares about the difference between a 2 m and a 2 cm fix. The classes differ in what correction information they use and how it reaches the vehicle, and each has its own failure behaviour.
Learning objectives
After this lesson, you should be able to:
- Describe standalone, SBAS, DGNSS, RTK and PPP positioning and what each adds.
- State the accuracy class and typical limiting factors of each.
- Read fix type and the receiver’s accuracy estimate and use them in a monitor.
- Explain what an RTK link needs and what happens when it breaks.
Conceptual explanation
Standalone positioning uses pseudoranges alone, with broadcast ionospheric and clock models, and typically reaches metre-level accuracy in good conditions. SBAS (for example WAAS or EGNOS) broadcasts regional corrections and integrity data and improves this. DGNSS uses a nearby reference station of known position to compute pseudorange corrections that cancel errors common to both receivers. RTK goes further and uses carrier-phase measurements, resolving the integer ambiguities with a base station’s data, which can give centimetre-level relative accuracy when the ambiguities are fixed. PPP uses precise orbit and clock products without a nearby base and converges more slowly.
| Mode | Typical horizontal accuracy (good conditions) | Needs | Main limitation |
|---|---|---|---|
| Standalone | about 1–5 m | nothing | atmosphere, multipath |
| SBAS | about 1 m | SBAS satellite visible | regional coverage |
| DGNSS | decimetre to metre | base station and data link | baseline length, link loss |
| RTK (fixed) | centimetres | base or network, low-latency link, dual frequency | losing the fix, short baselines, sky view |
| PPP | decimetres, centimetres after convergence | precise products, convergence time | convergence time of tens of minutes |

Engineering intuition
Base and rover see nearly the same atmosphere and satellite errors when they are close, so differencing their observations removes most of the error: that is the idea behind DGNSS and RTK. Carrier phase is far more precise than code (millimetres versus decimetres) but ambiguous by an unknown whole number of wavelengths; once that integer is resolved (“fixed”), the precision of the carrier phase is available. Losing lock or the correction link drops the solution back to “float” or standalone within seconds, and the accuracy class changes by an order of magnitude without the position stream stopping. A UAV must therefore read the fix type and accuracy estimate, not only the position.
Mathematical formulation
Single difference between receivers a (base) and (rover) for satellite removes the satellite clock and, nearly, the atmospheric terms for a short baseline:
- baseline vector between rover and base.
- unit line of sight to satellite (almost the same at both receivers).
- integer carrier-phase ambiguity: resolving it is the core of RTK.
- carrier wavelength (about 19 cm on L1).
Baseline length matters: differential errors grow with distance (atmosphere differs), roughly millimetres per kilometre in addition to a constant term, so RTK accuracy is quoted as “x cm + ppm”. The receiver reports a horizontal accuracy estimate (a standard deviation or similar); its definition is receiver-specific, so read the interface documentation.
Architecture and data flow
Base station or network (NTRIP caster) → corrections in RTCM format → rover link (radio or cellular, via the ground station or companion) → GNSS receiver → fix with type (single, DGPS, float, fixed), accuracy estimates and age of corrections → autopilot. Monitor the age of corrections and the fix type: both degrade before the position visibly does.
Real-world UAV applications
- Precision landing and hover beside structures.
- Survey and mapping with direct georeferencing.
- Repeatable flight paths for inspection.
- Providing an absolute anchor that bounds VIO and LIO drift over long routes.
Implementation example
This runs as shown: a monitor that grades GNSS fix quality from fix type, accuracy estimate and correction age, returning the accuracy class the navigation manager may rely on. Fix-type names and thresholds are illustrative: map them from your receiver’s messages.
from dataclasses import dataclass
@dataclass
class Fix:
fix_type: str # "none", "single", "dgps", "rtk_float", "rtk_fixed"
h_acc_m: float # receiver-reported horizontal accuracy estimate
corr_age_s: float # age of RTK/DGPS corrections (inf when none)
sats: int
def accuracy_class(f: Fix) -> str:
if f.fix_type == "none" or f.sats < 5: return "unusable"
if f.fix_type == "rtk_fixed" and f.h_acc_m < 0.05 and f.corr_age_s < 5: return "cm"
if f.fix_type in ("rtk_fixed", "rtk_float", "dgps") and f.h_acc_m < 0.5 and f.corr_age_s < 10: return "dm"
if f.h_acc_m < 5: return "m"
return "poor"
assert accuracy_class(Fix("rtk_fixed", 0.02, 1.0, 18)) == "cm"
assert accuracy_class(Fix("rtk_fixed", 0.02, 30.0, 18)) == "m" # stale corrections: the cm claim must be dropped
assert accuracy_class(Fix("rtk_float", 0.3, 1.0, 16)) == "dm"
assert accuracy_class(Fix("single", 1.8, float("inf"), 12)) == "m" and accuracy_class(Fix("single", 8.0, float("inf"), 6)) == "poor"
assert accuracy_class(Fix("single", 1.0, float("inf"), 4)) == "unusable"
print("GNSS quality monitor behaves as specified")Common engineering mistakes
Reading only position
The accuracy class can drop by an order of magnitude without the stream stopping; read fix type and accuracy.
Ignoring correction age
Stale corrections silently degrade RTK to float or worse.
Long baselines with RTK
Accuracy degrades with distance; use a network solution or a nearer base.
Assuming RTK works under canopy
Fixed ambiguities need good satellite visibility and continuity.
Mixing datums
Base coordinates in one datum and the mission in another produce metre-level offsets.
Failure modes
| Failure mode | How it shows up | Likely cause |
|---|---|---|
| Fix loss | Accuracy changes from cm to | Lost corrections or lock under foliage or near structures |
| False fix | Confident fixed solution that is wrong | Wrong ambiguity resolution in poor geometry |
| Latency | Position lags during manoeuvres | Correction link latency or receiver processing delay |
| Datum offset | Constant offset between plan and flight | Base coordinates or frame mismatch |
Debugging approach
- Log fix type, accuracy estimate, correction age and satellites with every position.
- Compare against a surveyed point.
- Check the base station coordinates and datum.
- Measure link latency and drops.
Practical exercises
- Find the typical wavelength of L1 and explain why carrier phase gives millimetre-level precision.
- Define the thresholds of a monitor for a precision landing that needs 5 cm.
- Estimate RTK error for a 20 km baseline with 0.5 ppm.
- Describe what the vehicle should do when RTK drops to float during landing.
Interview questions
Write an answer in your own words, then reveal the model answer. Nothing is sent anywhere.
Question 1
What distinguishes RTK from DGNSS?
Model answer
RTK uses carrier-phase observations and resolves integer ambiguities with a base station, giving centimetre-level accuracy, whereas DGNSS only corrects pseudoranges and reaches decimetre to metre level.
Question 2
Why must a UAV monitor fix type and correction age?
Model answer
Accuracy can degrade by an order of magnitude when ambiguities are lost or corrections go stale while the receiver still outputs position.
Question 3
How does baseline length affect RTK?
Model answer
Atmospheric and orbit errors decorrelate with distance, so accuracy degrades roughly proportionally to baseline length and ambiguity resolution becomes harder.
References and further reading
Primary papers, official documentation and standards. Each claim above that is specific to a tool or version points here.
- PX4: RTK GNSS
- ESA Navipedia: positioning modes (DGNSS, RTK, PPP)
- . . . Teunissen, . Montenbruck (eds.), Springer Handbook of Global Navigation Satellite Systems, Springer, 2017.
- RTCM: standards for differential GNSS