Tutorial Series · Part 13 of 27
Carrier Phase, RTK and Why Centimetres Are Possible
Explain code pseudorange vs carrier phase, integer ambiguity and RTK.
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:
Carrier phase measures the phase of the signal wave:
where is carrier wavelength and 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.
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.
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
-
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. ↩