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

UAV Systems Engineering · Module 2

M2-T2: GPS, GLONASS, Galileo and BeiDou

Four systems, one idea: more satellites in view means better geometry and more availability where the sky is partly blocked.

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

A UAV receiver today normally tracks several constellations at once. The systems differ in orbits and signal design, but they share the same pseudorange principle, so a multi-constellation solution is mostly a matter of bookkeeping: more equations, a few extra clock terms.

Learning objectives

After this lesson, you should be able to:

  • Name the four global constellations and their operators.
  • Compare their orbits and the frequency bands they share.
  • Explain the benefit of multi-constellation reception in obstructed sky and its cost.
  • Compute the satellite count and HDOP benefit of adding constellations in a simulation.

Conceptual explanation

The four global navigation satellite systems are the United States’ GPS, Russia’s GLONASS, the European Union’s Galileo and China’s BeiDou. Each provides signals from medium Earth orbit (BeiDou also uses geostationary and inclined geosynchronous satellites). Regional systems (QZSS, NavIC) augment coverage in specific areas, and satellite-based augmentation systems (SBAS) broadcast corrections.

One receiver, several constellationsSatellites from GPS, GLONASS, Galileo and BeiDou are all tracked by one multi-constellation receiver. Each constellation adds pseudorange equations and one extra clock-offset unknown relative to the receiver time scale, and the solution uses all of them.GPSUSGLONASSRussiaGalileoEUBeiDouChinaReceiverone solutionmore satellites: better geometry and availability under partial blockage
Multi-constellation reception: same principle, more equations.
Constellations at a glance (approximate; check the official interface control documents for exact values)
SystemApprox. orbital altitudeCommon civil frequenciesNotes
GPSabout 20 200 kmL1 1575.42 MHz, L2 1227.60 MHz, L5 1176.45 MHzCDMA signals
Galileoabout 23 200 kmE1 1575.42, E5a 1176.45, E5b 1207.14 MHzCDMA, shares L1/L5 centre frequencies with GPS
GLONASSabout 19 100 kmL1 near 1602 MHz, L2 near 1246 MHzFDMA on legacy signals, with CDMA signals added in newer satellites
BeiDouabout 21 500 km (MEO), plus GEO and IGSOB1I 1561.098, B1C 1575.42, B2a 1176.45 MHzregional emphasis over Asia-Pacific in the GEO/IGSO part
Animation of a sky plot over six hours for an observer at 45 degrees north. Satellites of four idealised constellations, GPS, Galileo, GLONASS and BeiDou, move across the sky, and a chart counts the satellites above 10 degrees elevation, comparing GPS alone with all four constellations together.
Idealised circular orbits with approximate public parameters (spares, BeiDou GEO and IGSO satellites and real orbit perturbations are not modelled). With four constellations the number of visible satellites is roughly three times that of GPS alone, so a fix survives partial blockage. (Looping, about 5 seconds; drawn and computed for this course with illustrative values.)

Engineering intuition

Satellites below the local horizon mask or hidden behind buildings do not count. In a street canyon you may see a third of the sky; with only GPS that might be five satellites in a poor arrangement, with four constellations perhaps fifteen in better spread. That is the real benefit of multi-constellation reception for a UAV: availability and geometry, not a magic improvement of the individual measurement.

The price: more channels to track (more receiver power and a more capable chip), an inter-system time offset to estimate, and more exposure to a faulty satellite in any one constellation (integrity checks matter).

Mathematical formulation

With KK constellations the unknown vector is (x, y, z, b1, …, bK)(x,\,y,\,z,\,b_{1},\,\ldots ,\,b_{K}): one clock term per constellation, because each system has its own time scale. A receiver with nn satellites in total needs n≥3+Kn\ge 3+K, so a four-constellation receiver needs seven satellites for a full solution (practical receivers estimate the inter-system offsets slowly or use broadcast values to keep n≥4n\ge 4 sufficient):

Multi-constellation pseudorange model
ρi=∥si−r∥+c bk(i)+εi,i=1,…,n\rho_i = \lVert\mathbf s_i - \mathbf r\rVert + c\,b_{k(i)} + \varepsilon_i, \qquad i = 1,\dots,n
k(i) is the constellation of satellite i. DOP comes from (HᵀH)⁻¹ as in lesson M2-T1, with H having K clock columns.
kk(i)
index of the constellation that satellite ii belongs to.
bkb_{k}
receiver clock offset relative to system k’s time scale.

Architecture and data flow

The receiver module does the multi-constellation processing and outputs one position, velocity and time fix with quality indicators (satellite counts per constellation, DOP, accuracy estimates). The autopilot configures which constellations are enabled (receiver-specific messages such as UBX configuration for u-blox receivers; consult the receiver documentation). Enable all that the antenna, regulation and receiver allow, and log satellite counts per system.

Real-world UAV applications

  • Operating in urban canyons and under partial canopy.
  • Raising availability for low-altitude flight near buildings.
  • Cross-checking one constellation against another for integrity.
  • Selecting a receiver for a UAV that must work at high latitudes.

Implementation example

This runs as shown: a simulation of satellites randomly distributed over the sky with an elevation mask and an obstruction (a building blocking a wedge of azimuth), comparing visible satellite counts and HDOP for one versus four constellations. The satellite counts per system are rough, and the sky model is idealised.

import numpy as np
rng = np.random.default_rng(3)
SATS = {"GPS": 30, "GLONASS": 22, "Galileo": 26, "BeiDou": 35}                       # rough numbers of usable satellites per system (illustrative)

def sky(constellations):                                                              # random directions on the upper hemisphere (idealised sky)
    n = sum(SATS[c] for c in constellations)
    az = rng.uniform(0, 2 * np.pi, n); el = np.arcsin(rng.uniform(0, 1, n)); return az, el

def visible(az, el, mask_deg=15, blocked_az=(np.radians(40), np.radians(220)), blocked_el_deg=60):
    ok = el > np.radians(mask_deg)
    wedge = (az > blocked_az[0]) & (az < blocked_az[1]) & (el < np.radians(blocked_el_deg))      # a building hides half the sky below 60 degrees elevation
    return ok & ~wedge

def dop(az, el, K, constellation_index):
    u = np.stack([np.cos(el) * np.sin(az), np.cos(el) * np.cos(az), np.sin(el)], axis=1)            # east, north, up
    H = np.hstack([-u, np.zeros((len(u), K))])
    for i, k in enumerate(constellation_index): H[i, 3 + k] = 1.0
    if len(u) < 3 + K or np.linalg.matrix_rank(H) < 3 + K: return np.inf
    Q = np.linalg.inv(H.T @ H); return np.sqrt(Q[0, 0] + Q[1, 1])

def trial(constellations):
    azs, els, idx = [], [], []
    for k, c in enumerate(constellations):
        a, e = sky([c]); azs.append(a); els.append(e); idx.append(np.full(len(a), k))
    az, el, idx = np.concatenate(azs), np.concatenate(els), np.concatenate(idx); v = visible(az, el)
    return v.sum(), dop(az[v], el[v], len(constellations), idx[v])

res = {}
for name, cons in (("GPS only", ["GPS"]), ("all four", list(SATS))):
    out = [trial(cons) for _ in range(300)]
    counts = np.array([o[0] for o in out]); h = np.array([o[1] for o in out])
    res[name] = (counts.mean(), np.mean(np.isfinite(h)), np.median(h[np.isfinite(h)]))
    print(f"{name}: mean {counts.mean():.1f} visible, solution available {100 * np.mean(np.isfinite(h)):.0f}%, median HDOP {np.median(h[np.isfinite(h)]):.2f}")
assert res["all four"][0] > 3 * res["GPS only"][0] and res["all four"][1] >= res["GPS only"][1] and res["all four"][2] < res["GPS only"][2]
Satellite count, availability and HDOP in an obstructed sky for one versus four constellations (idealised model).

Common engineering mistakes

Assuming more constellations always improve accuracy

They improve availability and geometry; per-signal error sources remain.

Ignoring the receiver’s signal selection

A receiver may default to GPS plus one other; configure explicitly.

Quoting frequencies from memory

Use the official interface control documents.

Mixing ground-station and receiver time scales

Use consistent GNSS time conversions when logging.

Forgetting regulatory limits on use in a region

Check the rules for the constellations you use.

Failure modes

Failure modes, symptoms and causes
Failure modeHow it shows upLikely cause
Fewer satellites than expectedCount lower than the configured systems suggestConstellations not enabled in the receiver, antenna not wideband
Single bad satellitePosition jumpsOne faulty satellite among many without integrity checking
Poor geometry despite many satellitesHigh DOP in a canyonSatellites clustered in the open part of the sky
Inter-system bias errorSmall constant position offsetWrong inter-system time offset

Debugging approach

  1. Log satellite count and C/N0 per constellation.
  2. Compare position with different constellation sets enabled.
  3. Check the receiver’s configuration messages and the antenna’s supported bands.
  4. Look at DOP and the sky plot, not only the satellite number.

Practical exercises

  1. Find the minimum number of satellites for a solution with three constellations.
  2. Re-run the simulation with an elevation mask of 25∘25^{\circ} and compare.
  3. Add the blocking wedge to a wider azimuth range and see when GPS-only fails.
  4. Read the interface control document of one system and list its civil signals.

Interview questions

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

Question 1

Why do multi-constellation receivers help UAVs?

Model answer

More satellites are visible in obstructed sky, giving better geometry and more availability, though the individual measurement errors are unchanged.

Question 2

Why does each constellation add an unknown?

Model answer

Each system has its own time scale, so the receiver clock offset relative to each system differs; these offsets are estimated or taken from broadcast values.

Question 3

What is a downside of multi-constellation tracking?

Model answer

More channels (power and cost), more bookkeeping, and exposure to a faulty satellite from any system unless integrity checks are used.

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-T3: GNSS receivers and positioning

Compare standalone, SBAS, DGNSS and RTK positioning and their accuracy classes.