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.
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).

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 , so two frequencies , give the ionosphere-free combination:
For carrier-phase multipath with a reflected signal of relative amplitude and relative phase , the phase error is:
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 (elevation), so low satellites are down-weighted.
- ,
- pseudoranges on two frequencies.
- ratio of reflected to direct signal amplitude.
- 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 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 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 cmCommon 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 mode | How it shows up | Likely cause |
|---|---|---|
| Metre-level wander near buildings | Slow position oscillation | Multipath from facades |
| Noisy position with the payload on | Position scatter increases when the computer boots | Electromagnetic interference at the antenna |
| Vertical jumps | Height changes without motion | Ionospheric disturbance or poor VDOP |
| Position bias after satellite change | Small steps when satellites rise or set | Per-satellite errors not averaged |
Debugging approach
- Plot C/N0 versus elevation: it should fall smoothly; dips indicate obstruction or multipath.
- Compare position noise with the payload on and off.
- Check dual-frequency tracking in the receiver status.
- Move the antenna to a mast and repeat.
Practical exercises
- Compute the delay ratio between L1 and L2 and check the factor used in the code.
- Estimate the tropospheric delay at elevation from 2.3 m at zenith with the (el) rule.
- Compute the iono-free combination noise for L1/L5.
- 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 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.
- . . Groves, Principles of GNSS, Inertial, and Multisensor Integrated Navigation Systems, 2nd ed., Artech House, 2013, chapter 9.
- ESA Navipedia: GNSS error sources, ionosphere-free combination and multipath
- . . Kaplan, . . Hegarty (eds.), Understanding GPS/GNSS: Principles and Applications, 3rd ed., Artech House, 2017.