advancedcore concept~24 min

Real-Time Kinematic (RTK)

Borrow a stationary friend's errors, subtract them, and keep the centimetres

Why it matters

RTK is how surveying, machine control, precision agriculture, and drones get real-time centimetre accuracy. It is the practical payoff of carrier phase, and the direct ancestor of network RTK and PPP-RTK — the techniques that turn raw GNSS into a precision instrument.

Prerequisites

Two receivers, one sky, a hundredfold difference

Your phone finds itself to within a few metres. A surveyor's rover, catching the same satellites through the same atmosphere, finds itself to within a couple of centimetres — in real time, while moving. That is nearly a hundredfold improvement, and it does not come from a better antenna or a fancier chip.

It comes from a friend. A second receiver, sitting perfectly still on a point whose coordinates are already known, doing nothing but listening and complaining about exactly how wrong its measurements are right now. The rover borrows those complaints, subtracts them from its own, and keeps the centimetres that fall out. That is the whole of RTK. Everything else is bookkeeping — very clever bookkeeping.

The idea, before any mathematics

Here is the key realisation. When a satellite's clock is running a nanosecond fast, it is a nanosecond fast for everyone in the neighbourhood at once. When the ionosphere over your town is thick today, it is thick for every receiver under it. These errors are not random per receiver — they are shared. And anything shared can be subtracted away.

The base station cannot tell the rover the true correction (it does not know the truth either). But it does not need to. It only needs to be wrong in the same way as the rover. If both receivers are fed the same lie by the same satellite, taking their difference deletes the lie without either one ever knowing what it was.

The catch — and the entire personality of RTK — is that word shared. Two receivers standing side by side see truly identical errors. Two receivers fifty kilometres apart look through different columns of atmosphere at different angles, and the errors no longer match. So RTK is spectacular up close and degrades with distance. The distance between base and rover has a name we will use constantly: the baseline.

RTK never makes a single measurement more accurate. It cancels the errors two receivers share — which is exactly why it lives and dies by how much they still have in common.

Seeing it

Picture the base and rover on the ground, each shooting a sightline up to the same satellite. When they stand close, those two sightlines are nearly on top of each other, slicing through the same slab of ionosphere — the errors are twins, and differencing erases them. Pull the rover away and the two sightlines fan apart, piercing the sky in different places, through different air. The errors drift out of step, and a residue survives the subtraction — small at first, then enough to matter.

Try it yourself

The base is fixed on its known point; drag the rover away with the baseline control and watch where the two sets of sightlines pierce the atmosphere.

atmosphere (ionosphere + troposphere)S0 (ref)S1S2S3baseline 2.0 kmbaseroverFIXED — centimetres
SolutionFIXED
Differential error
7.4 mm
DD residual (fix)
0.28 cm
Integers
correct ✓
Reported error
0.4 cm
Mode
L1 only

Drag the baseline out from the base station. Up close, the rover’s signals slice through nearly the same slab of atmosphere as the base’s, so double-differencing scrubs the error away, the integers fix, and you get centimetres. Push it farther and the two signal paths pierce the sky ever farther apart: the leftover differential error swells until it flips an integer. Watch the DD residual spike — that is the receiver catching its own bad fix and dropping back to the metre-level float answer. Now flick on dual-frequency: with the ionosphere removed, good fixes survive to far longer baselines. That single trade is why a survey-grade RTK rover costs what it does.

Start close: the solution reads FIXED and the reported error is centimetres. Now walk the baseline out. The differential error climbs with distance until, at some point, it shoves a carrier cycle count to the wrong integer — the panel flashes WRONG FIX, and the double-difference residual spikes. That spike is the receiver catching itself: a healthy fix leaves almost no residual, so a large one means the integers can't be trusted, and a sane system drops back to the metre-level FLOAT answer rather than lie to you. Finally, switch on dual-frequency: with the ionosphere removed, the fix survives to far longer baselines. That is the entire value proposition of an expensive rover in one toggle.

Now the mathematics

Write the carrier phase (in metres) that receiver rr measures to satellite ss as

Φrs=ρrs+c (δtr−δts)+Trs−Irs+λNrs+ε\Phi_r^s = \rho_r^s + c\,(\delta t_r - \delta t^s) + T_r^s - I_r^s + \lambda N_r^s + \varepsilon

with geometric range ρ\rho, receiver and satellite clocks δtr, δts\delta t_r,\ \delta t^s, troposphere TT, ionosphere II, the integer ambiguity NN, and noise ε\varepsilon. It is a mess — six kinds of error stapled to the one number we want.

Now difference between the two receivers AA (rover) and BB (base), same satellite ss. The satellite clock δts\delta t^s is identical for both, so it vanishes:

ΔΦs=ΦAs−ΦBs=Δρs+c Δδt+ΔTs−ΔIs+λ ΔNs+ε\Delta\Phi^s = \Phi_A^s - \Phi_B^s = \Delta\rho^s + c\,\Delta\delta t + \Delta T^s - \Delta I^s + \lambda\,\Delta N^s + \varepsilon

and over a short baseline ΔTs\Delta T^s and ΔIs\Delta I^s are nearly zero — the shared atmosphere cancels. What remains is Δδt\Delta\delta t, the difference of receiver clocks, common to every satellite. So difference again between two satellites ss and a reference 00:

∇ΔΦs0=ΔΦs−ΔΦ0=∇Δρs0+λ ∇ΔNs0+ε\nabla\Delta\Phi^{s0} = \Delta\Phi^s - \Delta\Phi^0 = \nabla\Delta\rho^{s0} + \lambda\,\nabla\Delta N^{s0} + \varepsilon

The receiver clocks are gone too. We are left with pure geometry ∇Δρs0\nabla\Delta\rho^{s0} — a function of the rover position and the (known) base position — plus a double-differenced ambiguity ∇ΔNs0\nabla\Delta N^{s0} that, because it is a difference of differences of integers, is itself an integer. That integer-ness is the whole prize: solve the least-squares problem for the rover position and the real-valued (float) ambiguities, then snap the ambiguities to their nearest integers and re-solve. The code pseudoranges do the humble but essential job of bracketing the range so you round to the right integer.

Two honesty checks live here. First, a fix is only trustworthy if the post-fix residuals are tiny; receivers apply a ratio test comparing the best integer candidate against the runner-up before believing either. Second, the neglected terms ΔT, ΔI\Delta T,\ \Delta I are not truly zero — they grow roughly in proportion to the baseline, a few parts per million, which is precisely the decorrelation you felt in the interactive.

How this appears in engineering

A real base station streams its raw observations to the rover as RTCM messages, usually over the internet via NTRIP (so your "base" is often a permanent reference station kilometres away, not a tripod you planted). To beat the baseline limit, network RTK (VRS/MAC) blends several reference stations to synthesise corrections for a virtual base right next to the rover, keeping the effective baseline short across a whole region.

The operational realities are the ones from carrier phase, now in real time: initialisation takes a few seconds to fix the integers; a cycle slip from a bridge or tree tips the rover back to float until it re-fixes; and a wrong fix is the nightmare case — confident and centimetres-to-decimetres wrong — which is why validation and multi-frequency, multi-constellation data matter so much. The output is naturally a baseline vector, most usefully expressed in the rover's local ENU frame: east, north, and up from the base.

Check your understanding

  • A satellite-clock error of 3 metres corrupts both receivers. After single differencing between receivers, how much of it remains, and why?
  • Double differencing removes the receiver clocks that single differencing left behind. What property of the leftover ambiguity does this preserve, and why does that property matter?
  • Two rovers report a FIXED solution. One is 2 cm from truth; the other is 19 cm from truth but equally confident. What most likely happened to the second, and what number would have warned you?
  • Your single-frequency RTK fixes reliably at 3 km but never at 30 km. Name the dominant error responsible and one practical way to extend the usable baseline.

Where to go next

RTK's one inconvenience is the friend: you need a base station, or a subscription to a network of them, within range. The obvious question is whether you can get the same centimetres with no local base at all — using only precise satellite orbit and clock products computed for the whole planet. You can, and the technique is Precise Point Positioning (PPP); marry it back to integer ambiguity resolution and you get PPP-RTK, the convergence of the two great branches of precise GNSS. That is the summit this arc has been climbing toward — and the engine behind GNerd's own tools.

Common misconceptions

  • RTK makes each receiver more accurate. It does not improve either receiver; it cancels the errors they share, which only works while they share them (short baselines).
  • The base station must sit at surveyed coordinates for RTK to work. RTK needs a stable, known base position; if the base coordinate is wrong, the whole baseline is offset.
  • Once fixed, RTK stays fixed. A cycle slip or a signal blockage forces re-initialisation, and a wrong fix can look confident while being centimetres-to-decimetres off.

Key takeaways

  • A base station on a known point supplies the errors the rover cannot see, to be subtracted.
  • Single differencing cancels satellite clocks; double differencing also cancels receiver clocks.
  • The double-differenced carrier ambiguity is an integer; fixing it yields a centimetre baseline.
  • Accuracy degrades with baseline length as the shared atmosphere decorrelates.
  • A large post-fix residual is the signal to reject the fix and report the float solution.

Continue exploring