← Tutorials

Tutorial Series · Part 13 of 27

Carrier Phase, RTK and Why Centimetres Are Possible

Explain code pseudorange vs carrier phase, integer ambiguity and RTK.

Series Context

Navigation from First Principles

This article is part of an ordered course. Use the previous and next links to stay in sequence.

Basic GNSS code measurements are useful but relatively coarse. Carrier-phase measurements are much more precise, but they contain an unknown integer number of wavelengths.1 RTK and related techniques become powerful by using carrier phase with correction information from a reference station or network. Navipedia describes differential GNSS as using an accurately surveyed reference station to compute corrections for users nearby.2

Why centimetres are harder than metres

A phone might be metre-level under good conditions, while survey equipment can reach centimetres. The difference is not magic. It comes from measurement type, receiver quality, antenna setup, correction data, ambiguity resolution, and operating environment.

Code and carrier

A pseudorange code measurement can be thought of as a coarse ruler:

Pi=ρi+errorsP_i = \rho_i + \text{errors}

Carrier phase measures the phase of the signal wave:

Φi=ρi+λNi+errors\Phi_i = \rho_i + \lambda N_i + \text{errors}

where λ\lambda is carrier wavelength and NiN_i is an unknown integer ambiguity. The phase is precise, but the receiver initially does not know how many whole wavelengths fit between satellite and receiver.

Differential correction intuition

If a reference receiver is at a known position, it can compare measured ranges with expected ranges and estimate corrections. For nearby rovers, many satellite and atmospheric errors are correlated, so the correction can help.2

RTKLIB is a practical open-source package supporting single, DGNSS, RTK, static, moving-baseline, and PPP modes, plus standard GNSS formats such as RINEX.3

Interactive demo

The embedded playground turns those ideas into a range-ruler metaphor: code gives a wide uncertainty band, carrier phase gives a precise but repeating pattern, and ambiguity fixing depends on whether the coarse code solution can identify the right cycle count.

Interactive Demo

Carrier-Phase RTK Ambiguity Demo

Code measurements give a coarse but unambiguous range band. Carrier phase is much more precise, but it repeats every wavelength until the integer ambiguity is fixed correctly.

Code pseudorange: coarse but unambiguous Carrier phase: precise but repeats every wavelength Base station correction reduces shared error for short baselines base station rover

Controls

Reroll the measurements, then test whether the code band supports the integer candidate suggested by the carrier phase.

Status

Code measurement0.00 m
Carrier float measurement0.00 m
Shared error remaining0.00 m
Best integer candidate0
Fixed-range resultfloat only
Ambiguity statefloat only

What to watch

  • Carrier phase looks precise, but it repeats every wavelength until the integer is fixed.
  • Code measurements help bound the candidate ambiguity.
  • Longer baselines leave more shared error after correction transfer.
  • A wrong integer fix can still look internally consistent and therefore dangerous.

Try it

Increase code noise until ambiguity fixing becomes unreliable. Then reduce baseline distance and shared errors. The demo should make it clear why RTK needs both high-quality measurements and robust ambiguity resolution.

Limits of this picture

Real RTK is more complex than this: double differences, cycle slips, multi-frequency combinations, ionospheric effects, antenna phase centres, and quality control all matter. This post is for intuition, not a replacement for a surveyor’s workflow.

Footnotes

  1. ESA Navipedia, “GNSS Basic Observables”. https://gssc.esa.int/navipedia/index.php/GNSS_Basic_Observables - Reference for pseudorange and carrier-phase observables. Accessed 2026-06-11.

  2. ESA Navipedia, “DGNSS Fundamentals”. https://gssc.esa.int/navipedia/index.php?title=DGNSS_Fundamentals - Classical differential GNSS reference-station technique and pseudorange corrections. Accessed 2026-06-11. 2

  3. RTKLIB, “An Open Source Program Package for GNSS Positioning”. https://rtklib.com/ - Open-source GNSS processing package supporting single, DGNSS, RTK, PPP and RINEX formats. Accessed 2026-06-11.