Traduction automatique, non relue par un locuteur natif. L'anglais fait foi.

Intégrité et interférenceModifier sur GitHubSource : docs/ARAIM_REFERENCE.md

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 priori P_sat chacune) : 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 priori P_const chacune) : 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 dans araim_dual_raim. Avec P_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_nom est 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 du b_nom_m de l'ISM. L'ISM de référence du WG-C utilise b_nom = 0.75 m ; avec b_nom = 0, la borne se réduit à la forme MHSS à biais nominal nul. Le scénario exécutable integrity expose sigma_ura_m (la borne d'intégrité utilisée pour le niveau de protection, bornée à ≥ sigma_uere_m et prenant cette valeur par défaut) et b_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 — voir INTEGRITY.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 :

  1. 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.
  2. Tolérance aux pannes de constellation — avec P_const actif, 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_raim renvoie None).

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.rs et 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 le TOL_PL = 5 × 10⁻² m propre à 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 de G, et un K_fa,3 évalué à 57 modes de panne alors que le document énonce N_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énario araim-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 integrity exécute araim_dual_raim à chaque époque lorsque son fichier TOML (Tom's Obvious Minimal Language) définit araim_dual = true (p_hmi facultatif) ; le fichier fourni scenarios/araim-gps-galileo.toml le fait sur une géométrie GPS + Galileo mise en commun, et tests/araim_dual_real_data.rs exé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).