Start
Learn GNSS positioning one calculation at a time.
Begin with the observation time and file contents, compute the satellite state and corrections, then solve a receiver position. After Single Point Positioning (SPP), learn integer ambiguity search with LAMBDA, then apply it while building a two-receiver double-difference baseline.
Before you begin
You can start the file and time lessons with basic arithmetic. The positioning lessons also use vectors, matrix multiplication, least squares and covariance. Keep the GNSS glossary nearby for terms such as pseudorange, ECEF, ambiguity and residual. Each lesson explains its own input units and conventions.
Read the time tag and the measurements
Identify the time scale, convert a calendar epoch to GPS seconds-of-week, and read the RINEX header before interpreting a measurement column. Code observations are distances; carrier phase observations are recorded in cycles.
Check your understanding: Can you identify the epoch, satellite, observation type and unit in a RINEX row?
Compute the satellite position
Read the broadcast navigation parameters, distinguish the clock reference time from the orbit reference time, and propagate a GPS satellite to its transmission time in Earth-centred, Earth-fixed coordinates.
Check your understanding: Can you explain why satellite position must be evaluated at transmission time rather than reception time?
Model corrections and satellite geometry
Follow the ionospheric and tropospheric correction arithmetic, then use the design matrix to understand how satellite geometry affects formal position precision. DOP describes geometry; it does not measure every source of positioning error.
Check your understanding: Can you separate an observation correction from the effect of satellite geometry?
Assemble Single Point Positioning
Combine pseudorange observations, satellite clock and orbit calculations, Earth rotation and atmospheric models. Build the linearized system, solve weighted least squares and inspect the iterative position and receiver clock estimates.
Check your understanding: Can you trace one observation from raw code to an observation-minus-computed value and a design-matrix row?
Search integer ambiguities with LAMBDA
Use the float ambiguity estimate and covariance to follow reduction, integer search, back-transformation and candidate ranking. Inspect the ratio diagnostic while keeping integer estimation separate from operational validation.
Check your understanding: Can you explain why the best integer candidate is not automatically a validated fix?
Estimate a double-difference baseline
Match two receivers at a common epoch, choose a reference satellite, form code and phase differences, and propagate their covariance. The worked example holds the rover coordinates fixed and estimates the rover-to-base baseline, following its source execution convention.
Check your understanding: Can you explain which clock terms cancel and why observations sharing a reference satellite are correlated?
Already working with GNSS data?
Start with SPP if you want to connect code measurements to a position. Continue with LAMBDA once you understand single-receiver observation models and covariance. Its supplied float ambiguity example follows decorrelation, search and candidate comparison directly. Then study Double Difference to see how real two-receiver observations produce those inputs and a baseline solution. SP3 interpolation is a separate branch for understanding precise orbit products; the broadcast SPP lesson does not require it.
Explore SP3 files and interpolation