Référence ARAIM — niveaux de protection RAIM avancés dans Kshana
Cette note documente l'implémentation ouverte de Kshana de l'Advanced Receiver Autonomous Integrity Monitoring (ARAIM) : l'algorithme, chaque hypothèse, le message de support d'intégrité qu'elle consomme et l'état de validation. L'implémentation se trouve dans src/raim.rs ; ce document est le complément en prose qu'un auditeur (ou un évaluateur d'achats) peut lire à côté du code.
L'ARAIM est le successeur bi-constellation et multifréquence du RAIM classique que le Working Group C (WG-C) GPS (Global Positioning System)–Galileo a défini pour prendre en charge le guidage horizontal et vertical jusqu'à LPV-200 (LPV : performance du localisateur avec guidage vertical). Il répond à une seule question pour chaque époque :
Quelle doit être la taille de la borne d'erreur de position (le niveau de protection) pour que la probabilité résiduelle d'information dangereusement trompeuse — une erreur supérieure à la borne alors que la borne est encore à l'intérieur de la limite d'alerte — reste sous le budget de risque d'intégrité
P_HMI?
1. Le message de support d'intégrité (ISM)#
L'ISM est le jeu de paramètres par constellation que l'utilisateur applique. Il est modélisé explicitement par IntegritySupportMessage :
| Champ | Symbole | Signification |
|---|---|---|
sigma_ure_m |
σ_URE / SISE (erreur du signal dans l'espace) | RMS (root mean square) de l'erreur de distance utilisé pour la précision et la continuité |
sigma_ura_m |
σ_URA / SISA (précision du signal dans l'espace) | borne de l'erreur de distance utilisée pour l'intégrité (≥ σ_URE) |
b_nom_m |
b_nom | biais de distance nominal maximal replié d'un seul côté dans la borne d'intégrité (b_k = Σ_i |s_i|·b_nom) ; voir §3 |
p_sat |
P_sat | probabilité a priori d'une panne non détectée d'un seul satellite |
p_const |
P_const | probabilité a priori d'une panne touchant toute la constellation |
IntegritySupportMessage::gps_galileo_reference() renvoie les valeurs de référence publiées du WG-C : σ_URA = 0,75 m, σ_URE = 0,67 m, b_nom = 0,75 m, P_sat = 1×10⁻⁵, P_const = 1×10⁻⁴ sur l'intervalle d'exposition. Ce sont les valeurs utilisées pour dimensionner la disponibilité de l'ARAIM dans la littérature de référence ; l'ISM opérationnel est diffusé ou assemblé au sol et est configurable par constellation. La distinction entre σ_URA (intégrité) et σ_URE (précision) est délibérée et constitue la caractéristique définissante du concept d'ISM.
.fault_priors() et .dual_fault_priors() les transmettent directement aux deux moteurs.
2. Hypothèses de panne#
L'ARAIM est une méthode de séparation de solutions à hypothèses multiples (MHSS). Pour chaque hypothèse de panne H_k, elle forme la solution toutes satellites en vue et la sous-solution qui exclut l'ensemble en panne, et borne l'erreur de position sous cette hypothèse :
- Fault-free
H_0(a priori≈ 1) : la position complète par moindres carrés avec tous les satellites en vue. - Pannes d'un seul satellite
H_i(a prioriP_satchacune) : chaque sous-solution excluant un satellite. C'est la référence de base ARAIM classique à panne unique,araim_raim. - Pannes touchant toute la constellation
H_c(a prioriP_constchacune) : la sous-solution qui retire tous les satellites d'une constellation à la fois, l'extension EU (Union européenne) ARAIM TN (note technique) / DO-316 implémentée dansaraim_dual_raim. AvecP_const = 0, elle se réduit bit pour bit àaraim_raim.
3. Niveaux de protection#
Pour chaque axe (vertical, horizontal) et chaque hypothèse, le moteur construit un mode (p_fault, threshold, σ) où le seuil est la limite de détection de séparation de solutions au multiplicateur de fausse alerte K_fa = Φ⁻¹(1 − P_fa / 2N) (une répartition de Bonferroni du budget de continuité sur les N hypothèses). Le niveau de protection est la plus petite borne PL dont le risque d'intégrité cumulé
Σ_k p_fault,k · Q( (PL − b_k − T_k) / σ_k ) ≤ P_HMI
Note d'implémentation.
b_k = Σ_i |s_{axis,i}|·b_nomest la projection unilatérale du biais nominal sur l'axe — la somme dans le pire cas des modules de gain par satellite (axis_bias_sum/horiz_bias_sum) — tirée dub_nom_mde l'ISM. L'ISM de référence du WG-C utiliseb_nom = 0.75 m; avecb_nom = 0, la borne se réduit à la forme MHSS à biais nominal nul. Le scénario exécutableintegrityexposesigma_ura_m(la borne d'intégrité utilisée pour le niveau de protection, bornée à ≥sigma_uere_met prenant cette valeur par défaut) etb_nom_m(valeur par défaut 0), de sorte que le niveau de protection est toujours dimensionné avec la borne d'intégrité σ_URA, jamais avec la précision σ_URE plus petite. Cela reste une implémentation ARAIM modélisée et non certifiée — voirINTEGRITY.md.
respecte le budget alloué ([araim_protection_level] / araim_integrity_risk). Le VPL (niveau de protection vertical) et le HPL (niveau de protection horizontal) sont les réponses verticale et horizontale. Le résultat rapporte aussi le risque d'intégrité effectivement atteint (≤ l'allocation) et si une sous-solution s'est séparée au-delà de son seuil.
C'est le contrat ARAIM explicite — « quelle doit être la taille de la borne ? » — plutôt que le risque implicite, dépendant de la géométrie, d'un RAIM classique à multiplicateur fixe.
4. Diagramme de Stanford#
StanfordDiagram accumule (error, PL) par époque par rapport à une limite d'alerte (AL) fixe et classify_stanford classe chacune comme disponible, système indisponible (PL > AL, prudent), information trompeuse (PL < erreur ≤ AL) ou information dangereusement trompeuse (erreur > AL et > PL). stanford_svg produit le nuage de points classique — la frontière d'intégrité PL = error, les repères de limite d'alerte et un marqueur coloré par époque — sous forme d'un SVG (Scalable Vector Graphics) autonome.
5. L'avantage de la bi-constellation#
Deux effets sont démontrés dans raim::tests::dual_constellation_improves_geometry_and_tolerates_a_constellation_fault :
- Géométrie / redondance — mettre en commun les satellites d'une seconde constellation resserre le HPL à panne unique : davantage de mesures et un ensemble de sous-solutions à un seul SV (SV : space vehicle, c'est-à-dire un satellite) plus grand donnent une borne strictement plus petite.
- Tolérance aux pannes de constellation — avec
P_constactif, l'utilisateur bi-constellation reste disponible lorsqu'une constellation entière peut tomber en panne (les satellites de l'autre constellation survivent), alors qu'un utilisateur mono-constellation ne peut manifestement pas être protégé contre la panne de sa propre constellation (araim_dual_raimrenvoieNone).
Une subtilité qu'il convient d'énoncer honnêtement : comme l'hypothèse de panne de constellation exige de survivre à la perte d'une constellation entière, le niveau de protection instantané en bi-constellation est borné inférieurement par la géométrie résiduelle mono-constellation — il n'est pas automatiquement plus petit que le PL GPS seul à chaque instant. Le résultat phare de la TN ARAIM de l'UE, selon lequel GPS+Galileo donne un HPL plus petit de 15–25 %, est un résultat de disponibilité cumulé sur des constellations et des positions d'utilisateur réalistes, et non une garantie par instantané.
6. État de la validation#
- Dans le dépôt, automatisé : l'algèbre MHSS (
P_const = 0⇒ panne unique bit pour bit ; une panne de constellation élargit le PL ; le budget n'est jamais dépassé), les avantages de géométrie et de panne de constellation ci-dessus, et l'exercice sur une vraie géométrie d'orbite précise (SP3, Standard Product 3) de l'IGS (International GNSS Service ; GNSS = système mondial de navigation par satellite) (tests/igs_real_data.rs), et pas seulement sur des constellations synthétiques. - Référence indépendante — l'exemple traité publié du WG-C : les niveaux de protection sont vérifiés par rapport à l'exemple numérique du sous-groupe technique ARAIM lui-même, dans
src/araim_reference.rs,tests/araim_reference_vectors.rset le jeu d'essai versionnétests/fixtures/araim_reference/wgc_araim_reference_vectors.txt(chaque vecteur porte son URL (adresse web) de récupération, sa date de récupération, le SHA-256 (SHA : Secure Hash Algorithm) du fichier source et la page). La tolérance d'acceptation est leTOL_PL = 5 × 10⁻² mpropre à la référence. Par rapport au Reference Airborne Algorithm Description Document v3.1 (2019), Annexe D : VPL 18,2926 m contre 18,3 m publié (Δ 0,0074 m), HPL 13,4063 m contre 13,45 m (Δ 0,0437 m), EMT (seuil de moniteur effectif) 7,2997 m contre 7,2998 m, σ_v,acc 1,3694 m contre 1,3694 m, et les six intermédiaires publiés de panne de constellation (σ₃⁽ᵏ⁾, σ_ss,3⁽ᵏ⁾, b₃⁽ᵏ⁾) à moins d'une demi-unité de leur dernière décimale imprimée. Le Milestone 3 Report de 2016 énonce le même exemple mais comporte deux défauts internes — une coquille de signe à la ligne 3 deG, et unK_fa,3évalué à 57 modes de panne alors que le document énonceN_fault,max = 1(12 modes) — de sorte que ses intermédiaires de géométrie se reproduisent exactement tandis que ses niveaux de protection sont consignés comme des écarts mesurés (VPL Δ 0,0171 m, HPL Δ 0,0842 m, EMT Δ 0,4806 m) et exclus du chiffre d'acceptation. Le contrôle est accessible comme type de scénarioaraim-reference-check. - Résidu honnête (externe / en attente de relecture) : le chiffre de disponibilité de 15–25 % par rapport à un instantané TLE (jeu d'éléments à deux lignes) Celestrak réel et figé en version, et le dépôt des jeux d'essai ARAIM comme enregistrement Zenodo citable. Le contrôle de référence ci-dessus ne couvre que
N_fault,max = 1(modes de panne d'un seul satellite et d'une seule constellation) ; les sous-ensembles de pannes à événements multiples simultanés, l'exclusion de panne, le contrôle de cohérence du χ² et l'étape de réallocation du double comptage de l'algorithme de référence ne sont pas implémentés, et un cas dont les a priori en auraient besoin est refusé plutôt que tronqué. - Portée par fichier de scénario : le type de scénario
integrityexécutearaim_dual_raimà chaque époque lorsque son fichier TOML (Tom's Obvious Minimal Language) définitaraim_dual = true(p_hmifacultatif) ; le fichier fourniscenarios/araim-gps-galileo.tomlle fait sur une géométrie GPS + Galileo mise en commun, ettests/araim_dual_real_data.rsexécute le même moteur sur de vrais TLE Celestrak GPS et Galileo propagés à une époque commune. Sans cet indicateur, l'exécuteur utilise le RAIM classique à séparation de solutions.
Références#
- EU–U.S. Cooperation on Satellite Navigation, Working Group C, ARAIM Technical Subgroup, Milestone 3 Report, Final Version, 25 février 2016 — Annexe A (algorithme utilisateur de référence) et §A.IX (exemple numérique). https://www.gps.gov/sites/default/files/2025-09/ARAIM-milestone-3-report.pdf
- EU–U.S. Cooperation on Satellite Navigation, Working Group C, ARAIM Technical Subgroup, Reference Airborne Algorithm Description Document, Version 3,1, 20 juin 2019 — Annexe D (exemple numérique pour LPV-200). https://web.stanford.edu/group/scpnt/gpslab/website_files/maast/ARAIM_TSG_Reference_ADD_v3.1.pdf
- EU–US (États-Unis) Cooperation on Satellite Navigation, ARAIM Technical Note.
- RTCA (anciennement Radio Technical Commission for Aeronautics) DO-316 / DO-229 MOPS (normes de performance opérationnelle minimale) ; matériel DO-316 ARAIM MASPS (normes de performance minimale des systèmes aéronautiques).
- Blanch et al., Baseline Advanced RAIM User Algorithm and Possible Improvements, IEEE (Institute of Electrical and Electronics Engineers) TAES (Transactions on Aerospace and Electronic Systems) / ION (Institute of Navigation) ITM (International Technical Meeting).
- Walter, Enge, Blanch, Pervan, Worldwide Vertical Guidance of Aircraft Based on Modernized GPS and New Integrity Augmentations (méthodologie du diagramme de Stanford).