12.4 · Advanced

Measurement Noise and Filtering: From Raw Signals to Precision

Introduction

Raw GNSS measurements - pseudoranges from the DLL and carrier phases from the PLL - are not directly usable as precision positioning measurements without further processing. They contain noise, biases, and systematic errors that must be understood and managed. Filtering techniques, from the classical Hatch filter to the Kalman filter that underlies most navigation solutions, transform noisy individual measurements into precise, continuous position estimates.

Key Concept: Code pseudoranges are noisy (0.2 to 0.5 m) but absolute. Carrier phases are precise (1 to 5 mm) but contain an unknown integer ambiguity. The Hatch filter exploits both by smoothing code with carrier, while the Kalman filter provides the optimal framework for combining all measurements with their uncertainties over time.

Code vs Carrier Measurement Noise

The measurement noise levels for the two primary GNSS observables differ by approximately two orders of magnitude:

ObservableNoise (1 sigma)Bias / AmbiguityMultipath Sensitivity
Code pseudorange (L1 C/A)0.3 to 0.5 mNone (absolute)Up to several metres
Code pseudorange (L5)0.05 to 0.1 mNone (absolute)Reduced by narrow correlator
Carrier phase (L1)1 to 3 mmInteger N x 19 cmUp to tens of mm
Carrier phase (L5)1 to 3 mmInteger N x 25 cmSlightly reduced

Code measurements are absolute - no ambiguity - but noisy and multipath-sensitive. Carrier measurements are precise and multipath-robust at short time scales but require resolving the integer ambiguity N before their precision can be exploited for positioning.

The Hatch Filter (Code Smoothing)

The Hatch filter (named after Ronald Hatch, 1982) uses the precision of carrier-phase rate measurements to smooth the noisier code pseudorange. The intuition is that while the absolute carrier phase is unknown (due to ambiguity), the change in carrier phase between successive epochs is a precise measurement of range change - accurate to millimetres.

The filter recursively updates the smoothed pseudorange estimate using a running average weighted toward recent carrier-phase increments:

  • At each epoch, the code pseudorange update is blended with a carrier-phase-predicted pseudorange.
  • Over N epochs, the effective noise reduces by approximately 1/sqrt(N).
  • After approximately 100 seconds of smoothing, code pseudorange noise is reduced from ~0.3 m to ~0.03 m - approaching the uncorrected multipath floor.
Note: The Hatch filter must be reset whenever a cycle slip occurs. A cycle slip introduces a sudden integer jump in carrier phase that, if undetected, propagates into the smoothed pseudorange as a large bias. Cycle slip detection is therefore a prerequisite for reliable Hatch filtering.

The Kalman Filter in GNSS Navigation

The Kalman filter is the optimal linear estimator for a system with Gaussian noise. In GNSS navigation, it maintains a state vector - typically containing position, velocity, receiver clock offset, and clock drift - along with a covariance matrix describing the uncertainty of each state. At each measurement epoch it performs two steps:

  1. Prediction: The state is propagated forward in time using the system dynamics model (constant velocity, or IMU-based for tight integration). The covariance grows, reflecting increasing uncertainty between measurements.
  2. Update: Incoming GNSS measurements (pseudoranges, carrier phases) are compared to predictions based on the current state. The difference - the innovation - is weighted by the Kalman gain, which depends on the relative uncertainty of the prediction and the measurement. The state is updated and the covariance reduced.

The Kalman filter handles asynchronous, missing, and degraded measurements naturally - if a satellite is lost, the filter simply skips its update and relies on the prediction. This makes it well-suited to real-world GNSS environments where satellites drop in and out of view.

Extended and Unscented Kalman Filters

The standard Kalman filter is optimal only for linear systems. GNSS pseudorange measurements are nonlinear functions of receiver position (the range formula). The Extended Kalman Filter (EKF) linearises the measurement equations using Jacobians at each epoch. The Unscented Kalman Filter (UKF) uses sigma points to capture nonlinear effects more accurately, at slightly higher computational cost. For most GNSS applications the EKF is adequate; UKF is preferred in tightly coupled GNSS/IMU systems with highly nonlinear dynamics.

Measurement Weighting and Robust Estimation

Not all GNSS measurements are equally reliable. Professional receivers weight measurements by estimated quality:

  • Elevation angle: Low-elevation satellites have longer signal paths through the atmosphere, greater multipath exposure, and typically lower C/N0. Measurements are commonly weighted by sin squared elevation or derived C/N0 models.
  • C/N0: Lower signal quality implies higher measurement noise. Many receivers directly use C/N0 to set measurement variance in the Kalman filter.
  • Robust estimators: M-estimators (Huber, Danish weights) downweight measurements with large residuals, providing protection against outliers and multipath without completely excluding the measurement.

Summary

Measurement noise and filtering are what separate raw GNSS observables from precision navigation solutions. The Hatch filter reduces code pseudorange noise by an order of magnitude using carrier-phase smoothing. The Kalman filter optimally combines all measurements over time, handling the noisy, incomplete, and time-varying data that real GNSS environments deliver. Together these techniques extract centimetre-level precision from a signal chain that begins at -130 dBm - one of the most remarkable signal processing achievements in modern engineering.