Skip to the content
FixTheRobot Explore Robotics / UAV / Module 2 / M2-T4

UAV Systems Engineering · Module 2

M2-T4: GNSS errors and multipath

Every metre of GNSS error has a source; some can be modelled away, some cancelled by differencing, and multipath can only be avoided or averaged.

  • Lesson 4 of 16
  • UAV Navigation and GNSS-Denied Operations
  • Established engineering
  • About 5 minutes to read

The error budget of a pseudorange is a sum of independent terms with different spatial and temporal behaviour. Knowing which term dominates in a given situation tells you whether to add a second frequency, a base station, or a better antenna location.

Learning objectives

After this lesson, you should be able to:

  • List the pseudorange error sources and their typical behaviour.
  • Apply the dual-frequency ionosphere-free combination and see its noise cost.
  • Compute the carrier-phase multipath error bound and explain why code multipath is larger.
  • Choose a mitigation for each error source.

Conceptual explanation

A pseudorange contains: satellite clock and orbit errors (largely removed by broadcast corrections or precise products), ionospheric delay (signal slowed by free electrons, frequency dependent, metres to tens of metres), tropospheric delay (neutral atmosphere, mostly modelled, elevation dependent), multipath (reflected signals mixed with the direct one, environment dependent), and receiver noise (thermal and tracking-loop noise).

Error sources and mitigationsSatellite orbit and clock errors are removed by broadcast or precise corrections; ionospheric delay by dual-frequency combination or differencing; tropospheric delay by modelling; multipath only by antenna and site design or averaging; receiver noise by filtering.Orbit + clockcorrectionsIonospheretwo frequencies / differencingTropospheremodel + elevation weightingMultipathantenna, site, maskReceiver noisefilteringmultipath is the error that no correction service removes
Each error source has a different cure.
Animation of ground-reflection multipath. A satellite signal reaches an antenna 1.5 metres above the ground along a direct path and along a path reflected from the ground. As the satellite elevation rises from 10 to 90 degrees the extra path length of the reflection, two times the antenna height times the sine of the elevation, grows from about half a metre to 3 metres, and a chart plots that extra length.
Extra path length of a ground reflection, Δ=2 h sin⁡\Delta =2\,h\,\sin (elevation), for an antenna 1.5 m above the ground. A reflection arriving within about one code chip of the direct signal (hundreds of metres for the GPS C/A code) distorts the correlation peak and biases the pseudorange. (Looping, about 5 seconds; drawn and computed for this course with illustrative values.)

Engineering intuition

Errors that are common to nearby receivers (orbit, clock, most of the atmosphere) can be differenced away; errors specific to the antenna’s surroundings (multipath, receiver noise) cannot. A UAV is a bad place for an antenna: the airframe, the battery, the payload and the ground below reflect signals, and the propellers shadow low-elevation satellites. That is why antenna placement (on a mast, away from carbon fibre and the companion computer) often does more for accuracy than a more expensive receiver.

Mathematical formulation

The ionospheric delay is proportional to 1/f21/f^{2}, so two frequencies f1f_{1}, f2f_{2} give the ionosphere-free combination:

Dual-frequency ionosphere-free combination
PIF=f12 P1−f22 P2f12−f22P_{\mathrm{IF}} = \frac{f_1^{2}\,P_1 - f_2^{2}\,P_2}{f_1^{2} - f_2^{2}}
Noise amplification
σIF≈2.98 σP(GPS L1/L2)\sigma_{\mathrm{IF}} \approx 2.98\,\sigma_P \quad(\text{GPS L1/L2})

For carrier-phase multipath with a reflected signal of relative amplitude α≤1\alpha \le 1 and relative phase δ\delta , the phase error is:

Carrier-phase multipath error
ψ(δ)=arctan⁡ ⁣(αsin⁡δ1+αcos⁡δ)\psi(\delta) = \arctan\!\left(\frac{\alpha\sin\delta}{1 + \alpha\cos\delta}\right)
max⁡∣ψ∣=arcsin⁡α≤π2  ⟹  error≤λ4\max\lvert\psi\rvert = \arcsin\alpha \le \frac{\pi}{2} \;\Longrightarrow\; \text{error} \le \frac{\lambda}{4}
About 4.8 cm on L1.

Code multipath is much larger (up to a significant fraction of the code chip length, metres) because the code correlation function is wide: this is why differencing and carrier smoothing are standard. Tropospheric delay of order 2.3 m at zenith grows roughly as 1/sin⁡1/\sin (elevation), so low satellites are down-weighted.

P1P_{1}, P2P_{2}
pseudoranges on two frequencies.
α\alpha
ratio of reflected to direct signal amplitude.
δ\delta
relative phase of the reflected signal.

Architecture and data flow

Receiver: tracks signals, applies broadcast ionospheric and tropospheric models in standalone mode, uses dual-frequency combinations when available, weights satellites by elevation and C/N0, and reports accuracy estimates. The autopilot should log⁡ C/N0\log \,C/N0 and satellite elevations: patterns in them point to multipath or blockage (lesson M2-T5).

Real-world UAV applications

  • Deciding whether to buy a dual-frequency receiver.
  • Placing the antenna on the airframe.
  • Interpreting position noise near buildings.
  • Setting elevation masks and weights.

Implementation example

This runs as shown: the iono-free combination removes a simulated 1/f21/f^{2} ionospheric delay exactly and amplifies noise by about 2.98, and the multipath bound is checked numerically.

import numpy as np
f1, f2 = 1575.42e6, 1227.60e6                      # GPS L1 and L2
rng = np.random.default_rng(0)

rho = 22_000_000.0                                  # true range (m)
iono_L1 = 6.0                                       # ionospheric delay on L1 (m); delay scales as 1/f^2
iono_L2 = iono_L1 * (f1 / f2) ** 2
sigma = 0.3
n = 20000
P1 = rho + iono_L1 + sigma * rng.standard_normal(n)
P2 = rho + iono_L2 + sigma * rng.standard_normal(n)
P_if = (f1**2 * P1 - f2**2 * P2) / (f1**2 - f2**2)
print(f"single-frequency bias {np.mean(P1) - rho:.2f} m; iono-free bias {np.mean(P_if) - rho:.3f} m; noise amplification {np.std(P_if) / sigma:.2f}")
assert abs(np.mean(P_if) - rho) < 0.02 and abs(np.mean(P1) - rho - 6.0) < 0.02
assert abs(np.std(P_if) / sigma - 2.98) < 0.1                                  # the well-known factor for L1/L2

lam = 299792458.0 / f1
d = np.linspace(0, 2 * np.pi, 20001)
for alpha in (0.1, 0.5, 1.0):
    psi = np.arctan2(alpha * np.sin(d), 1 + alpha * np.cos(d))
    assert abs(np.max(np.abs(psi)) - np.arcsin(alpha)) < 1e-3 * (1 + alpha)
assert abs(lam / 4 - 0.0476) < 2e-4                                            # the quarter-wavelength bound on L1 is about 4.8 cm
Ionosphere-free combination and its noise cost; the carrier-phase multipath bound.

Common engineering mistakes

Placing the antenna near the companion computer or USB 3 cables

Broadband noise raises the noise floor.

Ignoring elevation weighting

Low-elevation satellites carry more atmospheric and multipath error.

Believing a second frequency removes multipath

It removes the ionosphere; multipath remains.

Mounting the antenna low on a carbon-fibre body

Shadowing and reflections degrade the signal.

Using the receiver’s accuracy estimate as truth

It is a model, not a measurement; verify against a reference.

Failure modes

Failure modes, symptoms and causes
Failure modeHow it shows upLikely cause
Metre-level wander near buildingsSlow position oscillationMultipath from facades
Noisy position with the payload onPosition scatter increases when the computer bootsElectromagnetic interference at the antenna
Vertical jumpsHeight changes without motionIonospheric disturbance or poor VDOP
Position bias after satellite changeSmall steps when satellites rise or setPer-satellite errors not averaged

Debugging approach

  1. Plot C/N0 versus elevation: it should fall smoothly; dips indicate obstruction or multipath.
  2. Compare position noise with the payload on and off.
  3. Check dual-frequency tracking in the receiver status.
  4. Move the antenna to a mast and repeat.

Practical exercises

  1. Compute the delay ratio between L1 and L2 and check the factor used in the code.
  2. Estimate the tropospheric delay at 15∘15^{\circ} elevation from 2.3 m at zenith with the 1/sin⁡1/\sin (el) rule.
  3. Compute the iono-free combination noise for L1/L5.
  4. Plan an antenna test comparing two mounting positions.

Interview questions

Write an answer in your own words, then reveal the model answer. Nothing is sent anywhere.

Question 1

What are the main pseudorange error sources?

Model answer

Satellite orbit and clock, ionosphere, troposphere, multipath and receiver noise.

Question 2

What does the ionosphere-free combination do and what does it cost?

Model answer

It cancels the 1/f21/f^{2} ionospheric delay using two frequencies, at the price of amplifying noise by about three times for L1/L2.

Question 3

Why is multipath a particular problem for UAVs?

Model answer

Airframe and ground reflections and nearby electronics affect the antenna, and no correction service removes multipath, so antenna placement and masking are the main defences.

References and further reading

Primary papers, official documentation and standards. Each claim above that is specific to a tool or version points here.

What’s next

Mark this lesson

Saved in this browser and synced to your account when you are signed in.

Next lesson

M2-T5: GNSS signal blockage

Predict where GNSS degrades (urban canyons, indoors, under canopy) and read DOP and satellite counts.