Comment les constellations GNSS diffusent le temps#

Pourquoi#

Ce guide utilise le terme générique “GNSS” (Global Navigation Satellite System) plutôt que “GPS”, parce que le récepteur utilisé ici, comme la plupart des récepteurs modernes, ne se limite pas à la constellation américaine : il peut recevoir simultanément GPS, Galileo, GLONASS et BeiDou. Comprendre comment ces systèmes diffusent réellement l’heure, et comment un récepteur en extrait à la fois sa position et l’heure exacte à partir du même signal, aide à mieux diagnostiquer les soucis de réception et à comprendre pourquoi certains réglages du projet sont ce qu’ils sont.

Les quatre grandes constellations#

SystèmeOpérateurSatellites (nominal)AltitudePériode orbitale
GPSÉtats-Unis (US Space Force)24, 6 plans à 55°20 200 km11 h 58 min
GalileoUnion européenne (ESA)~24-30, 3 plans23 222 km14 h 05 min
GLONASSRussie24, 3 plans19 100 km11 h 15 min
BeiDou (BDS-3)Chine~30, orbites mixtes MEO/IGSO/GEO~21 500 km (MEO)~12 h 55 min (MEO)

Toutes sont des constellations en orbite terrestre moyenne (MEO, Medium Earth Orbit), positionnées de façon à ce qu’un récepteur au sol voie en permanence plusieurs satellites de chaque système à la fois, un prérequis indispensable pour calculer une position, comme on le voit plus loin.

Le récepteur utilisé dans ce projet (u-blox NEO-M9N) peut recevoir jusqu’à quatre constellations simultanément. Plus de satellites visibles signifie une meilleure géométrie de calcul (DOP, Dilution Of Precision plus faible) et une plus grande résilience si une partie du ciel est masquée.

Comment un satellite diffuse l’heure#

Chaque satellite embarque deux à quatre horloges atomiques (rubidium et/ou césium ; Galileo utilise en plus des masers à hydrogène passifs, plus stables encore). Ces horloges sont maintenues alignées sur l’échelle de temps propre à chaque système (GPS Time, Galileo System Time, etc.) par un segment de contrôle au sol, avec une précision de l’ordre de la dizaine de nanosecondes.

Chaque satellite diffuse en continu un message de navigation qui contient, entre autres :

  • Sa position précise à un instant donné (éphémérides)
  • L’heure exacte de cet instant, selon l’horloge du satellite
  • Les paramètres de correction de l’horloge du satellite par rapport à l’échelle de temps du système
  • Un almanach (positions approximatives de tous les autres satellites de la constellation)

Sur GPS par exemple, ce message est diffusé à 50 bits par seconde ; une trame complète fait 1500 bits, soit 30 secondes, découpée en 5 sous-trames.

Les échelles de temps GNSS (GPS Time, Galileo System Time…) sont continues : elles n’appliquent pas les secondes intercalaires ajoutées périodiquement à UTC. Le message de navigation inclut le décalage courant entre le temps système et UTC, ce qui permet au récepteur (et à chrony en aval, via le fichier leap-seconds.list, cf. chapitre Chrony) de faire la conversion.

Comment un récepteur calcule sa position ET l’heure#

C’est le point souvent mal compris : un récepteur GNSS ne connaît pas l’heure exacte au départ, son horloge interne (un simple oscillateur bon marché) est potentiellement décalée de plusieurs millisecondes. Il doit donc résoudre simultanément deux inconnues : où il se trouve (3 coordonnées) et quel est le décalage de sa propre horloge (1 inconnue), soit 4 inconnues au total.

Chaque satellite capté fournit une équation : la distance apparente (pseudo-distance) entre le satellite et le récepteur, déduite du temps de parcours du signal radio. Comme il y a 4 inconnues, il faut au minimum 4 satellites visibles simultanément pour que le système d’équations soit résoluble. C’est de là que vient l’exigence pratique de ce projet (voir le chapitre Vérification finale) d’avoir au moins 8 satellites utilisés, une marge confortable au-delà du minimum théorique, pour absorber le bruit de mesure et les satellites à faible élévation moins fiables.

                           ┌─────────────────────────┐
                           │  4 satellites visibles  │
                           └─────────────────────────┘
                                        │
                                        ▼
                       ┌────────────────────────────────┐
                       │  4 mesures de pseudo-distance  │
                       │    (temps de vol du signal)    │
                       └────────────────────────────────┘
                                        │
                                        ▼
                 ┌─────────────────────────────────────────────┐
                 │  Système de 4 équations à 4 inconnues :     │
                 │    • position X, Y, Z du récepteur          │
                 │    • décalage dt de l'horloge du récepteur  │
                 └─────────────────────────────────────────────┘
                                        │
                                        ▼
             ┌────────────────────────────────────────────────────┐
             │  Résolution simultanée → position ET heure exacte  │
             └────────────────────────────────────────────────────┘

Une fois ce système résolu, le récepteur connaît sa position et l’heure UTC avec une précision typique de quelques dizaines de nanosecondes sur l’horodatage : c’est cette heure qui est ensuite diffusée sur la broche PPS (chapitre Matériel et câblage) avec une précision encore meilleure, puisque le PPS n’a pas besoin de transporter l’information de position, seulement le top de seconde.

Erreurs de compréhension courantes#

  • “Le PPS donne l’heure complète”. Faux : le PPS ne donne qu’un top précis de transition de seconde, pas quelle seconde, ni quelle date. C’est le flux NMEA/UBX qui porte cette information, avec une précision bien moindre (voir le chapitre Câblage). C’est pour cela que chrony a besoin des deux flux en parallèle.
  • “Plus de satellites GPS, c’est toujours mieux qu’un mélange de constellations”. Faux en général : mélanger les constellations améliore la géométrie de réception (plus de satellites répartis dans le ciel) et la résilience, au prix d’une complexité supplémentaire (chaque système a sa propre échelle de temps, que le récepteur doit convertir en interne).
  • “Sans fix satellite, le récepteur ne renvoie rien”. Faux, voir le chapitre Acquisition GNSS/PPS : le récepteur continue d’émettre des trames NMEA avec des champs vides et un statut “invalide” tant qu’il n’a pas de fix, ce qui peut prêter à confusion si on ne vérifie pas le statut explicitement.

Vérifier#

# Vue interactive des satellites actuellement suivis, par constellation
cgps -s

# Détail brut par constellation (identifiant gnssid) :
#   0 = GPS, 1 = SBAS, 2 = Galileo, 3 = BeiDou, 5 = QZSS, 6 = GLONASS
gpspipe -w -n 5 | grep -o '"class":"SKY".*'

Sur une antenne intérieure posée près d’une fenêtre (le cas de ce projet en production), il est courant de voir une douzaine de satellites utilisés, répartis sur 2 à 3 constellations différentes.


📚 Pour aller plus loin

  • Le format du message de navigation GPS L1 C/A (fréquence 1575,42 MHz, codage CDMA, 50 bits/s) est spécifié dans IS-GPS-200 (Interface Specification, dernière révision N).
  • Les horloges atomiques embarquées sont maintenues alignées sur le Temps Atomique International (TAI) à ±10 ns par le segment de contrôle au sol (stations de Schriever Space Force Base, Colorado, et sites répartis mondialement). Voir P. Misra, P. Enge, Global Positioning System: Signals, Measurements, and Performance, 2011, chapitre 2.
  • Le principe de résolution simultanée position/temps par multilatération à 4 inconnues est décrit en détail dans le même ouvrage, ainsi que dans la documentation du NAVCENTER (US Coast Guard Navigation Center, opérateur historique de l’information publique GPS).