Validatiestatus
Over toleranties. “Getoetst” betekent hieronder dat een kalibratietest bevestigt dat de gesimuleerde statistiek binnen een afgedwongen drempel overeenkomt met de referentierelatie, momenteel 20–25% relatieve fout (gemiddeld over seeds) voor de relaties van Allan en het ruisbudget. De mediaan van de waargenomen overeenstemming is vaak veel nauwer (enkele procenten), maar de gegarandeerde grens is de drempel, niet de mediaan. Waar een getal als "~2%" voorkomt, is het een typische waarneming, niet de afgedwongen tolerantie. Zie Beweringen tegenover werkelijkheid.
De promotieregel#
Een rij van de machinaal gecontroleerde verificatiematrix (src/verification.rs) is alleen VALIDATED wanneer een referentie die onafhankelijk is van Kshana met de implementatie overeenkomt binnen een tolerantie die is vastgelegd voordat de vergelijking wordt uitgevoerd, in een test die in de gate draait. Deze sectie is de enige plaats waar de regel is opgeschreven; de matrix, de tekst per rij en de release notes verwijzen ernaar.
De geaccepteerde soorten onafhankelijke referentie#
| Type | Wat meetelt | Voorbeelden die al in de matrix staan |
|---|---|---|
| Gemeten | Echte gemeten gegevens van de grootheid die de rij claimt: een waarneming van de fysieke wereld, geen modeluitvoer. | De achtergehouden twee derde van een echte cesiumklokregistratie; gearchiveerde normale punten van laserafstandsmeting op de maan; de reeks Circular T UTC(k) van het BIPM (International Bureau of Weights and Measures); de terreintegel van SRTM (Shuttle Radar Topography Mission). |
| Bibliotheek | Een onafhankelijke bibliotheek of hulpmiddel van een derde partij die een eenduidig gedefinieerde grootheid op dezelfde invoer berekent, waarbij de bibliotheek de domeinberekening zelf implementeert. Overeenstemming tussen bibliotheken is alleen een echte controle omdat de grootheid één juist antwoord heeft. | allantools, Orekit, ANISE, RTKLIB, gnss_lib_py, lamberthub, pymcdm, scikit-learn, de statistische verdelingen van SciPy. |
| Naslag | Gepubliceerde referentievectoren, tabellen of verificatievoorbeelden: getallen die een norm, een instantie of een naslagwerk afdrukt zodat implementaties eraan kunnen worden gecontroleerd. | SOFA/ERFA-vectoren (Standards of Fundamental Astronomy), de SGP4-verificatievectoren van AIAA (American Institute of Aeronautics and Astronautics), de validatievoorbeelden van ITU-R (International Telecommunication Union, Radiocommunication Sector), het uitgewerkte ARAIM-voorbeeld van Working Group C, JPL (Jet Propulsion Laboratory) Horizons. |
Twee verdere maatstaven beslissen de grensgevallen. Beide zijn aangenomen voor release 0,30.
- P1, een gepubliceerde uitgewerkte waarde. Een gepubliceerde uitgewerkte waarde, berekend uit dezelfde gesloten vorm die de rij implementeert, telt als een gepubliceerde referentievector wanneer de publicatie onafhankelijk is van Kshana en de vergelijking een vermelde tolerantie vastlegt. De waarde moet als getal in de publicatie staan afgedrukt (een van een grafiek afgelezen waarde telt alleen als de leesonzekerheid binnen de vermelde tolerantie valt), en de test moet Kshana haar laten berekenen uit de invoer van de publicatie; een constante vergelijken met het document waaruit ze is overgenomen is een transcriptiecontrole, niet P1.
- P2, een onafhankelijke numerieke bibliotheek. Een onafhankelijke numerieke bibliotheek zoals numpy of LAPACK (het Linear Algebra PACKage) die een eenduidig gedefinieerde grootheid uit de lineaire algebra op vermelde invoer herberekent, telt als een onafhankelijke bibliotheek. De bibliotheek moet de decompositie-, inversie-, oplos- of kleinstekwadratenstap met haar eigen algoritme uitvoeren, op invoer die met de fixture is vastgelegd; de getoetste bewering is dan de lineaire algebra op die invoer, niet de fysieke grootheden van een representatief scenario. Een script dat een scalaire gesloten vorm opnieuw evalueert met numpy-rekenkunde is een tweede implementatie van onszelf, niet P2.
Voorwaarden die voor elke soort gelden: de onafhankelijke referentie is niet geschreven, uitgevoerd of gepubliceerd door dit project (de eigen reeks artikelen van deze repository is dus niet onafhankelijk ervan); de tolerantie staat in de test en is vastgesteld vóór de eerste vergelijking; een datagestuurde test die wordt overgeslagen wanneer haar openbare gegevens ontbreken, meldt dat bij het overslaan.
Wat niet meetelt#
- Onze eigen tweede implementatie: een tweede codepad in deze crate (
ReferenceImpl), of een script in deze repository dat dezelfde gesloten vorm opnieuw evalueert. - Overeenstemming met onze eigen eerdere uitvoer: goldens, regressiepins, snapshots of een tabel uit de eigen artikelen van dit project.
- Een transcriptie van de constanten van een bron: een coëfficiënt, voorinstelling, datasheetcijfer of parameterblad controleren aan het document waaruit het is overgenomen.
- Een ontwerpkeuze: een toewijzing, weging, drempel, alarmlimiet of representatief scenario. Voor een keuze bestaat geen externe referentie.
- Een interne identiteit: een numerieke integraal tegenover zijn eigen analytische vorm, een round trip, een inversie, een eigenschaps- of monotoniciteitstest.
- Een integratierun tegen een echte host (
IntegrationRun): een plugin laden in een echte Signal K-server of OpenCPN, of de uitvoer van een echte gate voeden aan een TCP-afnemer, en controleren dat de host de invoer accepteert en de verwachte status toont. Het toont aan dat de koppeling werkt. De host is geen onafhankelijke referentie voor enige waarde die de integratie meedraagt, dus er is niets externs om mee te vergelijken en zo'n rij (de rij maritieme integraties) is MODELLED, niet VALIDATED.IntegrationRunis een eigen soort referentie, alleen toegestaan op MODELLED rijen:integration_run_only_on_modelled_rowsinsrc/verification.rsfaalt als een VALIDATED rij die draagt, envalidated_rows_require_an_external_oracleeist al dat elke VALIDATED rijExternalDatasetis. - Aannemelijkheid op echte invoer: echte gegevens die alleen als invoer worden gebruikt, met beweringen over de ordegrootte in plaats van een vergelijking met een externe waarde.
- Een tolerantie die is gekozen nadat de vergelijking was gezien.
Hoe de regel wordt afgedwongen#
Elke VALIDATED rij geeft in validated_oracle_basis() in src/verification.rs aan op welke soort ze rust (Measured, Library, Reference, P1 of P2), de onafhankelijke bron (aangehaald uit de eigen referentietekst van de rij) en de ene test die de vergelijking draagt. De unittests naast de tabel falen wanneer een VALIDATED rij niet of tweemaal is aangegeven, wanneer een aangifte een rij noemt die niet VALIDATED is, wanneer de aangegeven bron niet die is die de referentietekst van de rij noemt of Kshana zelf is, wanneer de aangegeven test niet een test is die de rij aanhaalt, of wanneer een P2-rij geen onafhankelijke numerieke bibliotheek noemt. tests/verification_rows_declare_an_oracle_basis.rs eist vervolgens dat de aangegeven test op schijf bestaat als een echte #[test] die niet wordt genegeerd. Wat de machine niet kan controleren, is of de genoemde test vergelijkt met de aangegeven bron; dat blijft een menselijke lezing. Aantallen per soort worden hier niet getypt: de tabel is de bron.
Bestaande VALIDATED rijen opnieuw onderzocht onder de regel#
De regel is toegepast op de bestaande rijen en op toekomstige promoties.
- P1-rijen genoemd door het validatieonderzoek van 0,30, elk ondersteund: Linkbudget in één richting (de designcontroletabel van JPL Pub 82-76 voor Galileo X-band, opnieuw opgebouwd uit de regels tot op 4.6e-3 dB vrijeruimteverlies); Bandbegrensde gesloten vormen voor elk afstandsmetingssignaal (90,3 procent hoofdlobvermogen en de gepubliceerde coherente early-late-jitter); Maximale Doppler van een navigatiesatelliet in een lage baan om de aarde (de gepubliceerde cijfers van Xona Pulsar X1 en Iridium); Maximale Doppler die een stilstaande gebruiker ziet van een LEO- of MEO-baan (Table 1 van het Pulsar-artikel, 20 waarden); Doppler die een grondontvanger moet verwerken van een LEO-navigatiesatelliet (dezelfde gepubliceerde cijfers van een gevlogen baan). Elke publicatie is onafhankelijk van Kshana, drukt haar getallen af, en de test vermeldt zijn tolerantie.
- Verdere rijen die op P1 rusten, gevonden bij het heronderzoek, elk ondersteund: Ontwerpafweging voor afstandsmetingscodes (de gepubliceerde −23,9 dB Gold-kruiscorrelatie); Maancoördinatentijd (Ashby en Patla 2024, wiens controle van de maansnelheid tegen DE440 een bibliotheekcontrole is); Spectrale vermogensdichtheden van L-bandsignalen in gesloten vorm (Q-waarden van Kaplan en Hegarty); Eerste-orde ionosferische vertraging per band (de groepsvertragingsverhouding uit IS-GPS-200); Wereldgemiddelde gewichten van de signal-in-space-afstandsfout (de tabel van Montenbruck, Steigenberger en Hauschild 2018).
- P2-rijen genoemd door het onderzoek, elk ondersteund: Fisher-informatie en Cramér–Rao-waarneembaarheid (numpy
eigh/inv); Identificeerbaarheid van de maandatum; Gekoppelde ijk van maanreferentiestelsel en tijdschaal; Autonome pijplijn voor foutwaarneembaarheid in een vrij netwerk (numpy/SciPy-SVD, singular value decomposition). Elk herberekent een eenduidig gedefinieerde grootheid uit de lineaire algebra op vastgelegde invoer met een ander algoritme dan de Jacobi-eigenwaardeoplosser van Kshana. - Verdere rijen die op P2 rusten, gevonden bij het heronderzoek, elk ondersteund: Afleiding van prioriteiten met MCDA (multi-criteria decision analysis) (de eigenvector van AHP, analytic hierarchy process, door SciPy/LAPACK; de tabel Random Index die het ook reproduceert is een transcriptie en telt niet mee); Variantie van het doorlopen bij klok-holdover (SciPy
expmvan de uitgebreide matrix van Van Loan); Realisatie van het maanreferentiestelsel (een Umeyama-oplossing met numpy-SVD); CRPA-bundelvorming (controlled reception pattern antenna) (complexe oplossing met LAPACK); Kernel voor het ARAIM-beschermingsniveau op de maan (de LU-inverse van RTKLIB met SciPy-kwantielen); Consistentie van maanframe en -dynamica tussen aanbieders (een numpy-SVD-kleinstekwadratenfit van drie gepubliceerde efemeriden). - Gemarkeerd in de eerste ronde, opnieuw onderbouwd in ronde 2 van de run van 0,30. Drie rijen werden gemarkeerd als niet ondersteund door de geschreven regel. Elke rust nu op een vergelijking die is vooraf vastgelegd voordat haar fixture werd opgehaald, zodat geen rij is gemarkeerd; een unittest naast
validated_oracle_basis()legt de (nu lege) lijst vast.- Integriteit (RAIM/ARAIM/SBAS). De aangehaalde tests bevestigden vroeger alleen aannemelijkheid op echte geometrie van de IGS (International GNSS Service). De rij rust nu op drie bibliotheekreferenties: de ARAIM-solution-separation met meerdere hypothesen uit het Airborne Design Document v4.2 tegenover Stanford MAAST voor ARAIM 2 (270 echte gevallen, slechtste VPL-verschil 2.2e-3 m tegenover 0,05 m); snapshot-RAIM-detectie en -uitsluiting tegenover RTKLIB
raim_fde(2016 van 2016 beslissingen identiek) met het beschermingsniveau voor de helling; en de SBAS DO-229E L1-beschermingsniveaus tegenover Stanford MAAST op echte WAAS-uitzendingen (2868 paren binnen 1.6e-5 m). De rij zegt duidelijk dat de functies met uniforme sigmaraim::araim_raimenraim::araim_dual_raimniet conform het ADD zijn en dat de SBAS-vergelijking met dubbele frequentie op L5 een bevinding is. - Planeetposities door het zonnestelsel uit de Keplerelementen van JPL Standish. De drempel achteraf van tweemaal de nominale fout is vervangen door een vooraf vastgelegde drempel: RMS hoogstens het cijfer uit Table 8.10.1 van de Explanatory Supplement per planeet en component, tegenover JPL Horizons DE441, met de splitsing van de aarde en de ICRF-rotatie gedekt.
- Lichttijd tussen hemellichamen in het zonnestelsel. De lichttijdsolver wordt nu vergeleken met de lichttijden van Horizons binnen 1e-6 s op DE441-posities, een vooraf vastgelegde drempel die de positiedrempel niet overneemt.
- Integriteit (RAIM/ARAIM/SBAS). De aangehaalde tests bevestigden vroeger alleen aannemelijkheid op echte geometrie van de IGS (International GNSS Service). De rij rust nu op drie bibliotheekreferenties: de ARAIM-solution-separation met meerdere hypothesen uit het Airborne Design Document v4.2 tegenover Stanford MAAST voor ARAIM 2 (270 echte gevallen, slechtste VPL-verschil 2.2e-3 m tegenover 0,05 m); snapshot-RAIM-detectie en -uitsluiting tegenover RTKLIB
- MODELLED rijen die de twee beleidsregels bevorderbaar maken (alleen via de rij-voor-rij-run van 0,30, nooit door deze tekst): onder P1 de grens voor emitterlokalisatie met TDOA/FDOA (time and frequency difference of arrival), de koppeling van de relativistische klokgang aan het frame, de synchronisatiemaskers van ITU-T (Telecommunication Standardization Sector) (alleen voor maskerwaarden die de aanbevelingen als getallen afdrukken; de overgenomen knikpunten die aan zichzelf zijn gecontroleerd tellen niet mee) en de grens voor 5G-positiebepaling in niet-terrestrische netwerken (alleen als een gepubliceerd uitgewerkt cijfer wordt gevonden); onder P2 blindheid van integriteit voor gemeenschappelijke modus, het scalaire MHSS-beschermingsniveau voor tijdsynchronisatie (multiple-hypothesis solution separation) en de GLS-witmaking (generalised least squares). De twee benchmarkrijen voor timing-integriteit (de classificator voor het Stanford-integriteitsdiagram en de scorer voor integriteitsdekking) zijn regelgebaseerde classificatie, geen lineaire algebra, dus P2 bereikt ze niet; ze hebben een onafhankelijk hulpmiddel nodig, en het enige dat is gevonden (gLAB) heeft een niet-commerciële licentie.
- Consistentie met eerdere weigeringen. De Vallado-controle van de rij voor lanceervensters zou nu onder P1 kwalificeren als haar test het afgedrukte uitgewerkte voorbeeld berekent; het plan van 0,30 bevordert haar in plaats daarvan via Orekit. De crossovertabel voor maantijd per klokklasse blijft MODELLED: de tabel die ze reproduceert komt uit het eigen artikel van dit project, dat niet onafhankelijk is.
| Ruisterm | Status | Bewijs |
|---|---|---|
| Pariteit van Allan-schatters (ADEV/MDEV/TDEV/OHDEV (ADEV: Allan-deviatie; MDEV: gemodificeerde Allan-deviatie; OHDEV: overlappende Hadamard-deviatie)) | validated |
Twee controles aan primaire bronnen tegenover NIST (National Institute of Standards and Technology) SP (Special Publication) 1065 (Riley, Handbook of Frequency Stability Analysis, 2008), beide met een relatieve tolerantie van 1e-4. (1) tests/allan_reference.rs: de overlappende ADEV-, gemodificeerde ADEV-, tijdsdeviatie- en overlappende Hadamard-schatters reproduceren de deviaties voor de canonieke dataset van 10 punten NBS14 (SP 1065 Table 29/30, p. 107) bij tau = 1, 2 — de overeenstemming is in werkelijkheid ~1e-6 (bijv. overlappende ADEV (OADEV) bij τ = 2: 85,952868 tegenover 85,95287). (2) tests/allan_nist_sp1065_1000point.rs: dezelfde vier schatters reproduceren de dataset van 1000 punten uit SP 1065 §12,4 (Table 31, p. 108) bij middelingsfactoren 1 / 10 / 100, waarbij de dataset in code wordt geregenereerd uit de LCG van SP 1065 (Eq. 73) — hermetisch, geen fixture. Dezelfde gegevens en getallen uit Table-31 zijn het regressiedoel in aewallin/allantools (tests/nbs14), hier gereproduceerd zonder code van derden. Dit legt de schattersrekenkunde vast tegenover de referentie, los van de rijen voor ruis-kalibratie hieronder. |
| Pariteit van Allan-schatters op echte gemeten hardware | validated |
tests/cs5071a_reference.rs: de overlappende Allan- en overlappende Hadamard-schatters reproduceren de referentiedeviaties van Stable32 voor een echte cesiumprimaire standaard 5071A, gemeten tegen een waterstofmaser (556.990 fasesamples bij τ₀ = 1 s; 1 PPS (pulse per second) naar een teller 53230A, feb 2014; verzameld door A. Wallin, verspreid met allantools). Gecontroleerd over de hele decadeladder van τ (16 middelingsfactoren, τ = 1 s … 4×10⁴ s): goed bemonsterde factoren tot op een relatieve drempel van 1e-3 (de waargenomen overeenstemming is in werkelijkheid ≤ 3e-5, bijv. OADEV(1 s) 3.317111e-10 tegenover Stable32 3.3171e-10), schaarse factoren bij lange τ moeten binnen de afgedrukte betrouwbaarheidsband van 1‑σ van Stable32 vallen. Dit vult de synthetische NBS14-pariteit hierboven aan met een controle op een gemeten klok. Het ruwe fasebestand zijn gegevens van een derde partij zonder licentie voor herverspreiding, dus het is door git genegeerd; scripts/fetch_cs5071a.sh reproduceert het en de test drukt een overslaanmelding af (CI (continuous integration) blijft groen) wanneer het ontbreekt. Alleen de openbare referentiegetallen van Stable32 zijn vastgelegd (tests/fixtures/cs5071a/); er wordt geen code van derden gebruikt. |
| Pariteit van Allan-schatters op de canonieke Stable32 PHASE.DAT | validated |
tests/phasedat_reference.rs: de overlappende Allan-, gemodificeerde Allan- en tijdsdeviatieschatters reproduceren de referentiedeviaties van Stable32 voor PHASE.DAT — de reeks van 1001 punten die met Stable32 wordt verspreid en die onafhankelijke hulpmiddelen (bijv. allantools) als standaard regressiedoel gebruiken — over de volledige ladder van middelingsfactoren (139 factoren) tot op een relatieve drempel van 1e-3 (waargenomen ≤ 5e-5). Een tweede, onafhankelijke echte referentiereeks naast de controle met gemeten cesium hierboven. PHASE.DAT wordt meegeleverd met het commerciële hulpmiddel Stable32, dus de ruwe reeks is door git genegeerd; scripts/fetch_phasedat.sh reproduceert hem en de test wordt groen overgeslagen (CI blijft groen) wanneer hij ontbreekt. Alleen de openbare referentiegetallen van Stable32 zijn vastgelegd (tests/fixtures/phasedat/); er wordt geen code van derden gebruikt. |
| Stabiliteit van optische klokken op een echte gemeten curve | validated |
tests/optical_clock_adev_reference.rs: de inversie van de klokruisparameters (quantum_trade::qparams_from_adev_curve) reproduceert de gepubliceerde σ_y(τ) van de ⁸⁸Sr optische roosterklok van Norcia et al., Science 366:93 (2019) (Zenodo 10.5281/zenodo.3382347, CC-BY-4.0 (Creative Commons Attribution 4,0), curve opgenomen in tests/fixtures/optical_clock_adev/): de teruggevonden coëfficiënt voor witte frequentie √q_wf ≈ 4.33e-16 komt overeen met de kortetermijnstabiliteit van ≈4.7e-16/√τ uit het artikel (~10% RMS (root mean square) over de curve) en de fit detecteert een gemeten ondergrens ongelijk aan nul (q_rw > 0). Dit legt de inversie van gemeten ADEV naar ruisparameters tegen een echte optische klok vast; het voordeel in holdover tot de drempel dat erop is gebouwd, blijft MODELLED. |
| ROC (receiver operating characteristic) AUC (area under the curve) voor anomaliedetectie op echte telemetrie van ESA (European Space Agency) OPS-SAT | validated (reproduceert de labels) |
tests/opssat_ad_reference.rs: op de dataset OPSSAT-AD (Ruszczak et al. 2025, Zenodo 10.5281/zenodo.12588359, CC BY 4,0) — echte housekeepingsegmenten van OPS-SAT met anomalielabels uit de grondwaarheid — reproduceert de Mann–Whitney-ROC-AUC van Kshana (impairment_eval::auc) scikit-learn roc_auc_score tot op < 1e-9 op de achtergehouden testsplitsing (529 segmenten, 113 anomalieën), voor twee deterministische scores: een transparante detector met één kenmerk (aantal pieken per segment, AUC ≈ 0,851) en een score met diagonale Mahalanobis-afstand met 8 kenmerken, gefit op de normale trainingssegmenten (AUC ≈ 0,556); eval_stats::bootstrap_auc_ci omkadert de puntschatting met een ondergrens die boven kans uitkomt. Dit toetst de AUC-berekening op echte ESA-gegevens en de gelabelde scheiding van een transparante detector — het reproduceert niet de beste gepubliceerde maat uit het OPSSAT-AD-artikel (een gesuperviseerd FCNN (fully connected neural network), F1 ≈ 0,95), waarvoor hun getrainde model nodig is. Gegevens met CC-BY zijn opgenomen (tests/fixtures/opssat/, hermetisch); de onafhankelijke referentie wordt opnieuw gegenereerd door generate_opssat_oracle.py. |
| Synthese van functionalen van het zwaartekrachtveld (zwaartekrachtondersteunde / GNSS-vrije (GNSS: global navigation satellite system) navigatiekaart) | validated |
tests/icgem_gravity_reference.rs: de kernel voor sferisch-harmonische zwaartekrachtfunctionalen (gravity_sh::gravity_magnitude / gravity_disturbance_mgal) — de "kaartlezer" waartegen een zwaartekrachtondersteunde navigator vergelijkt — is getoetst aan de normaalzwaartekrachtnorm van GRS80 (Geodetic Reference System 1980) (Moritz 1980, aangenomen door de IAG (IAG: International Association of Geodesy)). Het GRS80-normaalveld opbouwen uit de gepubliceerde even zonale harmonischen J₂…J₈ en de zwaartekracht (gravitatie + middelpuntvliedend) op de ellipsoïde synthetiseren reproduceert de gesloten-vorm-normaalzwaartekracht van Somigliana, en de gepubliceerde waarden op de evenaar en bij de pool γ_e = 9,7803267715 / γ_p = 9,8321863685 m/s², tot op 3.5e-12 relatief over alle breedtegraden (drempel 1e-9). Dezelfde kernel laadt het toonaangevende echte ICGEM-aardmodel (International Centre for Global Earth Models) EGM2008 (Earth Gravitational Model 2008) (NGA (National Geospatial-Intelligence Agency), publiek domein via ICGEM; de lezer from_gfc wordt ook beproefd op het maanveld van GRAIL (Gravity Recovery and Interior Laboratory) in tests/agency_lro.rs) en levert een fysiek begrensde kaart van zwaartekrachtverstoringen (RMS ≈ 26 mGal, max ≈ 89 mGal bij d/o 70). Toetst de juistheid van de synthesecode; de nauwkeurigheid van zwaartekrachtondersteunde positiebepaling blijft MODELLED (er is geen openbaar traject van een gravimeter op een platform met grondwaarheid). |
| Ruissoortspecifieke edf (betrouwbaarheidsintervallen) | validated |
src/allan.rs: de χ²-betrouwbaarheidsband op elk punt van de overlappende ADEV gebruikt de ruissoortspecifieke effectieve vrijheidsgraden (de gesloten vormen uit NIST SP 1065 Table 5 voor witte en flicker-fasemodulatie, witte en flicker-frequentiemodulatie en random-walk-frequentiemodulatie (WPM/FPM/WFM/FFM/RWFM) — de eenvoudige set van Stable32), waarbij de machtswetsoort van de meetreeks wordt bepaald uit de log-loghelling van haar MDEV. Drie onafhankelijke controles: (a) de vijf formules reproduceren met de hand geëvalueerde waarden bij N=64,m=4 tot op 1e-12; (b) een Monte-Carlo-ensemble met witte FM (FM: frequentiemodulatie) (4.000 meetreeksen) meet de werkelijke chikwadraat-edf van de schatter = 2·gemiddelde²/Var(σ²) en komt binnen 20% overeen met de formule (en verslaat de conservatieve niet-overlappende telling duidelijk); (c) tests/allan_nist_sp1065_1000point.rs reproduceert de afgedrukte SP 1065 Table 32 (p. 109) edf = 146,177 voor de dataset van 1000 punten bij m=10 (witte FM) tot op 5e-3, en de 95%-betrouwbaarheidsgrenzen van de tabel (8.223942e-2 / 1.035201e-1) tot op <0,2% (het kleine residu is de Wilson-Hilferty-benadering van χ² tegenover de exacte χ² van NIST). De geëxporteerde ADEV-curve draagt per τ de bepaalde ruissoort, edf en de 95%-band. |
| Witte FM (korte termijn) | validated |
tests/calibration.rs: de gesimuleerde overlappende ADEV reproduceert de gepubliceerde sigma_y(1 s) — doorgaans binnen enkele procenten, afgedwongen drempel 20% (CSAC en het doel voor de optische roosterklok) — en de curve voor witte FM sigma_y(tau)=sigma_y(1s)/sqrt(tau) over tau = 1, 10, 100 s binnen een drempel van 25% (komt overeen met de datasheet van de CSAC (chip-scale atomic clock) 3e-10 / 1e-10 / 3e-11). |
| Random-walk-FM (lange termijn) | validated |
tests/calibration.rs: de gesimuleerde ADEV komt overeen met sigma_y^2(tau)=q_rw*tau/3 (Riley NIST SP 1065) tot op ~20% (gemiddeld over seeds). |
| Veroudering / lineaire drift | modeled + eruit gekalibreerd |
Deterministisch; de holdover-schatter verwijdert offset en veroudering met een kwadratische voorspeller, zodat het residu de stochastische grens is. Getest in src/estimator.rs / src/models.rs. |
| Kalman-schatter + integriteitsgrens | validated |
src/kalman.rs: een filter met twee toestanden (fase, frequentie) waarvan de exacte van-Loan-procesruis overeenkomt met het waarheidsmodel; doorlopen reproduceert de analytische holdovervariantie q_wf*T + q_rw*T^3/3 tot op 1e-9. De covariantie-update heeft de gestabiliseerde vorm van Joseph P⁺ = (I−KH)P(I−KH)ᵀ + KRKᵀ, die positief-semidefiniet blijft (gecontroleerd met Cholesky) over 500 predict/update-stappen bij een extreme verhouding R=1e-26 / Q≈1e-30, en overeenkomt met de naïeve vorm tot op 1e-9 waar die goed geconditioneerd is. De runlaag rapporteert Integrity als het deel van de uitvalsamples binnen de beschermingsgrens van 3 sigma (src/run.rs). |
| Zelfconsistentie van het filter (NIS (normalised innovation squared) / NEES (normalised estimation error squared)) | validated (model) |
src/filter_health.rs: een Monte-Carlo-consistentiebeoordeling (Bar-Shalom §5,4). De gepoolde NIS → 1 en NEES → 2 van het passende filter vallen binnen hun χ²-banden van 95% (de NIS-band gebruikt het gepoolde aantal witte innovaties; de NEES-band gebruikt het aantal onafhankelijke runs, omdat schattingsfouten in de tijd gecorreleerd zijn). Een test met een Q/R-mismatchsweep verifieert dat de monitor consistent=true alleen meldt bij unit-afstemming en consistent=false bij een afstemming van ×0.1/×0.5/×2/×10, waarbij NIS schaalt als ≈1/q_factor zoals afgeleid. Zichtbaar gemaakt als filter_health in de JSON (JavaScript Object Notation) van het klokresultaat en in een kaart in de playground. De χ²-banden gebruiken het Wilson–Hilferty-kwantiel (detection::chi2_inv_cdf, gecontroleerd aan een tabel). |
| Model voor tweewegs tijdoverdracht | validated (model) |
src/timetransfer.rs: de reciproke gemeenschappelijke vertraging valt exact weg in de schatting (m_AB - m_BA)/2 (met de hand afgeleid, exact) en twee eenwegsmetingen middelen tot 1/sqrt(2) (gemiddeld over seeds); de niet-reciproke differentiële vertraging is een gekleurd proces van witte FM + random-walk-FM waarvan de Allan-deviatie sigma_y^2(tau) = q_rw*tau/3 volgt (gemiddeld over seeds, ~20%, via de eigen step() van de verbinding). De parameters (per verbinding sigma_j, q_rw) zijn representatieve TWSTFT/optische (TWSTFT: two-way satellite time and frequency transfer) cijfers, niet gefit aan een specifieke terminal. |
| Beveiliging (score voor spoofdetectie) | validated (model) |
src/security.rs: de 1-sigma-ondergrens van de monitor sqrt(r/m + q_wf*tau + q_rw*tau^3/3) en de daaruit volgende minimaal detecteerbare offset van k sigma en de score [0,1] zijn met de hand afgeleid en per unit getest. Het model (innovatie / klokondersteunde detectie in RAIM-stijl (RAIM: receiver autonomous integrity monitoring)) is deugdelijk; de parameters (bewakingsvenster tau, detectiemultiplicator k, meetruis r) zijn representatief, niet gefit aan een specifieke ontvanger. |
| Detectie van spoofingaanvallen | validated (model) |
src/spoof.rs: een oplopende valse-tijdspoof wordt gemarkeerd wanneer zijn offset de detectiegrens van de klok overschrijdt; de detectietijd komt tot op één rasterstap overeen met de met de hand afgeleide start + bound/rate, en een klok waarvan de grens de specificatie overschrijdt, laat de spoof de drempel ongemerkt bereiken. Dezelfde voorbehoud representative-parameters als bij de score voor beveiliging. |
| Flicker-FM (ondergrens) | modeled (standaard uit) |
Gesynthetiseerd als een som van logaritmisch verdeelde Ornstein-Uhlenbeck-processen (OU) gekalibreerd op een instelbare vlakke ADEV-ondergrens; src/models.rs toetst dat de ondergrens vlak is over de middelingstijd en op het ingestelde niveau ligt (gemiddeld over seeds). Per klok in te schakelen via flicker_floor. De aangehaalde referentiescenario's laten het uit: de CSAC wordt over zijn datasheetbereik (1-1000 s) gedomineerd door witte FM en de systematische ondergrens van de optische klok (~5e-17) wordt vertegenwoordigd door zijn nauwkeurigheidscijfer. |
| Statistiek van het Monte-Carlo-ensemble | validated (aggregatie) |
src/ensemble.rs: percentielen volgens de dichtstbijzijnde rang en het gemiddelde over runs reproduceerbare realisaties; één enkele run laat de spreiding instorten, de band per tijdstap is geordend p05 <= p50 <= p95, en herhaalde runs zijn bitidentiek. Dit is statistische aggregatie over de al getoetste enkele run, geen nieuw fysisch model. |
| Klok | sigma_y(1 s) | Bron |
|---|---|---|
| csac-sa45s (CSAC) | 3.0e-10 | Microchip SA65 / datasheet van de SA.45s |
| optical-sr-lattice (Sr-rooster) | 1.0e-15 | strontium optische roosterklok, doel gericht op de ruimte, arXiv:1503,08457 |
Status: witte FM en random-walk-FM getoetst; veroudering gemodelleerd en eruit gekalibreerd; flicker-FM gemodelleerd en getoetst (standaard uit in de aangehaalde scenario's).
Maturiteit: de cijfers van de optische klok zijn het doel gericht op de ruimte op grondhardware -- er is nog nooit een optische strontiumklok gevlogen. Laboratorium-Sr-klokken halen 4.8e-17 (Oelker et al. 2019, Nature Photonics). De cijfers van de CSAC komen van een commercieel onderdeel dat in gebruik is.
Relaties: Riley, NIST SP 1065, Eq. 67 -- witte FM sigma_y^2(tau)=h0/(2 tau); random-walk-FM sigma_y^2(tau)=(2 pi^2/3) h_-2 tau, gelijkwaardig aan q_rw*tau/3 voor een frequentie-Wienerproces met diffusie q_rw.
Pack 2 — inertiële dead-reckoning (quantum inertiële meeteenheid)#
| Term | Status | Bewijs |
|---|---|---|
| Constante/resterende bias -> positie | validated |
positiefout = 0,5bT^2-familie (Groves AESS (Aerospace and Electronic Systems Society) Tutorial); met de hand afgeleide discrete test in src/inertial/mod.rs. |
| Velocity random walk (witte versnelling) | validated |
src/inertial/mod.rs: de gesimuleerde standaarddeviatie (SD) van de positiefout komt overeen met sigma_x(T)=sqrt(S_a*T^3/3) (Groves vgl. 54) tot op ~12% waargenomen (gemiddeld over seeds; afgedwongen drempel 20%). |
| Natuurkunde van de koudeatoom-interferometer-versnellingsmeter (CAI) (vanuit eerste beginselen) | validated (model) |
src/inertial/quantum_imu.rs: een koudeatoominterferometer van Mach-Zehnder met drie pulsen. Met de hand geverifieerd aan de geometrie uit het leerboek — Rb-87 k_eff = 4pi/lambda ~ 1.611e7 rad/m; Phi = k_eff*a*T^2 ~ 1.580e4 rad bij 1 g, T = 10 ms; projectieruis sigma_Phi = 1/(C*sqrt(N)) = 2e-3 rad bij C = 0.5, N = 1e6; per shot sigma_a ~ 1.24e-6 m/s^2; de schaalwetten 1/T^2 en 1/sqrt(N); exponentieel verval van het contrast. q_va() leidt de PSD (power spectral density) van de witte versnelling af die de klassieke AccelModel verbruikt. Eerlijke reikwijdte: alleen de ondergrens van quantumprojectieruis (~0,09 ug/sqrtHz hier) — ver onder echte, door trillingen beperkte apparaten (1-50 ug/sqrtHz); de trillingstensor, Coriolis en systematische lichtverschuiving zijn nog niet gemodelleerd (zie QUANTUM.md). |
| Gyrobias + angular random walk (ARW) -> kanteling -> koppeling met zwaartekracht | modeled (standaard uit) |
Een resterende gyrobias en ARW veroorzaken een standfout; de kanteling koppelt zwaartekracht (g*theta) in de horizontale specifieke-krachtfout. src/inertial/mod.rs toetst de pure kubische positiegroei door bias exact en de groei van de standfout door ARW als een Wienerproces (gemiddeld over seeds). Per sensor in te schakelen via gyro_bias en q_arw; uit in de aangehaalde scenario's met alleen versnellingsmeters. |
| Biasinstabiliteit (1/f-flickerondergrens) | modeled (standaard uit) |
src/inertial/mod.rs: een 1/f-flickerproces (dezelfde OU-synthese die voor de klok is getoetst) waarvan de vlakke ondergrens van de Allan-deviatie op de biasinstabiliteitscoëfficiënt ligt; nul is een no-op, een ondergrens ongelijk aan nul verandert het traject, beide reproduceerbaar. Per sensor in te schakelen via bias_instability. |
| Acceleration random walk (rate random walk) | validated |
src/inertial/mod.rs: de bias is een Wienerproces met Var(bias_rw(T)) = q_aa*T, gecontroleerd gemiddeld over seeds tot op ~20%. Per sensor in te schakelen via q_aa. |
| Kruisvalidatie met NaveGo (ruiscoëfficiënten van een IMU (inertiële meeteenheid)) | validated |
tests/navego_imu_crossval.rs: een externe kruiscontrole tegen NaveGo (R. Gonzalez, opensource-toolbox voor INS/GNSS (INS: inertial navigation system), github.com/rodralez/NaveGo). Reproduceert de synthetische round trip van navego_example_allan.m van NaveGo op zijn gepubliceerde referentieprofiel van de Microstrain 3DM-GX3-35: onze overlappende ADEV-schatter (getoetst aan NBS14/Stable32) aansturen met witte sensorruis op de 1-σ-niveaus van NaveGo levert de coëfficiënten van velocity en angle random walk (VRW, ARW) (ADEV(1 s) = σ·√dt) terug tot op < 5% (werkelijk ~0,4%), met de tak van witte ruis op de helling −1/2. Bevestigt dat onze Allan-keten en de definities van VRW/ARW van NaveGo overeenkomen. Het opgenomen STIM300-.mat-log van 40 MB wordt niet ingelezen (afhankelijk van het binaire formaat). |
| Schaalfactor, fijnere kruisasstermen | not modeled in dit pack met 1-DOF (één vrijheidsgraad) |
Het oudere pack met één as heeft geen fout door schaalfactor of kruiskoppeling. De driassige strapdownbibliotheek en het pack gnss-ins modelleren wel schaalfactor, misalignment, g-gevoeligheid, kwantisatie en rate ramp (src/inertial/imu_errors.rs; zie de tabel met beweringen hieronder). |
| Sensor | biasstabiliteit | ruis-wortel-PSD | Bron |
|---|---|---|---|
| cold-atom-quat (quantum) | 5.88e-7 m/s^2 (60 ng, 24 h) | 22 ug/sqrtHz = 2.16e-4 (m/s^2)/sqrtHz | Templier et al. 2022, Science Advances (arXiv:2209,13209) |
| nav-grade-quartz (klassiek) | 1.57e-3 m/s^2 (~160 ug) | ~20 ug/sqrtHz = 1.96e-4 (m/s^2)/sqrtHz | Honeywell QA-2000 / Groves AESS Tutorial |
Eerlijke inkadering: het voordeel van koude atomen is langetermijnbiasstabiliteit (~2600x lager), die bij een lange GNSS-uitval domineert via 0,5bT^2. De kortetermijnruis is vergelijkbaar (quantum ~22 tegenover klassiek ~20 ug/sqrtHz) — de quantumsensor wint de marathon, niet de sprint. Maturiteit: versnellingsmeters met koude atomen zijn laboratorium-/vroeg, navigatiekwaliteit-kwarts is in gebruik (JRC122785).
Pack 3 — tijdoverdracht (optisch tegenover radiofrequent (RF), optische verbinding tussen satellieten)#
| Term | Status | Bewijs |
|---|---|---|
| Witte tijdjitter -> synchronisatienauwkeurigheid | validated |
src/timetransfer.rs: de gesimuleerde synchronisatie-RMS reproduceert de verbindingsjitter sigma_j; het steekproefgemiddelde middelt als sigma/sqrt(N) tot op <20% (gemiddeld over seeds). |
| Tijdsynchronisatie -> eenwegs afstandsmeting | validated |
afstand = c * dt, c=299792458 m/s; 1 ps = 0,299792458 mm (exact, met de hand afgeleide test). |
| Flicker/TDEV-ondergrens, residu van tweewegsreciprociteit | modelled |
src/twstft_budget.rs (soort time-transfer-budget): flickerfaseruis (Kasdin–Walter, vlakke TDEV), een dagelijkse niet-reciprociteit en een constant reciprociteitsresidu op de tweewegsreeks; het pack timetransfer met witte jitter is ongewijzigd. |
| Verbinding | jitter van één sample | type | bron |
|---|---|---|---|
| optical-isl | 1 ps (1e-12 s) | in een baan geloofwaardig doel | optische verbinding tussen satellieten, synchronisatiedoel op picoseconde; laboratorium-O-TWTFT (TWTFT: two-way time and frequency transfer) ~1 fs (Giorgetta 2013 / Deschenes 2016) |
| twstft-rf | 0,5 ns (5e-10 s) | gemeten, één sessie | TWSTFT van BIPM/PTB/NIST (BIPM: International Bureau of Weights and Measures; PTB: Physikalisch-Technische Bundesanstalt, het Duitse nationale metrologie-instituut) |
Eerlijke inkadering: het optische cijfer is een synchronisatiedoel op picosecondeniveau in een baan (niet gevlogen). De terrestrische optische laboratoriumondergrens is ~1 fs (veel beter); een goed ontworpen microgolfverbinding (de microgolfverbinding (MWL) van ACES (Atomic Clock Ensemble in Space), ~0,3 ps) kan met optisch wedijveren, dus de basislijn "RF = 0,5 ns" is specifiek gewone TWSTFT. De omzetting naar afstand is eenwegs (afstand = cdt); tweewegs/heen-en-terug halveert dat (afstand = cdt/2).
Pack 4 — hybride fusie (sluitstuk)#
Voegt Pack 1 (klok), Pack 2 (inertie) en Pack 3 (tijdoverdracht) samen tot één PNT-suite (positiebepaling, navigatie en tijdsynchronisatie). De suite moet ZOWEL de tijdsynchronisatie (< specificatie voor tijdsynchronisatie) ALS de positie (< specificatie voor positie) binnen de grenzen houden; pnt_holdover_s is de tijd tot een van beide wordt overschreden. Optionele optische tijdoverdracht via een verbinding tussen satellieten (ISL) zet de klok tijdens de uitval opnieuw gelijk (alleen ondersteuning voor tijd — de positie wordt niet opnieuw gelijkgezet, want tijdoverdracht geeft tijd, geen positie).
| Aspect | Status | Bewijs |
|---|---|---|
| Gecombineerde PNT-scoring (tijdsynchronisatie EN positie) | validated |
src/hybrid.rs met de hand afgeleide test van score_hybrid (pnt_holdover = de eerste van tijdsynchronisatie/positie die de grens overschrijdt). |
| Integriteit + beveiliging voor het hybride pack | validated |
src/hybrid.rs: een Kalman-tijdsynchronisatieschatter die op de waarheid is gedisciplineerd (nominaal) en bij elke optische hersynchronisatie opnieuw wordt verankerd; Integrity is de insluiting binnen de beschermingsgrens (de grens omvat de jitterondergrens van de verbinding), Security de score voor spoofdetectie. Getest voor beide suites, inclusief het geval met ondersteuning door de verbinding. |
| Gezamenlijke fusieschatter | validated (model) |
src/fusion/mod.rs: één gezamenlijk Kalman-filter ([fase, frequentie] ⊕ [positie, snelheid]) is de navigator, gedisciplineerd door GNSS (dat de offsets leert uit een initiële covariantie ongelijk aan nul) en ondersteund door tijdoverdracht; de gezamenlijke covariantie geeft een gezamenlijke integriteit die als betrouwbaar is getest (≥0,9) voor beide suites met ruisconsistente sensoren. Het pack neemt positie en tijd afzonderlijk waar, waarvoor het optimale filter blokdiagonaal is; schatting van een constante bias met uitgebreide toestand en dynamische kruisondersteuning zijn toekomstig werk. |
| Gekoppeld klok+positiefilter (kruisblokcovariantie) | validated (model) |
src/fusion/coupled.rs CoupledPntFilter: één gestapeld Kalman-filter [pos, vel, phase, freq] (updates in de vorm van Joseph) waarvan de pseudorange-meting ρ = g·pos + c·phase + noise de positie- en klokblokken koppelt. Tests: een gedeelde pseudorange maakt P[pos,phase] ongelijk aan nul (ontkoppelde filters houden die exact op 0); twee verschillende geometrieën lossen samen geïnjecteerde positie- en klokoffsets op die één afstand niet kan scheiden; een positiebepaling met alleen klok scherpt de positie aan via de kruiscovariantie (de winst die koppeling geeft en ontkoppelde filters niet kunnen); en een Monte-Carlo-NEES is χ²(4)-consistent (Bar-Shalom §5,4, op runs gebaseerde band). 1-DOF (de dimensionaliteit van het pack); nog niet aangesloten op het uitvoerbare pack, en de 3-D-uitbreiding met 8 toestanden is toekomstig werk. |
| Samenstelling van getoetste submodellen | erft | de termen voor klok/inertie/tijdoverdracht zijn in hun eigen packs getoetst. |
Losjes gekoppeld GNSS/INS (pack gnss-ins) |
validated (model) |
src/fusion/{gnss_ins_ekf,closed_loop,pack}.rs: een EKF met foutstatus en 15 toestanden (δp, δv, ψ, versnellings-/gyrobias; Groves §14) stuurt de driassige strapdownnavigator aan met terugkoppeling. Tests: een geïnjecteerde positiefout wordt tot nul gebracht bij ondersteuning met perfecte waarheid; de ondersteunde oplossing blijft op meters begrensd terwijl een vrij lopende INS voorbij 100 m divergeert; en de gefuseerde positie-RMS over een uitval van 60 s verslaat onondersteunde dead-reckoning met de grens van de ensembletest (~4× gemeten vóór 0.27.3; de marge is groter na de onderstaande correctie). De gyrobiaskoppeling wordt gecontroleerd aan de strapdown zelf: een bekende resterende gyrobias moet de standfout produceren die het filter voorspelt (closed_loop::tests::gyro_bias_coupling_predicts_the_strapdown_attitude_error), en een brede prior moet een gyrobias van de klasse van een vluchtcontroller leren terwijl hij begrensd blijft; beide falen met het teken van vóór 0.27.3. Herzien in 0.27.3: die koppeling had het verkeerde teken, zodat schattingen van de gyrobias de verkeerde kant op duwden en alleen een strakke prior het pack stabiel hield; de gepubliceerde uitvalcijfers zijn gewijzigd (CHANGELOG, Fixed). Eerlijke grens: bij losse koppeling zijn versnellingsbias en kanteling slecht te scheiden, dus kalibratie per bias wordt niet geclaimd. |
| Strak gekoppeld GNSS/INS (pseudorange) | validated (model) |
src/fusion/gnss_ins_ekf.rs update_tightly_coupled + closed_loop.rs fuse_tightly_coupled: de innovatie wordt gevormd in het afstandsdomein (zichtlijn-Jacobiaan op δp). Tests: vier satellieten brengen een geïnjecteerde horizontale fout van 8 m/−5 m tot nul op < 0,1 m; twee satellieten (geen positie-, snelheids- en tijdbepaling (PVT) mogelijk) verkleinen de horizontale fout nog steeds met > 5×; één satelliet recht boven waarneemt alleen de component langs de zichtlijn (verticaal) en laat de horizontale ongemoeid; ongeldige invoer wordt geweigerd. Alleen pseudorange — draaggolffase en een expliciete toestand voor de ontvangerklok staan op de roadmap. |
| Getrouwheid van kruisondersteuning tussen sensoren (volledige Kalman-/factorgrafenfusie) | not modeled in het pack hybrid |
Het hybride pack is een samenstelling op systeemniveau + ondersteuning met tijd, geen optimale schatter. Filters bestaan elders: de losjes en strak gekoppelde EKF (extended Kalman filter) van het pack gnss-ins (rijen hierboven) en de UKF (unscented Kalman filter) met 17 toestanden van de soort hybrid-ukf. Er wordt geen factorgrafensmoother gemodelleerd. |
Resultaat: de volledige quantumsuite houdt volledige PNT vol door een uitval van 1,8 h; de volledig klassieke suite is positiebeperkt (de IMU van navigatiekwaliteit overschrijdt als eerste). Optische ISL-tijdoverdracht houdt zelfs de klassieke KLOK vergrendeld, waardoor de inertiële sensor de zwakke schakel van de klassieke suite wordt — het kernargument voor quantum-inertie en optische tijdsynchronisatie samen.
Geometrie — GNSS-beschikbaarheid uit banen#
| Aspect | Status | Bewijs |
|---|---|---|
| Cirkelvormige tweelichamenpropagatie | validated |
src/orbit.rs: periode T=2 pi sqrt(r^3/mu) (mu = 3.986004418e14), de positie keert na één periode terug, vlakheid van evenaars-/poolbanen — met de hand afgeleide tests. |
| Excentrische (Kepler-)propagatie | validated |
src/orbit.rs: de vergelijking van Kepler M = E - e sin E opgelost met Newton (residu < 1e-12); stralen in perigeum/apogeum a(1∓e); het cirkelvormige geval komt overeen met het gesloten-vorm-pad tot op 1e-9. |
| Seculiere J2-drift van knoop en apsiden | validated |
src/orbit.rs: Omega_dot = -1.5 n J2 (Re/p)^2 cos i, argp_dot = 0.75 n J2 (Re/p)^2 (5cos^2 i - 1) (Vallado); de knoop regresseert (prograde) / schuift op (retrograde) / staat stil (polair), en de apsiden bevriezen bij de kritieke inclinatie 63,4 deg — met de hand afgeleide teken-/nultests. Alleen tweelichamen + seculier, niet osculerend. |
| Zichtlijnzichtbaarheid (aardocclusie + elevatiemasker) | validated |
Antipodale satelliet geoccludeerd, radiaal naar buiten gerichte satelliet op 90 graden elevatie, tangentiële satelliet op de horizon: exacte, met de hand afgeleide tests. |
| Zichtbaarheid -> GNSS-toestand -> tijdlijn | validated |
>=4 zichtbaar = nominaal, 1-3 gedegradeerd, 0 ontzegd; Walker-delta-generator; een integratietest stuurt een klok-holdover-run aan vanuit de afgeleide tijdlijn. |
| Optimalisatie van constellatieontwerp + streets-of-coverage-geometrie | validated (model) |
src/walker.rs: optimize_walker_design doorzoekt het {planes × sats × inclination}-raster en geeft de cel terug die het best aan een DesignObjective voldoet (minimaal aantal satellieten voor een dekkingsdoel / maximale dekking / minimale slechtste PDOP (PDOP: positionele verdunning van precisie)). Een test controleert dat de keuze gelijk is aan een onafhankelijke brute-force-scan van dezelfde sweep, en een uitgewerkt voorbeeld bevestigt dat een GPS-Walker-24/6/1-ontwerp (GPS: Global Positioning System) minstens even goed dekt als een uitgedunde variant met 18 satellieten. De analytische gesloten vormen voor streets-of-coverage (coverage_half_angle_rad λ = arccos(Re/r·cos ε) − ε; street_half_width_rad cos c = cos λ / cos(π/s), Rider/Beste) zijn met de hand geverifieerd aan de geometrie uit leerboeken (GPS bij een masker van 5°: λ ≈ 71,16°, halve straatbreedte bij 4 satellieten ≈ 62,83°) en detecteren het gat bij te geringe bezetting (λ < π/s ⇒ None). De volledige Rider-oplosser voor het minimale aantal satellieten bij wereldwijde dekking (het naadgevoelige aantal vlakken) is nog niet geïmplementeerd. |
| Verdunning van precisie (GDOP/PDOP/HDOP/VDOP/TDOP (GDOP: geometrische verdunning van precisie; HDOP: horizontale verdunning van precisie; VDOP: verticale verdunning van precisie; TDOP: verdunning van precisie in tijd)) -> positienauwkeurigheid | validated |
src/orbit.rs: Q=(HᵀH)⁻¹ uit de zichtlijn-ontwerpmatrix. Externe onafhankelijke referentie (tests/dop_reference.rs): de vijf DOP-factoren reproduceren die van gnss_lib_py 1.0.4 (Stanford NAV Lab, een onafhankelijke, collegiaal getoetste GNSS-bibliotheek, hier gebruikt zoals ERFA (Essential Routines for Fundamental Astronomy) voor de referentiestelsels) over 8 geometrieën van goed geconditioneerd tot bijna singulier (DOP in de honderden), tot op 1e-6 relatief; herkomst + regeneratie in tests/fixtures/dop/. Als aanvullende controle met een gesloten vorm reproduceert een regelmatige tetraëdergeometrie de analytische DOP-waarden (PDOP 1,5, TDOP 0,5, GDOP √2,5, HDOP √1,5, VDOP √0,75) tot op 1e-9. Positiesigma = PDOP × gebruikersequivalente afstandsfout. |
| Positiefout = σ_UERE × DOP voor de eigen kleinste-kwadratenpositiebepaling van de engine | modelled |
src/dop_error_mc.rs, tests/uere_dop_monte_carlo.rs: een geseede Monte Carlo (N = 20.000 epochs per geometrie, σ = 1,5 m, ChaCha8-seed 36 + i) van pvt::solve_spp met eenheidsgewichten, opgelost vanuit de ware positie, op de 8 geometrieën van tests/fixtures/dop/dop_reference.csv (die waarvan de DOP is afgestemd op gnss_lib_py), tegenover σ²·Q, waarbij Q de covariantiefactor is van de orbit::dop-kernel zelf (orbit::dop_cofactor, dezelfde rekenkunde). Tolerantiegrenzen vooraf vastgelegd (commit e50c88d2, vóór de eerste run, volgens de ontwerpnotitie over de 0,36-geometrie, sectie 5,2), elk uitgedrukt in een aantal standaardfouten: oost-, noord-, omhoog- en klokvarianties binnen 5 %; H/V/P-RMS binnen 2,5 %; oost-noordcorrelatie binnen 0,035; gemiddelden binnen 5 standaardfouten; de fractie binnen de horizontale 95 %-ellips binnen 0,95 ± 0,0077. Eerste run: alle 104 controles slagen (slechtste variantie 3,2 %, RMS 1,6 %, correlatie 0,012, gemiddelde 2,2 standaardfouten, ellips 0,0039). Negatieve controles falen zoals vereist: een verdubbelde PDOP faalt bij elke geometrie; fouten die groeien als 1/sin(elevatie) tegenover de ongewogen Q falen op een variantiecontrole bij elke geometrie waarvan de laagste satelliet onder 20° staat. Hoe dit aansluit op de rij hierboven: die rij toetst de DOP van deze geometrieën aan gnss_lib_py; deze voegt de stap toe van die factoren naar meters via de solver van de engine. Een eerste, afzonderlijke controle staat ernaast (src/dop_error_ci.rs, tests/position_error_dop_ci.rs, uitgevoerd vóór de preregistratie en ook zo gerapporteerd): vier met de hand gekozen luchten (open, gegroepeerd, canyon, halve hemel; σ 1 m) met chikwadraat-betrouwbaarheidsintervallen op 1e-6 in totaal over 20 controles; verhoudingen 0,987 tot 1,009, en eigen negatieve controles (een DOP-fout van 10 %, 1/sin(elevatie)-fouten) falen zoals vereist. Waarom MODELLED: geen externe dataset; het toont niet aan dat de fout van een echte ontvanger het model volgt, en σ_UERE is een invoer. |
| Beschikbaarheid met meerdere constellaties | validated |
src/orbit.rs: extra [[constellations]] worden samengevoegd tot één satellietenset voor zichtbaarheid/DOP; een test met het gecombineerde aantal bevestigt de vereniging. |
| Uitgezonden ionosfeer (Klobuchar, IS-GPS-200 (IS: Interface Specification)) → L1-schuine vertraging | validated |
src/gnss_sim.rs: klobuchar_delay_m, het uitgezonden eenfrequentiemodel met acht coëfficiënten. Externe onafhankelijke referentie (tests/klobuchar_reference.rs): de schuine L1-vertraging reproduceert ionmodel van RTKLIB (een opensource-bibliotheek voor real-time kinematische positiebepaling) (tomojitakasu/RTKLIB, src/rtkcmn.c, de feitelijke open GNSS-referentie, uit de broncode gecompileerd en onafhankelijk uitgevoerd) over 10 gevallen die elevatie, azimut, lokale tijd en twee coëfficiëntensets bestrijken (de standaardset van kshana + die van RTKLIB), tot op < 1e-4 m. De IONEX-lezer (IONosphere map EXchange format) voor TEC-kaarten (TEC: totale elektronendichtheid) in GIM-bestanden (global ionosphere map) bestaat nu (src/ionex.rs, parse_ionex met bilineaire ruimtelijke en temporele interpolatie en een schuine afbeelding, in de crate zelf unit-getest); een controle van die interpolatie tegen een echt GIM-product van CODE (Center for Orbit Determination in Europe) is nog een vervolgstap. Het uitgezonden model zelf is extern getoetst. |
| RAIM/ARAIM-detectiekernel (ARAIM: advanced receiver autonomous integrity monitoring) (χ² / niet-centrale χ² / normaal) → drempels en vermenigvuldigers | validated |
src/raim.rs: de detectiedrempel voor snapshot / oplossingsscheiding / ARAIM (chi2_quantile), de niet-centraliteit bij gemiste detectie pbias=√λ (noncentral_chi2_cdf) en de K_fa/K_md/K_V-vermenigvuldigers (normal_quantile) worden allemaal berekend uit een afhankelijkheidsvrije geregulariseerde onvolledige gammafunctie. Externe onafhankelijke referentie (tests/raim_reference.rs): 171 gevallen reproduceren SciPy 1.17.0 (scipy.stats.chi2/.ncx2/.norm + optimize.brentq, een onafhankelijke Cephes/Boost-implementatie, een ander algoritme) over de bedrijfsbereiken van P_fa / P_md / redundantie, tot op ≤ 1e-6 relatief. De geometrie rond de kernel (de helling/covariantie uit (GᵀG)⁻¹) is de aan gnss_lib_py getoetste DOP-kernel. Reikwijdte: deze rij legt de statistische kernel vast. De waarde van het beschermingsniveau van de ARAIM-MHSS-toewijzing (MHSS: multiple-hypothesis solution separation) is afzonderlijk vastgelegd tegenover het gepubliceerde uitgewerkte voorbeeld van de ARAIM Technical Subgroup van WG-C (Working Group C) (tests/araim_reference_vectors.rs, VPL (verticaal beschermingsniveau) 18,2926 m tegenover 18,3 m, HPL (horizontaal beschermingsniveau) 13,4063 m tegenover 13,45 m, binnen de eigen tolerantie van 0,05 m van de referentie; zie de standaardennotitie hieronder en ARAIM_REFERENCE.md). |
| SBAS-beschermingsniveau (SBAS: satellite-based augmentation system) (DO-229E Appendix J) → horizontaal / verticaal beschermingsniveau (HPL / VPL) | validated |
src/sbas.rs: sbas_protection_level, de gewogen kleinste-kwadraten- (LS: least squares) D=(GᵀWG)⁻¹ → hoofdas van de horizontale foutellips + verticale σ, geschaald met de K-factoren van DO-229E. Externe onafhankelijke referentie (tests/sbas_reference.rs): de HPL van kshana reproduceert de RTKLIB SBAS-PL-fork (zsiki/rtklib_ws waasprotlevels(), de implementatie van Siki & Takács 2017 van "DO-229D Appendix J"), uitgevoerd met rnx2rtkp -ws op echte EGNOS-gegevens (European Geostationary Navigation Overlay Service) (uitgezonden GEO-berichten (geostationaire baan) van PRN120 + echte BUTE/Boedapest-RINEX (Receiver Independent Exchange Format), 2017-02-19), over 6 epochs tot op < 2e-3 m. De σ per satelliet is het volledige SBAS-budget van de referentie zelf (UDRE (user differential range error) + GIVE (grid ionospheric vertical error) ionosfeer + troposfeer + vliegtuigboord). ESA gLAB v6.0.0 (core/filter.c) is gecompileerd en bleek dezelfde conventie te gebruiken. Opmerking over K_V: beide referenties ronden de MOPS-waarde (minimum operational performance standards) K_V af op 5,33; kshana gebruikt de exacte Φ⁻¹(1−5e-8)=5.3267 (~0,06 % kleinere VPL), dus het verticale wordt getoetst als de K-factorvrije d_U (= VPL van de referentie / 5,33). De HPL wordt rechtstreeks gematcht (K_H = 6,0 aan beide kanten). |
| Echte constellatiegeometrie uit TLE's (regel 2 / Kepler) | validated (parsing) |
src/tle.rs: leest de gemiddelde Kepler-elementen van regel 2 in (halve lange as uit de gemiddelde beweging); een bekende elementenset van het ISS (International Space Station) wordt heen en terug omgezet naar de juiste elementen en omlooptijd. Voor een blok met alleen regel 2 is de propagatie de tweelichamenpropagatie van de engine (+ optioneel J2) van de gemiddelde elementen: deugdelijk voor een momentopname vanuit een gemeenschappelijke epoch, maar na verloop van tijd afwijkend van SGP4 (Simplified General Perturbations 4). |
| SGP4 / SDP4-propagatie (Simplified Deep-space Perturbations 4) (volledige TLE's) | validated |
src/sgp4.rs: volledige SGP4 voor nabij de aarde + SDP4 voor de diepe ruimte (lunisolaire seculiere/periodieke termen + 12 h / 24 h geopotentiaalresonantie). Getoetst in tests/sgp4_verification.rs aan de officiële vectoren van AIAA (American Institute of Aeronautics and Astronautics) 2006-6753 ("Revisiting Spacetrack Report #3"): alle 666 referentietoestanden (nabij de aarde, diepe ruimte, resonant, foutcodegevallen) komen overeen met een positiefout in het slechtste geval van ≈ 4,1 mm. Een volledige tweeregelige set (regel 1 + regel 2) wordt met SGP4 gepropageerd; alleen regel 2 blijft Kepler; beide kunnen gemengd worden. Het frame is TEME (true equator, mean equinox), consequent gebruikt voor de gebruiker en de satellieten (geen TEME→ECEF-reductie (ECEF: Earth-centred, Earth-fixed), toereikend voor beschikbaarheids-/DOP-geometrie). |
| IAU-nutatie (International Astronomical Union) 2000A / 2000B + TEME→GCRS-reductie (GCRS: Geocentric Celestial Reference System) | validated |
src/nutation.rs: de volledige IAU 2000A-reeks (678 lunisolaire + 687 planetaire termen, nutation_iau2000a) en de 77-termen-afkapping 2000B (nutation_iau2000b) zijn elk bit voor bit getoetst aan de gepubliceerde SOFA/ERFA-referentievectoren (SOFA: Standards of Fundamental Astronomy) bij JD_TT 2453736,5: eraNut00a geeft Δψ = −0.9630909107115518e-5, Δε = 0.4063239174001679e-4; eraNut00b geeft Δψ = −0.9632552291148363e-5, Δε = 0.4063197106621160e-4; beide tot op 1e-13 rad. De 2000A-tabel is machinaal gegenereerd uit de ERFA-bron nut00a met tools/gen_nut00a.py (reproduceert de vastgelegde nutation_iau2000a_data.rs bit voor bit). De nutatiematrix (iauNumat), de vergelijking van de equinoxen en de volledige keten TEME→TOD→MOD→GCRS (TOD: true of date; MOD: mean of date) (teme_to_gcrs, Vallado AIAA-2006-6980) zijn getest op eigenschappen van eigenlijke rotatie, heen-en-terugomzetting en precessie plus nutatie, de nutatiematrix tegenover ERFA numat element voor element tot op 1e-14, en de hele TEME→GCRS-keten tegenover het gepubliceerde TEME→GCRF-voorbeeld van Vallado (AIAA 2006-6753, 2004-04-06) tot op 0,11 m (tests/frame_reference_vectors.rs); totdat die eind-tot-eindcontrole werd toegevoegd, had de nutatiematrix Δψ met het verkeerde teken, een draai van 2·Δψ (ongeveer 25″) die de eigenschapstests niet konden zien (zie CHANGELOG, Unreleased, Fixed); 2000A en 2000B komen overeen binnen < 1 mas, zoals vereist. De keten is gebaseerd op equinox/GMST (GMST: Greenwich mean sidereal time); de equinoxvrije CIO-reductie (X,Y,s) en de onafhankelijke numerieke ANISE/SPICE-controle ervan (ANISE: Attitude, Navigation, Instrument, Spacecraft, Ephemeris, een planetaire-geometrietoolkit in puur Rust; SPICE: Spacecraft, Planet, Instrument, C-matrix, Events) (≤ 3,6 m op GNSS-baanhoogte, ruim binnen het doel van < 10 m) staan in de CIO-rij hieronder. |
| IGRF-14 (IGRF: International Geomagnetic Reference Field) geomagnetisch hoofdveldmodel | validated |
src/igrf.rs: het Schmidt-genormaliseerde veld in bolfuncties van IAGA (International Association of Geomagnetism and Aeronomy) (graad/orde 13, 2025,0 + seculiere variatie; coëfficiënten machinaal gegenereerd uit het officiële igrf14coeffs.txt met tools/gen_igrf.py, waarmee igrf_data.rs bit voor bit wordt gereproduceerd). Getoetst op vijf onafhankelijke fronten: (1) exacte steekproefcontroles van coëfficiënten tegenover het IAGA-bestand (g₁⁰=−29350,0, g₁¹=−1410,3, h₁¹=4545,5 nT); (2) de synthese van graad 1 reproduceert het exacte, in gesloten vorm gegeven veld van de gekantelde dipool (B_r,B_θ,B_φ) tot op 1e-6; (3) het volledige analytische veld van graad 13 is gelijk aan −∇V van de scalaire potentiaal (eindige differenties, tot op 1e-4), waarmee de Legendre-afgeleiden en de 1/sinθ-term van begin tot eind worden beproefd; (4) de dipoolas reproduceert de bekende geomagnetische noordpool (~80,7°N, −72,7°E) en de dipoolsterkte (~29,7 µT), en het wereldwijde veld ligt in de fysische band van 22–67 µT met het juiste inclinatieteken per halfrond; en (5) externe onafhankelijke referentie: de volledige synthese reproduceert de waarden van de officiële IGRF-14-webservice van de British Geological Survey bij 2025,0 (geodetisch, WGS-84-hoogte (WGS: World Geodetic System)) tot op < 2 nT voor X/Y/Z/F en < 0.02° voor D/I op vier punten, waaronder 400 km hoogte (synthesis_matches_the_official_bgs_igrf14_values_at_2025). |
| Op CIO gebaseerde IAU 2006/2000A GCRS↔ITRS-reductie (ITRS: International Terrestrial Reference System) | validated |
src/cio.rs: de equinoxvrije keten van hemels naar terrestrisch. De CIP-coördinaten (Celestial Intermediate Pole) (X, Y) en de 66-termen-reeks van de CIO-locator s zijn bit voor bit getoetst aan de gepubliceerde SOFA/ERFA-vector eraXys06a bij JD_TT 2453736,5: X=0.5791308482835292617e-3 (1e-14), Y=0.4020580099454020310e-4 (1e-15), s=-0.1220032294164579896e-7 (1e-18); de GCRS→CIRS-matrix (CIRS: Celestial Intermediate Reference System) tegenover eraC2ixys (alle negen elementen tot op 1e-12); de aardrotatiehoek (ERA) tegenover eraEra00(2400000.5, 54388.0) = 0,4022837240028158102 (1e-12). De s-tabel is machinaal gegenereerd uit de ERFA-referentie s06.c met tools/gen_s06.py (reproduceert cio_s06_data.rs bit voor bit). De volledige gcrs_to_itrs_matrix (CIO eraC2tcio = poolbeweging · ERA · GCRS→CIRS) is getest op eigenlijke rotatie + heen-en-terugomzetting, en blijkt consistent met de oudere TEME-reductie op basis van equinox/GMST-1982 binnen 1 m op een straal van 7.000 km (de conventies verschillen daar ongeveer 5 cm). Onafhankelijke controle door een derde partij (xval/anise-frames/): dezelfde gcrs_to_itrs_matrix wordt vergeleken met ANISE (de herimplementatie van NAIF/SPICE in puur Rust (NAIF: Navigation and Ancillary Information Facility)) die GCRF→ITRF93 roteert (GCRF: Geocentric Celestial Reference Frame; ITRF93: International Terrestrial Reference Frame 1993) uit earth_latest_high_prec.bpc van JPL (Jet Propulsion Laboratory), waarbij identieke aardoriëntatieparameters van IERS (International Earth Rotation and Reference Systems Service) finals2000A aan beide kanten worden ingevoerd, over acht driemaandelijkse epochs van 2020–2023. De twee onafhankelijke realisaties van het frame komen overeen tot op een maximale relatieve rotatie van 0,028″, ≤ 0,86 m op de grond, ≤ 0,93 m in LEO (lage aardbaan), ≤ 3,6 m op GNSS-baanhoogte (gemiddelde hoek 0,023″). Dit is de ROADMAP-controle van het frame "< 10 m", geleverd; het residu is het verwachte modelverschil/datumverschil tussen ITRF93 en IERS-2010-CIO, geen defect (het bit-voor-bit-anker blijven de SOFA/ERFA-vectoren hierboven). ANISE is een crate onder MPL-2.0 (MPL: Mozilla Public License) / edition-2024, dus de controle zit in een zelfstandige subcrate die buiten de workspace valt en nooit de afhankelijkheidsgraaf van de gepubliceerde kshana of een standaard-CI-poort raakt. |
| Heen-en-terugexport van SP3 (Standard Product 3, het formaat voor nauwkeurige banen) (constellatie → SP3-c → opnieuw inlezen) | validated |
tests/sp3_export_roundtrip.rs: de echte momentopname gps-ops van Celestrak (30 GPS-satellieten) wordt met SGP4 gepropageerd, geëxporteerd naar SP3-c (Sp3File::from_propagators → to_sp3_string), opnieuw ingelezen (parse_sp3), en de teruggewonnen ECEF-posities worden op elke epoch over 24 h vergeleken met de SGP4-referentie: slechtste residu < 0,5 m (de millimeterserialisatie van de schrijver; de tolerantie van 10 m op TLE-niveau (TLE: two-line element set) van de mijlpaal wordt met ruime marge gehaald). Ook het pad --export-sp3 van de CLI (command-line interface) is gedekt: het meegeleverde baanscenario exporteert een opnieuw inleesbare SP3 met 30 satellieten, en een scenario zonder baan wordt geweigerd. |
| Echte GPS-constellatiegeometrie uit TLE's (SGP4 → ECEF) | validated |
tests/igs_real_data.rs: een echte momentopname gps-ops van Celestrak (2021-07-28, 30 operationele GPS-satellieten; herkomst in tests/fixtures/celestrak/NOTICE) wordt ingelezen en elke satelliet wordt via de getoetste SGP4-kern naar een gemeenschappelijk tijdstip gepropageerd en van TEME naar ECEF geroteerd. Er wordt gecontroleerd dat de volledige constellatie binnen 1% op de GPS-MEO-schil (medium Earth orbit) ligt en dat vanaf een locatie op middelste breedte met open hemel de echte situatie met alles in zicht (negen satellieten) een PDOP van 1,64 oplevert, waarbij de verticale verdunning groter is dan de horizontale (zoals voor een grondgebruiker moet). Dit beproeft SGP4 op een echte constellatie, naast de echte-gegevenspaden voor SP3 (nauwkeurig) en RINEX (uitgezonden). |
| SGP4-Walker-generator met gemiddelde elementen | validated |
src/walker.rs: een ontworpen Walker-delta-patroon wordt uitgegeven als gemiddelde SGP4-elementen (Kozai-gemiddelde beweging gekozen zodat de halve lange as van SGP4 op de doelschil uitkomt) en gepropageerd via de getoetste kern. Tests: een Walker met 24 satellieten, vergelijkbaar met GPS, ligt binnen 1% op de MEO-schil, de vlakken liggen precies 90° uit elkaar in RAAN (right ascension of the ascending node), teruggewonnen uit de baannormalen, en de gemiddelde beweging reproduceert de omlooptijd van de GPS-schil van ~718 min. |
| PDOP-sweep van de constellatie + kwaliteitsmaten voor dekking/revisit (FoM: figures of merit) | validated (monotonie) |
src/walker.rs: pdop_sweep zet dekking en mediane/slechtste PDOP in een tabel over een {planes × sats × inclination}-raster; coverage_revisit rapporteert de dekkingsfractie en de revisit-gaten op een grondpunt. Getoetst aan de fysieke monotonieën waaraan een ontwerpafweging moet voldoen: het toevoegen van satellieten verlaagt de dekking nooit en verlaagt de mediane PDOP strikt (een volledig ontwerp met 24 satellieten dekt continu bij een PDOP van ~1,7), en het verdichten van een uitgedunde constellatie verkleint het slechtste revisit-gat strikt. Het gemiddelde revisit-gat is nooit groter dan het maximum. Dit zijn tabellen voor geometrische afwegingen, geen gecertificeerd link-/dekkingsbudget. |
Eerlijke kadrering: dit is een deterministische geometrielaag (cirkelvormige banen, bolvormige aarde met gemiddelde straal 6371 km, zuivere zichtlijn). Ze stelt de beschikbaarheid en de geometrische positienauwkeurigheid (verdunning van precisie × een representatief budget voor afstandsfouten) vast uit echte geometrie, geen navigatieoplossing met nauwkeurige efemeride. De referentie orbit-gnss-challenged.toml plaatst een ruimtevaartuig binnen de GNSS-schil: het houdt slechts ~59% van de dag een positiebepaling vast, de kwantumklok houdt door elk gat heen een tijdsynchronisatieoplossing van 5 ns aan (beschikbaarheid 1,0), terwijl de chipschaalklok ~0,73 haalt.
Numerieke (Cowell-)propagator en krachtenmodel#
De numerieke propagator (src/propagator.rs) integreert een hiërarchisch krachtenmodel (src/forces.rs) met de adaptieve integratoren (src/integrator.rs). Elke term hieronder is getoetst aan analytische waarheid of aan een met de hand afgeleide gesloten vorm; de verstoringen staan standaard uit, zodat de vrijgegeven golden-bestanden onaangetast blijven. Het samengestelde model is ook gecontroleerd tegen een ander hulpmiddel: tests/numerical_cowell_propagator_reference.rs voert 11 LEO- en GTO-gevallen (geostationaire transferbaan) uit, 275 uurlijkse epochs, tegenover de DormandPrince853-propagator van Orekit 12,2, en de conservatieve lagen (tweelichamen → J2–J6 → zon/maan → kogelvormige SRP) komen overeen tot op ten hoogste 0,08 m over 24 h (VALIDATED in de matrix); de weerstandslaag is alleen gekarakteriseerd (333 m) en blijft MODELLED.
| Term | Status | Bewijs |
|---|---|---|
| Cowell-propagator tegenover analytische Kepler-waarheid | validated |
src/propagator.rs: de ongestoorde (tweelichamen-)baan reproduceert de exacte Kepler-oplossing met universele variabelen tot op submeterniveau over een LEO-baan van 24 h (een strengere poort dan "tegenover een numerieke referentie < 10 m"); specifieke energie en impulsmoment blijven behouden tot ~1e-9 relatief; de nodale regressie door J2 reproduceert de gesloten vorm j2_secular_rates tot op de eerste-ordetheorie (binnen 2 %, het residu van orde O(J2²)). solve_kepler_checked geeft Err terug in plaats van een stilzwijgend onjuist antwoord wanneer Newton niet convergeert (nabij perigeum e = 0,999). De robuuste solve_kepler_robust (starter van Markley 1995, src/kepler.rs) convergeert daar en over 0 ≤ e ≤ 0,999999, binnen 0,9 ε·|E| van 50-cijferige mpmath-wortels (tests/kepler_mpmath_oracle.rs). |
| Adaptieve integratoren (RK4 (Runge–Kutta van de vierde orde) met stapverdubbeling + het ingebedde paar Dormand–Prince RK5(4), hieronder DP5(4)) | validated |
src/integrator.rs: RK4 integreert y' = y → e tot op < 1e-9, toont de daling van de fout met ~16× per gehalveerde stap (convergentie van de 4e orde) en behoudt de harmonische oscillator over een periode. De ingebedde foutschatting van DP5(4) is O(h⁵) (het halveren van de stap verkleint haar met ~32×), integreert de oscillator over 50 perioden met behoud van energie tot op < 1e-6, en bereikt hetzelfde eindpunt bij dezelfde tolerantie met minder functie-evaluaties dan stapverdubbeling; propagate_dopri haalt dezelfde Kepler-poort op submeterniveau en komt overeen met het RK4-pad tot op < 1 m op een J2..J6-baan. DOP853 (integrate_dop853): het paar 8(5.3) van Hairer met dichte uitvoer reproduceert de DOP853 van SciPy 1.18.1 stap voor stap (enkele stap binnen 5.6e-15; identieke aantallen stappen bij de runs met e = 0,7 en Arenstorf, één wissel tussen accepteren en verwerpen in 501 stappen bij de LEO-run; eindtoestanden binnen 1.6e-12) en komt even dicht bij de exacte Kepler-oplossing als SciPy (tests/dop853_scipy_oracle.rs). |
| Zonaal harmonisch veld J2–J6 | validated |
src/forces.rs: zonal_accel wordt op drie manieren gecontroleerd: het reduceert tot op machineprecisie tot de aan 666 vectoren getoetste j2_accel wanneer het wordt beperkt tot [J2]; het komt overeen met de numerieke gradiënt van zijn eigen zonale potentiaal door het volledige J2..J6-veld (de gouden standaard voor conservatieve velden); en de oneven J3 tegenover de even J2/J4..J6-termen tonen de kenmerkende noord–zuid-(anti)symmetrie onder z → −z. Een gepropageerde J2..J6-baan behoudt de totale energie tot ~1e-8 over een dag. |
| Zwaartekracht van derde lichamen (zon en maan) | validated |
src/forces.rs + src/ephem.rs: third_body_accel komt overeen met de exacte gradiënt van zijn verstorende potentiaal, verdwijnt in het geocentrum en haalt de leerboekgroottes voor LEO (~5e-7 m/s² zon, ~1.1e-6 m/s² maan). De zonne-efemeride van Montenbruck–Gill met lage precisie haalt met de hand afgeleide J2000-ankers (periheliumafstand ≈ 1.471e11 m, ~−23° declinatie bij zonnewende, ~1°/dag beweging); de maanefemeride blijft binnen haar perigeum-/apogeumomhulling, herstelt de gemiddelde afstand van ~384.400 km, overschrijdt de inclinatie van 5,3° nooit en keert na één siderische maand terug tot binnen 1°. De van de epoch afhankelijke bedrading van het rechterlid (RHS: right-hand side) is bit-exact (de RHS-term is gelijk aan third_body_accel op de bemonsterde positie bij t = 0 en t = 1 dag), en een verschuiving van de epoch met een kwart jaar levert een ander traject op. |
| Zonnestralingsdruk (SRP) + conische schaduw | validated |
src/forces.rs: srp_accel (kogelmodel ν·P☉·cᵣ·(A/m)·(AU/d)²·d̂) is bit-identiek aan de gesloten vorm in volle zon, legt de stralingsdruk op 1 AU (AU: astronomische eenheid) vast op ≈ 4.5398e-6 N/m², ligt in de band van ~1.36e-7 m/s² voor LEO met een duw van de zon af, wordt een kwart wanneer de afstand tot de zon verdubbelt (omgekeerd kwadratisch) en is exact nul diep in de umbra. conical_shadow geeft ν = 1 in volle zon en ν = 0 in totale umbra (exact), met een vloeiende monotone penumbra die van 0 → 1 stijgt over de band [b−a, b+a] die zich uitstrekt voorbij de umbrale cilinder. |
| Atmosferische weerstand (eerste snelheidsafhankelijke term) | validated |
src/forces.rs: atmospheric_density (Vallado Table 8-4, stuksgewijs exponentieel) verankert op 1,225 kg/m³ op zeeniveau, begrenst onder het oppervlak, neemt monotoon af door LEO, ligt in de band van ~1e-12 kg/m³ op 400 km met een fysisch teruggevonden schaalhoogte van ~58 km; drag_accel werkt de meeroterende relatieve snelheid tegen op de grootte van ~2e-6 m/s² voor LEO. De kenmerkende controle: een baan van 300 km verliest monotoon specifieke energie en haar halve lange as neemt met een begrensde ~km/dag af, terwijl de basislijn met vacuüm de energie behoudt tot < 1e-9. |
| Post-Newtoniaanse (Schwarzschild-)relativistische correctie | validated |
src/forces.rs: relativistic_accel (IERS β = γ = 1-vorm a = (μ/c²r³)·{[4μ/r − v²]·r + 4(r·v)·v}) valt bij een cirkelvormige baan samen tot de gesloten vorm 3μ²/(c²r³)·r̂ (radiaal, naar buiten, componenten buiten de as exact nul), toont de leerboekverhouding van ≈1.9e-9 tot tweelichamen in LEO, komt overeen met de met de hand vereenvoudigde vorm met radiale snelheid μ(4μ + 3v²r)/(c²r³) tot < 1e-12, en verstoort in de propagator de baan terwijl de halve lange as binnen een meter/dag blijft: het conservatieve tegenovergestelde van het verval door weerstand. |
Eerlijke reikwijdte: de vrijgegeven standaardwaarden van ForceModel integreren het zonale veld. Het tesserale EGM2008-veld van hoge graad (src/gravity_sh.rs, graad/orde 70), de vaste-aarde-, oceaan- en atmosferische getijden (src/tides.rs) en de Lense–Thirring-term voor frame-dragging zijn nu geïmplementeerd en samengevoegd in het krachtenmodel voor het fitten van een nauwkeurige efemeride (src/precise_od.rs, zie hieronder). Het tesserale veld is ook een optionele term van het Cowell-ForceModel (propagator::Geopotential, standaard uit), getoetst aan Orekit 12,2 HolmesFeatherstoneAttractionModel tot graad/orde 70 (6 gevallen over 24 h, slechtste |Δr| 0,036 m; tests/cowell_tesseral_orekit_oracle.rs). Er bestaan twee veldevaluatoren: de historische acceleration (sferische partiële afgeleiden; geldig tot graad ~180 weg van de polen; uitvoer vastgelegd) en acceleration_hf (gemodificeerde voorwaartse kolom van Holmes–Featherstone 2002, gradiënt zonder 1/cos φ; geldig tot graad 2190 op elke breedte). EGM2008 tot 2190 wordt tijdens de run geladen (from_gfc_file, scripts/fetch_egm2008.sh, niet meegeleverd). acceleration_hf komt overeen met Orekit 12,2 tot 7.3e-17 m/s² op acht punten tot en met graad 2190; het blijft MODELLED omdat pyshtools de vooraf vastgelegde drempel nabij de pool miste (een mpmath-controle legt de fout bij pyshtools; xval/high-degree-gravity/). Een baan van 24 h 200×200 komt overeen met Orekit tot 0,13 m, maar de vooraf vastgelegde gevoeligheidscontrole voor graad 70 werd gemist (0,73 m < 1 m), zodat de graden 71–200 in de baan slechts zijn gekarakteriseerd en niet getoetst (xval/cowell-tesseral-200-orekit/). De thermosferische dichtheid van NRLMSISE-00 (NRLMSISE: Naval Research Laboratory Mass Spectrometer and Incoherent Scatter Radar Extended atmosphere model) is overgezet (src/nrlmsise00.rs: bit-identiek aan de C-port in het publieke domein op 720 punten, binnen 1.9e-6 relatief van pymsis, de 17 gepubliceerde testgevallen gereproduceerd; tests/nrlmsise00_reference.rs) en is een optionele laag voor weerstandsdichtheid (forces::DensityModel, ForceModel::drag_density; de standaard blijft het statische Vallado-model). Dit toetst de port, niet de nauwkeurigheid van het model tegenover gemeten dichtheid. De zon en maan van DE440 (DE: Development Ephemeris) vormen een optionele efemeridelaag (ForceModel::with_ephemeris). De schaduw van SRP bij een afgeplatte aarde volgens WGS-84 is optioneel (ForceModel::srp_shadow) en komt overeen met de verlichtingsverhouding van Orekit 12,2 binnen 7.4e-9 over 2400 geometrieën (tests/srp_oblate_shadow_orekit_oracle.rs); de variant met randverduistering heeft geen externe onafhankelijke referentie (MODELLED). De weerstandslaag van NRLMSISE-00 komt overeen met de eigen NRLMSISE-00-weerstand van Orekit 12,2 over 24 h tot 0,03 m bij een weerstandsverplaatsing tot 142 km (tests/drag_tier_orekit_oracle.rs, VALIDATED onder de gedeelde conventies). Een controle met GMAT (General Mission Analysis Tool) blijft een vervolgstap.
Getijden op de geopotentiaal (src/tides.rs)#
Tijdsafhankelijke correcties ΔC̄_nm, ΔS̄_nm op de Stokes-coëfficiënten (IERS Conventions 2010, Chapter 6), getoetst aan de eigen gepubliceerde getallen van de conventies, niet aan een ander hulpmiddel.
| Bijdrage | Status | Bewijs |
|---|---|---|
| Getij van de vaste aarde (IERS Eq. 6,6 / 6.8b / 6,14) | validated |
tests/tides_iers.rs: het permanente (nulfrequente) getij ΔC̄₂₀ ligt binnen 1 % van de door IERS gepubliceerde −4,1736×10⁻⁹ (anelastische Love-getallen); het uitgewerkte voorbeeld Step-2 K1 wordt bit voor bit gereproduceerd (sin/cos-amplituden 470,9 / −30,2 ×10⁻¹² tot op 0,1×10⁻¹²); het genormaliseerde Legendre-pad is vastgelegd met in gesloten vorm met de hand berekende waarden, onafhankelijk van de recurrentie. |
| Oceaangetij (IERS Eq. 6,15, FES2004 (Finite Element Solution 2004, getijdenatlas), 8 componenten) | validated |
De meegeleverde FES2004-subset (tools/gen_fes2004.py → src/fes2004_data.rs, Doodson→multiplicator-parse) reproduceert de M2-coëfficiënten (2.2) van de bron exact; de K1-Doodsonfase is gelijk aan θ_g + π; de sectoriële grootte van graad 2 is fysisch en een orde kleiner dan het getij van de vaste aarde. |
| Atmosferisch S2-luchtgetij (Ray 2001, NASA (National Aeronautics and Space Administration) GSFC (Goddard Space Flight Center)) | validated |
De meegeleverde harmonischen van Ray worden via de oppervlaktebelastingrelatie (Eq. 6,21) omgezet naar een piek ΔC̄₂₂ ≈ 4×10⁻¹¹ (~10 % van de oceaan-M2-term). Eerlijk voorbehoud: er bestaat geen gepubliceerde onafhankelijke referentie voor geopotentiaalcoëfficiënten van het luchtgetij, dus het is getoetst via integriteit van de bron + grootte, een zwakkere drempel dan bij de getijden van de vaste aarde en de oceaan. |
Manoeuvres en trajectontwerp (src/maneuver.rs)#
| Aspect | Status | Bewijs |
|---|---|---|
| Impulsieve ΔV + propagatie van de covariantie | validated |
Een snelheidsdiscontinuïteit met een covariantie van 6×6 die wordt doorgedragen (deterministische burn ⇒ identieke STM (toestandsovergangsmatrix); de covariantie van de uitvoeringsfout wordt vanuit het burn-frame, ECI (Earth-centred inertial) of LVLH (local vertical, local horizontal), in het snelheidsblok geroteerd). |
| Integratie van eindige burns tegenover Tsiolkovsky | validated |
Integratie met constante stuwkracht over een burn-boog (massa als toestand) waarvan de bereikte ΔV overeenkomt met de Tsiolkovsky-raketvergelijking in gesloten vorm tot beter dan 0,01 %. |
| Lambert-oplosser (Izzo 2015) heen en terug | validated |
De Lambert-uitvoer voor één omloop (r1, r2, vliegtijd ⇒ v1, v2) wordt heen en terug gevoerd door de exacte Kepler-propagator met universele variabelen: hij moet weer op r2 uitkomen. |
| Porkchop-sweep tegenover de Hohmann-ondergrens | validated |
Het minimum van het raster lancering × aankomst voor C3 / aankomst-V∞ wordt gecontroleerd tegen de analytische Hohmann-overdracht-C3-ondergrens voor twee coplanaire cirkelvormige banen. |
| Lambert-oplosser tegenover een onafhankelijke bibliotheek | validated |
tests/lambert_reference.rs: 13 overdrachten met één omloop van LEO via GEO tot heliocentrisch, prograde en retrograde, tegenover lamberthub 1.0.0 izzo2015; slechtste verschil in randsnelheid 7e-12 m/s. |
Eerlijke reikwijdte: geen trajectoptimalisator, geen Lambert-takken met meerdere omlopen en een synthetisch coplanair-cirkelvormig heliocentrisch model (geen planetaire DE-efemeride, dus een GMAT-controle van de Aarde–Mars-C3 is niet uitgevoerd).
Baanbepaling (OD) (src/orbit_determination.rs, src/batch_ls.rs)#
| Aspect | Status | Bewijs |
|---|---|---|
| Gauss–Newton-batchcorrector | validated |
De generieke gauss_newton-oplosser bereikt de exacte gewogen kleinste-kwadratenoplossing bij een lineaire fit, herstelt de ware parameters bij een niet-lineaire a·exp(b·t)-fit en lost een 3D-afstandsmultilateratie op uit ruisvrije afstanden. |
| Batchbaanbepaling uit afstanden | validated |
determine_orbit_batch herstelt [r, v] uit afstandsvolging door grondstations (gepropageerd met het tweelichamen- + J2-krachtenmodel) tot submeter / mm·s⁻¹ uit ruisvrije afstanden en tot ~2 m met een post-fit-residu op de ruisvloer van 5 m: het kenmerk van een consistente kleinste-kwadratenfit. |
| Sequentiële OD (met unscented filter) | validated |
determine_orbit_sequential herstelt de toestand recursief tot binnen enkele tientallen meters op dezelfde dynamica en hetzelfde afstandsmodel. |
| Batch- en sequentiële OD tegenover een onafhankelijke schatter | validated |
tests/batch_sequential_orbit_determination_reference.rs: 8 scenario's (6 ruisvrij LEO/MEO/excentrisch met 3–4 stations, 2 met σ = 5 m) tegenover de batch-kleinste-kwadraten- en Kalman-schatters van Orekit 12,2 op een gematcht krachtenmodel; slechtste batch 1e-3 m / 1e-6 m/s, sequentieel 0,9 m. |
| Batch-OD met range-rate / az-el en een elevatiemasker | modelled (externe vergelijking, één vooraf vastgelegde drempel gemist) | tests/od_tracking_measurements_reference.rs: 8 scenario's tegenover de batch-kleinste-kwadraten van Orekit 12,2 met aangepaste ogenblikkelijke geometrische metingen; zichtbare sets identiek, meetwaarden binnen 5.8e-8 m / 6.3e-10 m/s / 1.4e-13 rad, toestandsovergangsmatrix binnen 1.2e-14, ruisbehepte toestanden binnen 1,74 cm en RMS per type binnen 2.7e-4; de vooraf vastgelegde ruisvrije drempel van ≤ 1 cm voor de toestand wordt gemist bij 2 van 4 scenario's (1,46 en 1,74 cm; de eigen schatting van Orekit ligt zo ver van zijn gesimuleerde referentie, die van kshana binnen 1e-8 m). Zie xval/od-measurements-orekit/RESULTS.md. |
Eerlijke reikwijdte: de didactische OD gebruikt vaste inertiale stations, een topocentrisch frame voor een bolvormige aarde en ogenblikkelijke geometrische metingen (geen lichttijd, aberratie, refractie of aardrotatie); de toestandsovergangsmatrix van het range-rate-/hoekpad is variationeel (met RK4 geïntegreerd met analytische tweelichamen- + J2-partiële afgeleiden), niet in gesloten vorm; er is geen sequentieel filter voor range-rate of hoeken. Het pad met alleen afstanden behoudt zijn Jacobiaan met eindige differenties. (De engine voor het fitten van een efemeride met alle krachten hieronder heeft een eigen variationele toestandsovergangsmatrix.)
Toetsing van het krachtenmodel door efemeridefitting (src/precise_od.rs)#
Een nauwkeurige schatter met batch-kleinste-kwadraten op positiewaarnemingen met alle krachten: het tesserale EGM2008-geopotentiaal (geëvalueerd in het aardvaste frame via de CIO-reductie) samengesteld met de zon/maan als derde lichaam, SRP, weerstand, GR (algemene relativiteitstheorie) volgens Schwarzschild/Lense–Thirring en de getijden hierboven, gefit aan een reeks inertiale positiebepalingen met een Jacobiaan van de variationele toestandsovergangsmatrix. Getoetst op synthetische gegevens, waarbij de referentie de eigen integrator van Kshana is, zodat elk residu van de schatter komt en niet van de dynamica.
| Aspect | Status | Bewijs |
|---|---|---|
| Samenstelling van het nauwkeurige krachtenmodel | validated |
tests/precise_od_synth.rs: het veld van graad 0 is op elke epoch de exacte puntmassa (de centrale term is rotatie-invariant); graad 8 voegt de afplatting van de J2-band toe; de zon als derde lichaam en de getijdenterm worden bit-getrouw aangesloten; een constante radiale empirische versnelling is in RTN (radiaal, transversaal, normaal) zuiver radiaal. |
| Variationele toestandsovergangsmatrix | validated |
Elke kolom van Φ over een halve LEO-baan (geopotentiaal van graad 8 + zon + maan) komt overeen met een onafhankelijke herpropagatie met centrale eindige differenties (FD) over de hele boog tot < 1×10⁻⁶ relatief in zowel de positie- als de snelheidsrespons: de gedocumenteerde kruiscontrole STM↔FD. Φ(0) = I; de uitgebreide en de gewone propagator komen overeen tot submillimeter. |
| Zelfherstel van batch-LS | validated |
Een Kshana-boog van 1 uur (graad 6 + zon + maan) die ruisvrij is waargenomen, wordt vanuit een afwijking van 150 m / 0,1 m·s⁻¹ hersteld tot de epochtoestand binnen 1×10⁻² m met een post-fit-RMS bijna nul; met witte ruis van 5 m komt de post-fit-3D-RMS uit op de ~σ-ruisvloer, zonder bias. De SRP-C_R wordt van 1,0 hersteld tot binnen 1 % van de ware waarde 1,4. |
| Uitschieterbewerking en RTN-rapportage | validated |
Een grove blunder van 500 m wordt door 5-σ-post-fit-bewerking verworpen (precies één waarneming), waardoor een schone fit op millimeterniveau overblijft; residuen worden gerapporteerd uitgesplitst in radiaal/transversaal/normaal en ook in 3D. |
| Empirische versnellingslaag (RTN constant + 1-CPR (CPR: cyclus per omloop)) | validated |
De negen a-priori-begrensde empirische parameters blijven onder 1×10⁻⁸ m·s⁻² bij een voor empirische termen vrije referentie, zonder de fit te verstoren; een in de referentie geïnjecteerde constante dwarsspoorversnelling van 3×10⁻⁸ m·s⁻² wordt hersteld tot binnen 20 %. |
Eerlijke reikwijdte: de synthetische golf gebruikt nominale aardoriëntatieparameters (EOP: UT1 (Universal Time 1, tijd van de aardrotatie) ≈ TT (Terrestrial Time), geen poolbeweging): exact voor zelfherstel, omdat hetzelfde model de boog genereert en fit. De toetsingen met datasets van instanties leggen echte finals2000A-EOP en SP3/SPK-referentie (SPK: planetaire efemeridekernel) bovenop deze engine via de CIO-frameketen (src/eop.rs, tests/agency_galileo.rs, tests/agency_swarm.rs, tests/agency_lro.rs).
Echte nauwkeurige banen van instanties (tests/agency_galileo.rs, tests/agency_swarm.rs, tests/agency_lro.rs)#
| Dataset | Status | Bewijs |
|---|---|---|
| Galileo MEO: < 5 m GREEN | validated |
De engine van Kshana met alle krachten, gefit aan een ongewijzigd stuk van de eigen definitieve baan van ESA/ESOC (ESOC: European Space Operations Centre) (ESA0MGNFIN, ITRF (International Terrestrial Reference Frame)) voor Galileo E11 over 8 h, waarbij elke ITRF-positiebepaling met echte finals2000A-EOP naar GCRS is geroteerd: post-fit 3D-RMS 0,133 m met zuiver krachten + C_R (RTN 0.105/0.067/0.047 m, C_R 1,174), 0,070 m met de empirische laag, vanuit een ruwe overlap van 78,7 km. De volledige boog van 24 h is 0,611 m. Alles ruim binnen de drempel van 5 m. Veld zwaartekrachtgeconvergeerd bij d/o-8 (identiek bij d/o 8/10/12); de job workflow_dispatch draait de volledige d/o-70. Herkomst + SHA-256 (SHA: Secure Hash Algorithm) in tests/fixtures/agency/NOTICE.md; volledig verslag in docs/AGENCY-ORBIT-VALIDATION.md. |
| Swarm-A LEO: < 5 m GREEN | validated |
Engine met alle krachten (+ atmosferische weerstand) gefit aan een ongewijzigd stuk van de eigen gereduceerd-dynamische nauwkeurige baan van ESA voor Swarm-A (SW_OPER_SP3ACOM_2_, L47, ITRF, ~430 km, ~2 cm) over 3 h bij d/o-70, echte finals2000A-EOP via de CIO-keten: laag dynamisch (alleen toestand, statische dichtheid, C_R=1) post-fit 3D-RMS 2,687 m (RTN 0.925/2.522/0.045 m, residu ≈ zuivere weerstand in de baanrichting), laag gereduceerd-dynamisch (+ empirische CPR-versnellingen) 0,098 m (RTN 0.026/0.092/0.025 m): ~10 cm tegenover de baan van ESA van ~2 cm. Herkomst + SHA-256 in tests/fixtures/agency/NOTICE.md; volledig verslag in docs/AGENCY-ORBIT-VALIDATION.md. |
| LRO (Lunar Reconnaissance Orbiter) maan: getoetst, boven 5 m (eerlijk) | validated |
Maangecentreerde fit van het krachtenmodel (src/lunar_od.rs): het GRAIL-zwaartekrachtveld GRGM660PRIM (d/o 100) in het maangebonden hoofdassenframe (src/lunar_frame.rs, IAU 2015 mean-Earth + de vaste DE421-offset (Development Ephemeris 421) van mean-Earth naar hoofdassen (ME→PA), toegepast zoals SPICE hem definieert sinds 0,36: tot dan werd hij in de verkeerde richting toegepast, ongeveer 208″ ernaast) + aarde/zon als derde lichaam, gefit met dezelfde generieke Gauss–Newton-schatter als de aarddatasets aan de echte gereconstrueerde baan van JPL Horizons LRO (NAIF −85), 4 h / 241 epochs, ~98 km. Eerlijke post-fit (0,36): dynamisch 12,05 m (RTN 2.91/10.11/5.88), gereduceerd-dynamisch 6,67 m (RTN 3.41/4.58/3.44, 1+2 empirisch per omloop), vanuit een ruwe overlap van 39,9 m (vóór de ME→PA-correctie: 12,6 m, 6,65 m, 53,8 m): boven de drempel van < 5 m, het ligt niet aan de schatter (identiek bij d/o 100/150 en atol 1e-6/1e-9). Een kruiscontrole van DE-kwaliteit (xval/anise-lunar-od: lunaire PA-oriëntatie van DE440 (Development Ephemeris 440) + DE440-efemeride via ANISE) corrigeerde de bewering over de beperkende factor: ze gaf 12,0 m dynamisch en 6,67 m gereduceerd-dynamisch, waarmee de gecorrigeerde analytische stack nu in beide lagen overeenkomt (het eerdere dynamische gat, 12,6 → 12,0 m, was de offsetfout ME→PA), dus de operationele ondergrens is niet de analytische oriëntatie/efemeride maar een door de empirische laag niet te reduceren residu (het best passend bij niet-gemodelleerde niet-gravitationele dynamica van LRO over de korte boog); de slanke analytische stack komt voor de gereduceerd-dynamische baan al overeen met DE-kwaliteit. Herkomst + SHA-256 in tests/fixtures/agency/NOTICE.md; volledig verslag in docs/AGENCY-ORBIT-VALIDATION.md. Getoetst aan echte referentie van instanties: 3 van 3; haalt < 5 m: 2 van 3. |
Zwaartekrachtkaart / alt-PNT-navigatie (src/gravimeter.rs, src/mapmatch.rs, src/particle_filter.rs, src/altpnt/terrain.rs)#
| Aspect | Status | Bewijs |
|---|---|---|
| Zwaartekrachtanomalieveld in bolfuncties | validated |
src/gravimeter.rs: een volledig genormaliseerd veld van lage graad, gecontroleerd tegen de Legendre-functies in gesloten vorm (P̄₁₁ = √3·cosφ, P̄₂₀ = (√5/2)(3sin²φ−1), P̄₂₂ = (√15/2)cos²φ) en een met de hand afgeleide anomalie van één term van 1,897 mGal. |
| Meetmodel van een koudeatoomgravimeter | validated (model) |
De witteruisvloer wordt afgeleid uit de ASD van de CAI-versnellingsmeter (σ = ASD/√τ) en geïnjecteerd als een deterministische geseede reeks (de matcher krijgt nooit ruisvrije referentie, maar de run is toch bit-reproduceerbaar). |
| Deeltjesfilter met sequentiële importance-resampling | validated |
src/particle_filter.rs: de deterministische kern is exact vastgelegd: ESS (effectieve steekproefgrootte) van 1…N, systematische resampling die indices kiest naar rato van het gewicht, de convexe combinatie van het gewogen gemiddelde, een Gaussische aannemelijkheid die de schatting naar de meting trekt en determinisme van de geseede voorspelling. |
| Aannemelijkheid van kaartmatching + herstel | validated |
src/mapmatch.rs: field_likelihood piekt (= 1) bij een perfecte match en daalt tot e^(−½) bij één sigma; een deeltjesfilter over een kenmerkend synthetisch terreinstuk herstelt de ware positie tot binnen 0,1. |
| Benchmark van 60 minuten zonder GPS | validated |
run_gps_denied_gravity_nav (scenarios/gps-denied-gravity-nav.toml): een uitval van ~700 km / één uur waarbij de inertiale oplossing wegdrijft tot ≈ 70 km wordt hersteld tot ≈ 145 m (< 500 m) door een hiërarchische matcher van grof naar fijn: bit-reproduceerbaar, stabiel over ruisrealisaties en aantoonbaar beperkt door verfijning (een enkel grof raster stagneert bij ~2 km). |
SRTM-lader (Shuttle Radar Topography Mission) voor .hgt-DEM (digitaal hoogtemodel) + bilineaire bemonstering (ORACLE A) |
validated |
src/altpnt/terrain.rs / tests/terrain_nav_validation.rs: een met de hand opgebouwde .hgt-buffer van 2×2 met hoeken [100.200;300.400] interpoleert bilineair naar exact 250,0 in het celmidden (referentie in gesloten vorm), de heen-en-terugomzetting van 16-bit-big-endian is exact en de rijomkering plaatst de noordelijkste bestandsrij op de hoogste opgeslagen breedte: alles tegen de specificatie van het GDAL-stuurprogramma (Geospatial Data Abstraction Library) voor SRTMHGT (Shuttle Radar Topography Mission-hoogtebestandsformaat) (16-bit met teken big-endian, rij-voor-rij, noordelijke rij eerst, leeg -32768, https://gdal.org/en/stable/drivers/raster/srtmhgt.html). Een vastgelegd testbestand van 11×11 (tools/gen_terrain_fixture.py) oefent de parser in CI; en een vastgelegde echte SRTM-v3-tegel van NASA/USGS (USGS: United States Geological Survey) uit het publieke domein (N36W117, Death Valley, gedecimeerd tot 6 boogseconden, 722 KB, tests/fixtures/terrain/N36W117_sub6.hgt) wordt in CI gelezen (niet genegeerd, real_srtm_committed_badwater_tile_reads_real_relief) en plaatst Badwater Basin op ≈ −78 m binnen de gedocumenteerde band [−95,−70] m (meting van NGS/NOAA (NGS: National Geodetic Survey; NOAA: National Oceanic and Atmospheric Administration) ≈ −86 m) met het tegelmaximum op ≈ 2161 m: de waarheidsbron is de meting, het DEM wordt getest (niet-circulair). Grotere gepubliceerde spothoogten (Mount Whitney 4421 m) blijven in met #[ignore] afgeschermde tests met volledige tegels. |
| Convergentie van terreingebonden navigatie (TERCOM/SITAN (TERCOM: terrain contour matching; SITAN: Sandia Inertial Terrain-Aided Navigation)) (ORACLE B) | validated |
run_terrain_nav (scenarios/terrain-nav.toml): een met de hand afgeleide geïnjecteerde INS-drift (0,5°N, −0,4°E ≈ 70 km op ~12° breedte, berekend als drift° × M_per_deg × cos breedte) wordt hersteld tot < 500 m (binnen de ondergrens van de rasterresolutie search_step/factor² ≈ 140 m), een vermindering met > 100× ten opzichte van vrij-inertiaal: gecontroleerd tegen het geïnjecteerde getal, nooit tegen het DEM (niet-circulair), bit-reproduceerbaar en stabiel over ruisseeds. |
| Fusiewinst van gecombineerde zwaartekracht+magnetisme+terrein (ORACLE C) | validated |
run_combined_altpnt (scenarios/combined-altpnt.toml): drie scalaire kanalen (Δg · |B| korstanomalie · hoogte) die als productaannemelijkheid zijn gefuseerd, geven een begrensd residu van < 500 m over de uitval van 60 min dat, gemiddeld over seeds, niet slechter is dan het beste afzonderlijke kanaal (additiviteit van informatie / lagere CRLB (Cramér–Rao-ondergrens)). Het ligt in het gepubliceerde regime van "tientallen meters" CEP (circular error probable) voor TERCOM / terreingebonden navigatie (TRN) (https://en.wikipedia.org/wiki/TERCOM; PeerJ 2024 ESKF-TERCOM (ESKF: error-state Kalman filter), https://peerj.com/articles/cs-3118/). |
Eerlijke reikwijdte: het zwaartekrachtveld is van lage graad + synthetische mascons, niet de volledige coëfficiëntenset van EGM2008/EIGEN (EIGEN: European Improved Gravity model of the Earth by New techniques); het magnetische kanaal rust op het gladde IGRF-hoofdveld plus synthetische mascons voor korstanomalieën (een echte hoogfrequente korstkaart is een vervolgstap); het CI-terreinveld voor de benchmarks van de navigatiepositiebepaling is het zelfstandige synthetische DEM, terwijl de .hgt-lezer zelf nu in CI is getoetst aan een vastgelegde echte SRTM-v3-tegel (hierboven); de echte tegels met volledige resolutie blijven met #[ignore] afgeschermd. Een Monte-Carlo van de representatiefout van de kaart blijft een vervolgstap. Alle drie de navigators zijn nu aangesloten op de scenario-engine met kind= (gravity-map, terrain-nav, combined-altpnt).
Foutmodel voor INS / IMU: toetsing aan datasheets (src/inertial/)#
Het stochastische foutmodel van de IMU is getoetst aan gepubliceerde specificaties van fabrikantdatasheets / datasets, nooit aan een waarde die Kshana zelf heeft voortgebracht. De brug van een specificatie in veldeenheden naar het ruismodel in SI (International System of Units) is de standaardidentificatie met de Allan-deviatie (Riley, NIST SP 1065 §5; IEEE (Institute of Electrical and Electronics Engineers) Std 952): de random-walk-coëfficiënt N is de overlappende ADEV afgelezen bij τ = 1 s op de helling τ⁻¹ᐟ², en de coëfficiënt voor biasinstabiliteit is het vlakke Allan-plateau (tests/imu_allan_spec.rs, hermetisch: geen download).
| Aspect | Status | Bewijs / onafhankelijke referentie |
|---|---|---|
| Laag voor eenheidsconversie (het grootste risico op circulariteit, nr. 1) | validated |
Met de hand gecontroleerd: 0,15 deg/√hr = 4.3633e-5 rad/√s; 3,6 µg = 3.5304e-5 m/s²; 2,0 deg/hr = 9.6963e-6 rad/s. |
| Angle random walk van de gyro | validated |
ADIS16465-ARW van 0,15 deg/√hr (datasheet van Analog Devices) hersteld uit ADEV(1 s) tot < 5%. |
| Velocity random walk van de versnellingsmeter | validated |
ADIS16465-VRW van 0,1 m/s/√hr hersteld tot < 5%. |
| Allan-helling van witte ruis | validated |
ADIS16460, log-log-helling van de witte tak −0,5 ± 0,05. |
| Plateau van biasinstabiliteit tijdens de run | validated |
ADIS16465-gyrobiasinstabiliteit (BI) van 2,0 deg/hr hersteld als het vlakke Allan-minimum tot < 15%. |
| Tweede IMU-profiel | validated |
NaveGo ADIS16488 (ARW 0,3 deg/√hr, VRW 0,029 m/s/√hr) beide hersteld tot < 5%. |
Eerlijke reikwijdte: dit toetst het stochastische foutmodel aan Allan-coëfficiënten uit datasheets. De voertuigdataset KF-GINS van i2Nav-WHU (WHU: Wuhan University) wordt gebruikt als afzonderlijke, door data afgeschermde controle: de losjes gekoppelde EKF met gesloten lus voor foutstaten en met het hefboomarmmodel voor GNSS is een VALIDATED rij van de verificatiematrix (Losjes gekoppelde GNSS/INS-EKF met hefboomarm op de KF-GINS-dataset), vergeleken met het C++-referentietraject van KF-GINS onder drempels die vóór de run zijn vastgelegd. Hij draait alleen waar de dataset wordt aangeleverd (KSHANA_KFGINS_DIR); zonder dataset draaien de synthetische lader en de hefboomarmtests. De strak gekoppelde varianten en de varianten met draaggolffase worden door die rij niet gedekt (de rij voor strak gekoppelde GNSS/INS met draaggolffase is MODELLED).
Deep-space- en Mars-PNT: D0-fundament (src/body.rs, src/mars_frame.rs, src/ephem_provider.rs, src/radiometric.rs, src/timescales.rs)#
De eerste mijlpaal van de navigatie-engine voor de diepe ruimte: de op de aarde gerichte kern wordt gegeneraliseerd naar een willekeurig centraal lichaam, met Mars-dynamica, een naad voor efemeridelevering, tijd op submicroseconde-niveau en de primitieven voor lichttijd en relativistische vertraging. Elk bestaand aardscenario is byte-identiek: de golden-bestanden voor reproduceerbaarheid tussen platforms (tests/cross_platform_golden.rs, tests/golden.rs) slagen ongewijzigd zonder regeneratie, afgedwongen per commit.
| Term | Status | Bewijs |
|---|---|---|
| Abstractie van het centrale lichaam (aarde byte-identiek) | validated |
src/body.rs: Body{mu,re,zonals,gravity,rotation,IAU-pole} met earth()/mars()/moon()/sun(). tests/mars_dynamics.rs stelt dat two_body_accel_body(r,&Body::earth()) en zonal_accel_body gelijk zijn aan de oude aardefuncties met exacte bitgelijkheid (assert_eq!), en een boog van de aarde met standaard-ForceModel is byte-identiek: de golden-bestanden voor reproduceerbaarheid zijn ongewijzigd (zelfde SHA, geen regeneratie). |
| Marszwaartekracht (GMM-3 (GMM: Goddard Mars Model), tesseraal, lichaamsgebonden) | validated (model) |
Body::mars_gmm3(nmax): zonalen C̄20/C̄30/C̄40 uit J2/J3/J4 van MRO110 (zwaartekrachtoplossing van de Mars Reconnaissance Orbiter) (C̄n0=−Jn/√(2n+1), J2 wordt heen en terug omgezet tot 1.9604e-3) + sectoriale/tesserale MRO110B2 C̄22/S̄22, C̄32/S̄32 (Konopliv et al. 2011; in tabelvorm bij Liu, Baoyin & Ma 2012), geëvalueerd in het lichaamsgebonden IAU-Marsframe. tests/mars_dynamics.rs controleert de heen-en-terugomzetting, de afwijking op J2-schaal van de puntmassa en dat het veld werkelijk lichaamsgebonden is (een heroriëntatie van een kwart Marsdag verandert de inertiale versnelling). Hogere graad/orde laadt uit een meegeleverde .gfc via gravity_sh::from_gfc. |
| Lichaamsgebonden Marsframe (IAU-pool) | validated |
src/mars_frame.rs: de IAU-3-1-3-rotatie R3(W)·R1(90°−δ0)·R3(90°+α0) (conventie van WGCCRE/NAIF (WGCCRE: Working Group on Cartographic Coordinates and Rotational Elements), gelijk aan lunar_frame.rs). Tests: orthonormaal tot 1e-12 met det +1, identiteit bij heen-en-terugomzetting, de nulmeridiaan schuift op met prime_w_dot per dag. |
| Propagatie rond Mars / de zon als centrum | validated (zelfconsistentie) |
tests/mars_propagation.rs: een lage Marsbaan keert na één Kepler-periode terug naar haar begin (sluiting); de specifieke energie ε=v²/2−μ/r drijft over de boog < 1e-9 af; de seculiere nodale regressie door Mars-J2 komt overeen met de analytische snelheid van Vallado (onafhankelijk berekend ≈ −5,15 °/dag bij 60° incl.) tot 3%; een heliocentrische baan herstelt het Marsjaar van ~687 dagen (vis-viva + onafhankelijk herstel van de periode uit de boog). Geen externe gegevens. |
| Kruiscontrole met DE440 (heliocentrisch Mars) | kernel-gated |
xval/anise-mars-od/ (UITGESLOTEN uit de workspace; MPL-2.0-ANISE beperkt tot een eigen Cargo.lock; spiegelt xval/anise-lunar-od): vergelijkt de propagatie van Kshana van Mars met de zon als centrum met JPL DE440 (via ANISE), met Horizons-referentie letterlijk geciteerd (herkomst + SHA-256). Gereproduceerd resultaat (seed-JD (Juliaanse datum) 2459580,5 TDB (Barycentric Dynamical Time), de440s.bsp SHA-256 c1c7fee…b260a49f2): positieresidu 137 m bij een boog van 1 dag (5,97×10⁻¹⁰ van de heliocentrische afstand van 2,299×10¹¹ m), oplopend tot 3,3 km bij 5 d, 87,9 km bij 30 d, 1,71 Mm bij 90 d: het residu groeit met de booglengte omdat een tweelichamenmodel met de zon als centrum bewust de planetaire verstoringen (vooral van Jupiter) en de interne beweging van het Marssysteem weglaat die de barycentrische DE440-efemeride wel bevat, dus de groei is het eerlijke kenmerk van de niet-gemodelleerde n-lichamendynamica en geen integratorfout; een korte boog die een kleine fractie van de heliocentrische afstand blijft, bevestigt dat de machinerie met de zon als centrum juist is. Draait alleen wanneer de DE440-kernel aanwezig is ($KSHANA_ANISE_DE440S, of automatisch opgehaald ~32 MB): een handmatige / workflow_dispatch-controle van DE-kwaliteit, geen standaardpoort in CI, zodat de gepubliceerde crate en elke standaardpoort byte voor byte onaangetast blijven. |
| Lichttijd + Shapiro-vertraging | validated |
src/radiometric.rs: de iteratieve oplossing voor lichttijd met geretardeerde epoch (convergeert |Δτ|<1e-12 s, begrensd) en de Shapiro-vertraging Δt=(2μ/c³)·ln[(r1+r2+r12)/(r1+r2−r12)]. Tests: aarde–zon ≈ 499 s en aarde–maan ≈ 1,28 s via de ingebouwde efemeride; een synthetische zender met constante snelheid herstelt de analytische geretardeerde oplossing tot <1e-9 s (oplosser aantoonbaar onafhankelijk van elke echte efemeride); Shapiro komt exact overeen met een met de hand berekende waarde en geeft ~100–250 µs voor een rakende straal bij superieure conjunctie aarde–Mars. |
| Naad voor efemeridelevering | validated |
src/ephem_provider.rs: trait EphemerisProvider + kernelvrije BuiltinEphemeris (Montenbruck–Gill zon/maan, geocentrisch); geeft None terug voor lichamen waarvoor hij geen reeks heeft (bijvoorbeeld Mars), waarvoor de ANISE-provider van DE-kwaliteit de route is: dezelfde splitsing tussen ingebouwd en ANISE als bij LunarEnvironment/AniseLunarEnvironment. |
| Tweedelige tijd + TT↔TDB | validated |
src/timescales.rs: een TwoPartJd{day,frac} met Knuth-two-sum-accumulatie herstelt intervallen op submicroseconde-niveau die de JD met één f64 nabij J2000 verliest (>1000× beter, getest); tt_to_tdb/tdb_to_tt gebruiken de dominante periodieke reeks van Fairhead–Bretagnon (|TDB−TT|≲1,7 ms, met de hand geverifieerd bij J2000). Additief: het bestaande tijdpad met één f64 is ongewijzigd. |
Radiometrische waarneembare grootheden voor de diepe ruimte en CCSDS Tracking Data Message: D1 (src/radiometric.rs, src/ccsds_tdm.rs)#
De tweede mijlpaal van de navigatie-engine voor de diepe ruimte: het model van waarneembare grootheden dat de D0-kernel voor lichttijd/relativistische vertraging omzet in de werkelijke grootheden die een volgpassage van het Deep Space Network (DSN) of ESTRACK (European Space Tracking network) rapporteert: afstand, Doppler met één, twee of drie wegen, coherente transponder-turn-around, regeneratieve/PN-afstandsmeting (PN: pseudoruis), Δ-DOR (DOR: differentiële enkelwegafstandsmeting) en de voortplantingsmedia, plus de CCSDS-invoer en -uitvoer (Consultative Committee for Space Data Systems) 503.0-B Tracking Data Message (TDM) die een standaard volgbestand van een ruimtevaartinstantie inleest en uitgeeft. Eerlijke reikwijdte: dit zijn exacte geometrische modellen volgens de conventies van Moyer / CCSDS; de meetruis is de door de aanroeper aangeleverde sigma per waarneming en zit niet in het model ingebakken. Het reproduceren van een specifieke echte volgpassage vereist echte TDM-gegevens plus de oplosser voor baanbepaling in de diepe ruimte: dat is D2, niet D1. Alles hieronder is additief (de golden-bestanden voor reproduceerbaarheid zijn ongewijzigd; zelfde SHA, geen regeneratie).
| Term | Status | Bewijs |
|---|---|---|
| Afstand en Doppler met 1/2/3 wegen (tweebeensoplossing van Moyer) | validated (model) |
src/radiometric.rs: one_way_range/two_way_range stellen de D0-oplossingen voor lichttijd samen, geretardeerd (neerwaartse leg) en vervroegd (opwaartse leg); de conventie voor de volledige heen-en-terugreis is ρ₂ = c·(τ_up + τ_down) (m), gedocumenteerd en consistent. one_way_doppler/two_way_doppler/three_way_doppler vormen de draaggolfverschuiving f_D = −(M·f_ul/c)·(ρ̇_up + ρ̇_down) (Hz) uit de afstandssnelheid langs de zichtlijn, tekenconventie: een naderend ruimtevaartuig geeft een positieve (blauwe) verschuiving. Tests: afstand met twee wegen = som van de legs tot <1 mm (~2 AU heen-en-terugreis aarde–zon); afstand met één weg = c·τ exact; Doppler met één weg komt overeen met de analytische −(f/c)·ρ̇ voor een radiale zender met constante snelheid tot ppt; drie wegen met stations op dezelfde plek valt byte voor byte samen met twee wegen. |
| Coherente transponder-turn-around (exacte DSN-verhoudingen) | validated |
src/radiometric.rs turnaround_ratio: de exacte rationale DSN/CCSDS-turn-aroundgetallen M = f_down/f_up (Moyer §13; DSN 810-005 module 201/214): S/S 240/221, S/X 880/221, X/S 240/749, X/X 880/749, X/Ka 3344/749, Ka/Ka 3360/3599. Getest op exacte gelijkheid; een ongedefinieerd bandpaar geeft een panic (faalt luid, verzint nooit een verhouding). two_way_doppler_coherent past de bandcarrier + verhouding van begin tot eind toe en is gelijk aan de expliciete two_way_doppler tot op machineprecisie. |
| Regeneratieve / PN-afstandsmeting (CCSDS 414; ambiguïteit) | validated |
src/radiometric.rs: regenerative_range_ambiguity = c/(2·chip_rate) (de ondubbelzinnige afstand op de schaal van de resolutie per chip) en pn_range_ambiguity = dat × de codelengte (de volledige ondubbelzinnige afstand van de PN-code c·L/(2·f_chip)), volgens CCSDS 414.1-B. Getest: een afstandsklok van 1 MHz geeft ~149,9 m; de gewogen-stemmende PN-code van CCSDS-414.1 (1.009.470 chips) bij 1 Mchip/s geeft de ontwerp-ondubbelzinnige afstand van ~151.000 km; een verdubbeling van de chipsnelheid halveert de ambiguïteit per chip. |
| Δ-DOR (CCSDS 506, vlak aan de hemel) | validated (model) |
src/radiometric.rs delta_dor: de differentiële vertraging in het hemelvlak Δτ = −B⃗·(ŝ_sc − ŝ_quasar)/c (s) voor een interferometerbasislijn B⃗ (CCSDS 506.1-B). Getest: komt overeen met de exacte analytische projectie −B·sin(Δθ)/c voor een bekende offset in lijn met de basislijn tot op 1e-15 s, de grootte voor kleine hoeken |Δτ| ≈ B·Δθ/c en de nul (een ruimtevaartuig dat in lijn ligt met de quasar geeft exact nul differentiële vertraging). |
| Plasmakalibratie met twee frequenties volgens 1/f² | validated (model) |
src/radiometric.rs: solar_plasma_delay = K_PLASMA·TEC/(c·f²) (de dispersieve groepsvertraging door geladen deeltjes met 1/f², K_PLASMA = 40.3 m·Hz²·TECU⁻¹); coronal_tec_from_sep de coronakolom van het type Cassini met TEC ∝ 1/sin(SEP) (analytisch surrogaat, geen gekalibreerde corona); dual_freq_plasma_calibration de dispersie-inversie K_disp = (Δt_X−Δt_Ka)/(1/f_X²−1/f_Ka²) die de DSN gebruikt om plasma te verwijderen. Getest: de 1/f²-wet d_X/d_Ka = (f_Ka/f_X)²; de corona neemt toe naar conjunctie; en een geïnjecteerde TEC wordt hersteld tot <1 % (in feite ≪ 1e-9 zonder ruis): dual_frequency_recovers_injected_plasma. |
| Troposfeer-/ionosfeermedia (hergebruik van GNSS-modellen) | validated (model) |
src/radiometric.rs tropo_delay/iono_delay: het grondstationsegment voor de diepe ruimte doorkruist dezelfde aardatmosfeer die het GNSS-pakket al modelleert, dus deze delegeren aan gnss_sim::tropo_delay_m (Saastamoinen-zenit + Niell-afbeelding, niet-dispersief) en gnss_sim::klobuchar_delay_m (uitgezonden ionosfeer). Getest op aansluiting en fysisch teken: troposfeer positief en groter bij lage elevatie dan in het zenit; ionosfeer een niet-negatieve schuine vertraging (numerieke getrouwheid is die van de eigen, aan datasheets gerefereerde tests van het GNSS-pakket). |
| CCSDS-TDM 503: inlezen / uitgeven + radiometrische brug | validated |
src/ccsds_tdm.rs: een KVN-lezer (keyword-value notation) en -schrijver voor CCSDS 503.0-B-2 (header + segmenten META_START…META_STOP / DATA_START…DATA_STOP; records RANGE/DOPPLER_*/ANGLE_*/*_FREQ). Tests (#[cfg(test)] + tests/fixtures/deepspace/reference.tdm): het referentietestbestand wordt ingelezen tot de verwachte benoemde velden; inlezen→uitgeven→inlezen is een gelijke structuur (semantische heen-en-terugomzetting); de brug to_radiometric_obs zet de ondubbelzinnige records RANGE/DOPPLER_* om naar RadiometricObs (weg uit PATH 1,2/1,2,1/1,2,3, band uit TRANSMIT_BAND, km→m); een bestand met meerdere segmenten reset de toestandsmachine. Eerlijk overslaan in plaats van raden: hoeken/frequenties, onbekende banden, epochs met dag van het jaar en niet herkende tijdsystemen worden overgeslagen, nooit verkeerd omgezet, en sigma blijft 0.0 zodat de aanroeper kan wegen. |
| DSN/ESTRACK-benchmark (modelprecisie ≫ gepubliceerde ondergrens) | validated (model) |
tests/radiometric_benchmark.rs: de waarneembare grootheden zijn exacte geometrische berekeningen, dus de eerlijke benchmark is dat de eigen numerieke fout van het model ver onder de gepubliceerde DSN/ESTRACK-meetondergrens ligt: het model is niet de knelpunt voor nauwkeurigheid, de door de aanroeper aangeleverde σ wel. Elke test berekent een waarneembare grootheid op twee onafhankelijke manieren (of herstelt een geïnjecteerde referentie) en stelt dat het residu onder de ondergrens ligt: afstand wordt heen en terug omgezet tot <1 mm ≪ de ondergrens van ~1 m voor PN-afstandsmeting (DSN 810-005 mod. 214 / CCSDS 414.1-B); Doppler komt overeen met de exacte afstandssnelheid met geretardeerde tijd in gesloten vorm v/(1+v/c) tot ~10⁻⁶ m/s, meerdere × onder de X-band-ondergrens van ~0,05 mm/s (DSN 810-005 mod. 203 / Moyer): het residu is de ondergrens van f64-afstandsverschillen bij ~1 AU, een numeriek kenmerk en geen modelleringsfout; Δ-DOR reproduceert de projectie in gesloten vorm tot een equivalente hoek in het hemelvlak ≪ 1 nrad ≪ de ondergrens van ~1–10 nrad (DSN 810-005 mod. 210 / CCSDS 506.1-B); plasma met twee frequenties herstelt de geïnjecteerde vertraging tot ≪ 1 %; en de Shapiro-vertraging ligt in de gepubliceerde band van ~100–250 µs voor conjunctie aarde–Mars. De gepubliceerde cijfers worden vermeld en aangeduid als DSN-specificaties van ordegrootte, geen verzonnen exacte getallen, en de moduledocumentatie zegt uitdrukkelijk dat dit de MODELPRECISIE toetst en niet de reproductie van een echte passage (dat is D2 + echte TDM). |
Gereduceerd-dynamische OD voor de diepe ruimte: D2 (src/deepspace_od.rs, src/clock_state.rs, src/mars_atmos.rs)#
De derde mijlpaal van de navigatie-engine voor de diepe ruimte: de schatter die de radiometrische waarneembare grootheden van D1 omzet in een herstelde baan: een numeriek robuust Square-Root Information Filter (SRIF) met gereduceerd-dynamische empirische versnellingen, een klok aan boord met drie toestanden, een weerstandsmodel voor Mars en de radiometrische meetpartiëlen die afstand/Doppler met de filtertoestand verbinden, van begin tot eind gesloten door een synthetisch herstel van baanbepaling in een lage Marsbaan (LMO). Eerlijke reikwijdte: het herstel is een synthetische gesloten lus (referentie en filter delen dezelfde Mars-propagator en de waarnemingen zijn hetzelfde geometrische model van waarneembare grootheden dat het filter inverteert, plus geïnjecteerde Gaussische ruis): het toetst de schattermachinerie, niet de absolute getrouwheid van het krachtenmodel van Mars; de externe kruiscontrole van DE-kwaliteit is de door een kernel afgeschermde crate xval/anise-mars-od (D0.8b). Alles hieronder is additief (de golden-bestanden voor reproduceerbaarheid zijn ongewijzigd; zelfde SHA, geen regeneratie).
| Term | Status | Bewijs |
|---|---|---|
| SRIF-kern (square-root information filter) | validated |
src/deepspace_od.rs Srif: een zelfgebouwd square-root information filter van Bierman: bovendriehoeks-R met Λ = RᵀR, informatievector b, Householder-meet-/tijdupdates, kale Vec<f64>-rekenkunde (geen nalgebra). Tests: het sequentiële SRIF komt overeen met de oplossing met batch-gewogen-kleinste-kwadraten (gauss_newton) in zowel toestand als covariantie tot 1e-9 op een ontworpen lineair-Gaussisch probleem (srif_matches_batch_on_linear); de herstelde covariantie P = R⁻¹R⁻ᵀ is na een lange reeks meet-/tijdupdates per constructie symmetrisch (1e-12) en positief definiet (srif_covariance_is_spd, Cholesky slaagt); en informatie hoopt zich op (het spoor van P neemt monotoon af naarmate metingen met identieke geometrie worden toegevoegd). |
| Gereduceerd-dynamische empirische versnellingen (afstemming cruise↔LMO) | validated |
src/deepspace_od.rs ReducedDynamicOd: het filter [r; v; a_emp] met negen toestanden, met empirische RTN-versnellingen als Gauss–Markov-processtoestanden van de eerste orde, de reduced-dynamic-techniek van JPL/ESOC blootgesteld als één dynamic_tightness-knop (bijna dynamisch ⇒ egaliseert ruis op een ballistische boog; bijna kinematisch ⇒ de empirische laag absorbeert een niet-gemodelleerde manoeuvre/weerstand). Tests: een bijna kinematisch filter volgt een stapvormige (thruster-)manoeuvre met <½ van het residu van het bijna dynamische, terwijl het bijna dynamische filter een ruisachtige ballistische boog beter egaliseert (reduced_dynamic_tracks_maneuver); het variëren van de strakheid verschuift het post-fit-residu monotoon, een continuüm en geen schakelaar (tuning_is_a_continuum). |
| Klok aan boord met 3 toestanden (fase/frequentie/drift, van Loan Q, Allan) | validated |
src/clock_state.rs ClockState3: foutstaat voor fase + fractionele frequentie + frequentiedrift met de exacte discrete procesruis van van Loan en een Joseph-gestabiliseerde update. Tests: de gediscretiseerde Q komt overeen met de met de hand afgeleide polynoom van van Loan tot 1e-12 en reduceert exact tot de Q van de KalmanClock met twee toestanden wanneer drift = 0 (een strikte superset); een coast met meerdere stappen laat de fasevariantie groeien volgens de analytische holdover-relatie van NIST SP 1065 via de random-run-term T⁵; de driftstoestand herstelt een ware verouderingshelling tot <5 %; een Allan-profiel van USO-klasse wordt hersteld (overlappende ADEV bij τ=1 s binnen de kalibratiepoort) en de schatter blijft NEES-consistent (>95 % binnen 3σ) en PSD door een run met zware Q/R. ClockClass bevat de geciteerde CSAC/USO/DSAC-cijfers (USO: ultrastabiele oscillator; DSAC: Deep Space Atomic Clock) voor σ_y(1 s) en de Dopplerondergrens Δv = c·σ_y. |
| Atmosferische weerstand op Mars (Mars-GRAM-lite (GRAM: Global Reference Atmospheric Model)) | validated (model) |
src/mars_atmos.rs: een stuksgewijs exponentieel profiel van de neutrale dichtheid van Mars (oppervlak ~0,020 kg/m³, schaalhoogte nabij het oppervlak ~11 km, het lage-stofgemiddelde van Mars-GRAM 2010 / MCD (Mars Climate Database)) en de kwadratische weerstandsversnelling ten opzichte van de meeroterende Marsatmosfeer, plus een variant ..._scaled die het SRIF kan vermenigvuldigen. Tests: de dichtheid neemt monotoon en continu af over de banden, de teruggevonden schaalhoogte nabij het oppervlak is de fysische ~11 km, de weerstand is strikt antiparallel aan de relatieve snelheid (uitwendig product verdwijnt tot 1e-12) met een redelijke grootte van ~3e-4 m/s² in LMO, en ze is lineair in de ballistische term. Eerlijke reikwijdte: een representatieve technische atmosfeer, geen in de vlucht getoetste Mars-GRAM/MCD met afhankelijkheid van stof/seizoen/lokale tijd. |
| Radiometrische meetpartiëlen (afstand/Doppler) voor het SRIF | validated |
src/deepspace_od.rs range_observable / range_rate_observable: de partiëlen voor afstand langs de zichtlijn ρ = |r_sc − r_sta| (∂ρ/∂r = û, ∂ρ/∂v = 0) en afstandssnelheid ρ̇ = û·(v_sc − v_sta) (∂ρ̇/∂v = û, ∂ρ̇/∂r = (v_rel − ρ̇·û)/ρ) die de waarneembare grootheden van D1 met de filtertoestand verbinden, plus de frequentiepartiële van de klok voor Doppler met één weg ∂ρ̇_obs/∂y = c. Tests: beide partiëlen komen overeen met een centraal eindig verschil van de waarneembare grootheid tot 1e-6 (range_partial_matches_finite_difference, range_rate_partials_match_finite_difference); een enkele afstandsupdate verkleint de covariantie in de waargenomen richting (zichtlijn, LOS) met ≫1000× en houdt haar positief definiet (PD), en een Dopplerupdate verkleint de variantie van de snelheid langs de LOS (radiometric_update_reduces_covariance_in_observed_direction, range_rate_update_observes_velocity). |
| Mars-LMO-OD van begin tot eind uit radiometrische gegevens | validated (synthetic closed-loop) |
tests/mars_lmo_od.rs: een referentieboog in een lage Marsbaan, gepropageerd onder Body::mars_gmm3(4)-zwaartekracht, genereert ruisachtige afstand (σ=1 m) + Doppler (σ=0,1 mm/s) met twee wegen tegenover twee volgstations; het gereduceerd-dynamische SRIF herstelt haar uit een beginstoestand die ~2,7 km is verstoord. Bereikt: geconvergeerde positie-RMS ≈ 0,2 m (submeter, ruim binnen het criterium van meters tot tientallen meters) over een boog van 3 omlopen met een cadans van 30 s, met de gefactoriseerde covariantie op elke epoch positief definiet (de SRIF-garantie, overal gecontroleerd). Het continuüm van afstemming van cruise naar LMO wordt van begin tot eind beproefd: met een referentie met niet-gemodelleerde weerstand die het filtersjabloon mist, herstelt de gereduceerd-dynamische knop (strakheid 1) tot ~14 m tegenover ~677 m voor de bijna dynamische run (strakheid 0): een verbetering van 48× doordat de empirische laag de weerstand absorbeert. Eerlijke reikwijdte: synthetische gesloten lus (referentie = dezelfde propagator die het filter gebruikt); de externe kruiscontrole van DE-kwaliteit is de door een kernel afgeschermde xval/anise-mars-od (D0.8b), hier nooit uitgevoerd, geen netwerk. |
Scenario voor PNT in de diepe ruimte en fusie van één weg + twee wegen: D3 (src/mars_pnt.rs, src/deepspace_od.rs)#
De vierde mijlpaal van de navigatie-engine voor de diepe ruimte: een uitvoerbaar Mars-PNT-productscenario dat het Marslichaam / -frame van D0, de radiometrische waarneembare grootheden van D1 en de gereduceerd-dynamische OD van D2 bundelt in één scenariosoort mars-pnt. Het modelleert een kleine relayconstellatie in de stijl van MARCONI die een signaal in de ruimte met één weg (aan de klok gekoppeld) uitzendt en een link met twee wegen (coherent, klokvrij) naar een station voor de diepe ruimte doorgeeft, en navigeert drie referentiegebruikers (Marsoverdracht, orbiter in een lage Marsbaan, vast oppervlaktepunt) met de gezamenlijke fusieschatter van D3.1 voor één weg + twee wegen: een SRIF met twaalf toestanden dat het gereduceerd-dynamische baan-/empirische blok van D2 uitbreidt met een klok aan boord met drie toestanden. Eerlijke reikwijdte: elke kwaliteitsmaat is de formele covariantiegrens van de schatter (1σ / 3σ positie per epoch) en de behaalde RMS tegenover een synthetische gesloten-lusreferentie (referentie en filter delen dezelfde Marsdynamica en hetzelfde geometrische model van waarneembare grootheden, plus geïnjecteerde Gaussische ruis): een gesimuleerde navigatiekwaliteitsmaat, GEEN beschermingsniveau voor de luchtvaart met certificering en GEEN beweringen over vluchten (geen gecertificeerd foutmodel, geen integriteitsbewaking, geen echte volggegevens). Alles hieronder is additief (de golden-bestanden voor reproduceerbaarheid zijn ongewijzigd; zelfde SHA, geen regeneratie).
| Term | Status | Bewijs |
|---|---|---|
| Gezamenlijke radiometrische fusie van één weg + twee wegen (gefuseerd verslaat elk afzonderlijk) | validated |
src/deepspace_od.rs FusionOd: het gereduceerd-dynamische SRIF van D2.2, aangevuld met de drie klokstaten aan boord (ClockState3), dat een gemengde tijdreeks van afstand/Doppler met twee wegen (klokvrij, baanbepalend: nul klokkolommen in de partiële) en één weg (aan de klok gekoppeld: de frequentiepartiële ∂ρ̇_obs/∂y = c) opneemt via fused_observable. De structuur kalibreren-dan-coasten: passages met twee wegen leggen de baan vast, gegevens met één weg kalibreren daarna de klok en laten de baan tussen passages coasten met een fout die wordt begrensd door de Allan-stabiliteit van de klok. Getest in src/deepspace_od.rs #[cfg(test)]: de gefuseerde oplossing verslaat elk afzonderlijk linktype; de coastfout van een run met alleen één weg groeit met de tussenruimte tussen passages met twee wegen, consistent met de Allan-grens van de klokklasse; de gezamenlijke covariantie blijft SPD (symmetrisch positief definiet). |
| MARCONI-constellatie (areostationaire straal, occultatie) | validated (model) |
src/mars_pnt.rs MarconiConstellation: een set van vijf relays: drie areostationaire relays op r = (μ/ω²)^{1/3} ≈ 20 428 km (de synchrone Marsstraal uit gepubliceerde μ/spinsnelheid; getest in de band van 20.400–20.500 km) met gelijke onderlinge afstand van 120° in lengte en een inclinatie van 5°, plus twee relays in een hogere (1,4× areostationair) cirkelvormige baan met een inclinatie van 60° voor dekking in het hemelvlak. De relaytoestanden per epoch worden voorwaarts geïntegreerd onder mars_gmm3-zwaartekracht; de zichtbaarheidstest voor Mars-occultatie is de geometrie waarbij de koorde de bol vrijlaat (chord_clears_sphere, getest: een diametraal tegenoverliggende relay is geoccludeerd, een relay recht erboven is zichtbaar). Eerlijke reikwijdte: een minimale representatieve geometrie van uitzending plus relay, opgebouwd uit gepubliceerde Marsconstanten: geen specifiek ontwerp van een vluchtconstellatie. |
Scenario mars-pnt bereikbaar via CLI / Python / WASM (WebAssembly) / MCP (Model Context Protocol) |
validated |
src/mars_pnt.rs MarsScenario / run_mars_pnt is aangesloten als het scenario kind = "mars-pnt" op alle oppervlakken (D3.3): de CLI-runner, de Python-binding, de WASM/playground-build en de dispatch van de MCP-server routeren er allemaal naartoe (round-triptest src/api.rs in mars_pnt_kind_round_trips_through_the_dispatch). Meegeleverde referentiescenario's: scenarios/mars-pnt-lmo.toml, scenarios/mars-pnt-surface.toml, scenarios/mars-pnt-transfer.toml. Het resultaat bevat een expliciete fom_note die de kwaliteitsmaat aanduidt als een covariantiegrens (geen gecertificeerd PL), en de uitvoer summary / to_svg herhaalt het eerlijkheidslabel. |
| Doelen van MARCONI / LightShip gereproduceerd: < 100 m orbiter, < 15 m rover | validated (synthetic closed-loop, under stated assumptions) |
tests/mars_pnt_targets.rs: de gepubliceerde programmadoelen van MARCONI / LightShip (orbiter < 100 m, oppervlak/rover < 15 m) gereproduceerd in simulatie. Gedeelde aannames: de standaardconstellatie MARCONI met vijf relays; elke relay in zicht geeft per epoch een afstand+Doppler met één weg; een coherente stationspassage met twee wegen elke 30 min; ruis van DSN-klasse (afstand σ = 1 m, Doppler σ = 0,1 mm/s); het gezamenlijke fusiefilter met gereduceerd-dynamische baan + klok met 3 toestanden, geïnitialiseerd vanuit een a-priori-toestand die ~2,7 km is verstoord (strakheid 0,1); kwaliteitsmaat = geconvergeerde 3D-positie-RMS over de tweede helft van de boog tegenover de synthetische referentie. Orbiter (LMO ~400 km / 60° incl., USO-klok, cadans van 60 s, boog van ~2 h ≈ één omloop): behaalde geconvergeerde RMS ≈ 0,40 m ≪ het doel van 100 m (gemiddeld 3,1 relays in zicht, covariantie overal SPD). Rover (vast oppervlaktepunt op de evenaar, USO-klok, cadans van 30 s, boog van ~2 h): behaalde geconvergeerde RMS ≈ 5,1 m < het doel van 15 m (gemiddeld 3,0 relays in zicht, covariantie SPD). Beide doelen gehaald zonder enige bewering te versoepelen: de USO is de minder capabele van de realistische klokklassen aan boord (een DSAC zou alleen maar helpen) en de cadans van 30 min voor passages met twee wegen is conservatief voor een routinematig schema van een relaynetwerk, dus de aannames zijn fysiek redelijk voor een systeem van MARCONI-klasse en niet afgestemd om te slagen. Eerlijke reikwijdte: gesimuleerde reproductie onder de vermelde aannames, GEEN bewering over vluchten en geen gecertificeerd beschermingsniveau; de synthetische gesloten-lusreferentie deelt de Marsdynamica en het model van waarneembare grootheden van het filter. |
Maancoördinatentijd: relativistische klokgang aarde–maan (src/lunar_time.rs)#
Een tijdschaal voor maancoördinatentijd (LTC/TCL (TCL: Temps-Coordonnée Lunaire, de Franse naam van Lunar Coordinate Time)) vereist de seculiere snelheid waarmee een klok op het maanoppervlak loopt ten opzichte van een klok op het aardgeoïde (TT). src/lunar_time.rs berekent die vanuit eerste principes: een eerste post-Newtoniaanse identiteit die het verschil in eigenpotentiaal (de conventionele geoïdepotentiaal W0 = L_G·c² ≈ 6.26369e7 m²/s² van IAU L_G min de eigenpotentiaal GM_moon/R_moon ≈ 2.822e6 m²/s² van het maanoppervlak) en de kinetische term (Doppler van de tweede orde) −<v²>/2c² uit de geocentrische maansnelheid (met eindige differenties afgeleid uit de maanreeks van Montenbruck-Gill in src/ephem.rs) optelt. De dominante term van de eigenpotentiaal geeft ≈ 57,5 µs/dag, de kinetische term ≈ −0,5 µs/dag, samen een totaal van ≈ 57 µs/dag. Het scenario lunar-time-offset rapporteert deze snelheid, de opgebouwde LTC−TT-offset over een horizon en ondersteunt een minimaal ensemble met inverse variantie (een maan-papierklok); omzettingen TT↔LTC keren heen en terug tot < 1 ns/dag.
| Mogelijkheid | Status | Onafhankelijke referentie / eerlijke reikwijdte |
|---|---|---|
| Relativistische klokgang aarde–maan (LTC/TCL) | modelled |
src/lunar_time.rs lunar_rate_breakdown, tt_to_ltc/ltc_to_tt, lunar_ensemble, LunarTimeScenario. Onafhankelijke referentie: een interne relativistische identiteit in gesloten vorm (geopotentiaal van IAU L_G / IERS-conventies en de eigenpotentiaal GM/r (GM: gravitatieparameter, G maal de massa)), gecontroleerd tegen de gepubliceerde band voor de klokgang op de maan [56, 59] µs/dag. Tests (lunar_time::tests): de term van de eigenpotentiaal ≈ 57,5 µs/dag, de maansnelheid ≈ 1 km/s, de kinetische term een kleine negatieve waarde, het totaal in de band waarbij de genoemde termen optellen tot het totaal, de LTC−TT-offset over 1 dag ≈ 57 µs en een omzetting TT↔LTC heen en terug van < 1 ns/dag. Eerlijke reikwijdte: het kerncijfer in µs/dag is afhankelijk van de referentie: het hangt af van de gekozen referentievlakken (aardgeoïde W0 tegenover een lunaire selenoïde), het tijdgemiddelde venster en de verwaarloosde centrifugale/J₂-correcties onder de µs/dag, en daarom is een band en geen enkel gecertificeerd getal de gepubliceerde uitvoer. Dit is een controle van zelfconsistentie met Modelled, GEEN externe toetsing, GEEN absolute nauwkeurigheid onder de nanoseconde en GEEN gecertificeerde nauwkeurigheid voor operationele tijdsynchronisatie. |
Geodetische VLBI op de maan: vertraging in het nabije veld voor een aardbasislijn die een maanbaken waarneemt (src/lunar_vlbi.rs)#
Een waarneembare grootheid van geodetische VLBI (very-long-baseline interferometry) voor twee grondstations op aarde (een basislijn) die een signaal met één weg van een zender van NovaMoon-klasse op het maanoppervlak waarnemen. De maan staat in het nabije veld en is geen vlakke golf, dus de geometrische vertraging is het exacte verschil van twee afstanden tau_geom = (|r2 − r_B| − |r1 − r_B|)/c en niet de projectie op het hemelvlak. De volledige waarneembare grootheid voegt het verschil in klokoffset van de stations en een gedifferentieerde Shapiro-term voor de aardpotentiaal toe (hergebruikt uit src/radiometric.rs). Stations worden in geocentrische inertiale (GCRS-)coördinaten geplaatst via src/frames.rs + src/cio.rs; het baken via src/ephem.rs (geocentrische maan) + src/lunar.rs (selenografisch→MCMF (MCMF: Moon-centred, Moon-fixed)) + src/lunar_frame.rs (IAU-2015 ME lichaamsgebonden→inertiaal). Het scenario lunar-vlbi bemonstert de vertraging, de snelheid ervan met eindige differenties en de correctie voor het nabije veld over een passage.
De onafhankelijke referentie is de Δ-DOR-waarneembare grootheid voor een vlakke golf delta_dor uit dezelfde codebase in src/radiometric.rs: in de limiet van het verre veld (een synthetisch baken op 1e15 m) moet de geometrische vertraging tot op machineprecisie samenvallen met −(B·ŝ_B)/c = delta_dor(r_B, [0,0,0], B); op werkelijke maanafstand is de correctie voor het nabije veld door golffrontkromming niet nul (tientallen tot honderden µs). De bakenpartiëlen dtau/dr_B = ((r_B−r2)/|r_B−r2| − (r_B−r1)/|r_B−r1|)/c (en de stationspartiëlen) worden geverifieerd met een centraal eindig verschil (relatieve fout < 1e-5).
| Mogelijkheid | Status | Onafhankelijke referentie / eerlijke reikwijdte |
|---|---|---|
| Geodetische VLBI-vertraging op de maan + partiëlen | modelled |
src/lunar_vlbi.rs geometric_delay_s, vlbi_delay_s, delay_partials_beacon/_station1/_station2, near_field_correction_s, LunarVlbiScenario. Onafhankelijke referentie: ReferenceImpl: de delta_dor voor een vlakke golf uit dezelfde codebase (src/radiometric.rs) in de limiet van het verre veld, plus partiëlen met eindige differenties. Tests (lunar_vlbi::tests): grootte van het station ≈ aardstraal, bakenafstand op maanafstand (356–407 Mm), de geometrische vertraging in het verre veld komt overeen met delta_dor tot < 1e-9 s, een correctie voor het nabije veld die op maanafstand niet nul is, FD-partiëlen van baken/station binnen 1e-5 relatief, een exacte kloktern en een eindige scenariorun die via run_toml wordt verstuurd. Eerlijke reikwijdte: Modelled, GEEN toetsing aan echte VLBI-gegevens. De poolbeweging is weggelaten (xp = yp = 0), dus de inertiale posities van stations hebben een frameafwijking van enkele meters; het baken mengt een maanreeks met gemiddelde evenaar van de datum met een lichaamsgebonden offset in ICRF (International Celestial Reference Frame) (jd_tdb ≈ jd_tt), een inconsistentie van frames onder de getrouwheid van het model maar niet rigoureus; en er is geen iteratie voor lichttijd, aardrotatie tijdens de lichttijd, media (troposfeer/ionosfeer/plasma) of aberratieterm buiten de gedifferentieerde Shapiro. Er wordt geen TRL (technology readiness level), vluchtervaring of goedkeuring door een instantie beweerd. 0,30: tegenover ANISE-lichttijden via DE440 ligt geen vertraging van dit analytische pad binnen 1 ps (grootste verschil 24 µs); de bevinding is vastgelegd. |
| Geodetische VLBI op de Maan, kernelpad | validated (0.30) |
src/lunar_vlbi.rs KernelGeometry (aarde en maan uit DE440, maanhoofdassen uit DE440, aardoriëntatie ITRF93, elke lichttijd geconvergeerd in het barycentrische frame), uitgevoerd door het scenario lunar-vlbi wanneer de drie kernelpaden zijn ingesteld. Onafhankelijke referentie: Library: door NAIF SPICE Toolkit N0067 (spiceypy 8.2.0) geconvergeerde lichttijden naar DSS-14/43/63, vooraf vastgelegd: 75 vertragingen binnen 1 ps (slechtste 0,06 ps), baken- en stationspartiëlen binnen 1e-6, op 25 epochs nabij J2000 (een amendement nadat de 2024 epochs faalden op de eigen emissie-epoch met dubbele precisie van SPICE, ongeveer 6 ps, bekendgemaakt en vastgelegd). De gedifferentieerde Shapiro-term, de vertragingssnelheid en de correctie voor het nabije veld van het scenario worden niet vergeleken. |
Gezamenlijke multitechniek-OD + klok op de maan: gesimuleerd herstel in gesloten lus (src/lunar_combination.rs)#
Een batch-kleinste-kwadratenfit voor één epoch (momentopname) (crate::batch_ls::gauss_newton_qr, sinds 0,30 een Householder-QR-stap) die de technieken geodetische VLBI, radiometrische/lokale maanafstandsmeting en afstandsmeting tussen satellieten fuseert op een GESIMULEERD maannetwerk om gezamenlijk de 3D-positie van een station op het maanoppervlak, de positie per satelliet van een kleine constellatie en de klokoffset van elk object te herstellen. De waarneembare grootheden zijn: (1) geodetische VLBI-vertragingen van de aardbasislijn naar het maanstation dat als baken wordt behandeld (hergebruik van src/lunar_vlbi.rs, geocentrisch inertiaal): de kerntechniek; (2) geocentrische radiometrische afstanden van aardstation→satelliet (die de constellatie multilateren vanuit de goed gespreide aardstations) en lokale maanafstanden station↔satelliet (Euclidische MCI-afstand (Moon-centred inertial) plus de gedifferentieerde klokterm); (3) afstanden tussen satellieten (zelfde vorm); plus één pseudowaarneming voor klokssynchronisatie van het station die de anders niet waarneembare gemeenschappelijke klokoffset verankert. De toestandsvector is [station_pos(3), {sat_pos(3)}×N_sat, station_clk, {sat_clk}×N_sat]. Er is geen propagatie met een krachtenmodel in de oplosser: de satellieten zijn vaste, onderscheiden, illustratieve punten op een representatieve maanbaan; dit is een bewust zuivere momentopnamefit. Intern worden posities geschaald en klokken geschat in afstandsequivalente meters zodat de normaalmatrix in f64 goed geconditioneerd blijft; de VLBI- en maanafstanden zijn gemiddeld verwijderd rond de nominale geometrie zodat de Jacobiaan met eindige differenties niet onder catastrofale cancellation lijdt. Het scenario lunar-joint-od-clock voert de oplossing uit met en zonder de VLBI-legs op dezelfde seed/referentie en rapporteert beide oplossingen plus de verbeteringsfactor voor de waarneembaarheid van het station.
Het belangrijkste eerlijke resultaat: lokale maanafstandsmeting vanaf een polair station naar een handvol satellieten die allemaal naar één kant van de hemel staan, laat de positie van het station zwak waargenomen in één richting, dus de oplossing met alleen afstanden is slecht geconditioneerd en de herstelde 3D-fout van het station is groot (of de oplossing convergeert niet). Het toevoegen van de VLBI-vertragingen van de aardbasislijn maakt de volledige 3D-positie van het station waarneembaar en de herstelde stationsfout zakt naar het meterniveau. De test vlbi_restores_station_observability stelt dat de stationsfout met VLBI duidelijk (≥5×) kleiner is dan de fout met alleen afstanden op dezelfde geïnjecteerde referentie: het herstellen door VLBI van de anders niet waarneembare richting van het station is het punt van de fase.
De onafhankelijke referentie is interne consistentie: een geïnjecteerde referentietoestand (station ~50 m/as, satellieten ~30 m/as, klokken ~1e-7 s, met een geseede jitter per component) wordt via hetzelfde geometriemodel dat de oplosser inverteert omgezet in synthetische waarneembare grootheden, geseede Gaussische ruis wordt toegevoegd (illustratieve standaardwaarden: VLBI σ ≈ 1e-11 s, afstand σ ≈ 0,1 m, ISL σ ≈ 0,1 m; gewichten 1/σ²), en de schatter moet de geïnjecteerde referentie binnen de ruis herstellen vanuit een beginschatting van nullen. Een Monte-Carlo-gemiddelde NEES Δxᵀ(HᵀWH)Δx over seeds (formal_covariance_nees) ligt binnen een losse band rond n_params, een controle op realisme van de covariantie.
| Mogelijkheid | Status | Onafhankelijke referentie / eerlijke reikwijdte |
|---|---|---|
| Gezamenlijke multitechniek-OD + klok voor de Maan | validated (0,30, P2: de lineaire algebra van de oplossing) |
src/lunar_combination.rs estimate, formal_covariance_nees, LunarCombinationScenario. Onafhankelijke referentie van 0,30: P2: numpy 2.4.6 (LAPACK gelsd en inv) berekent elke Gauss-Newton-stap, de geconvergeerde gewogen oplossing, de formele sigma's en de stationsfout opnieuw op de vastgelegde Jacobianen van zes netwerken (tests/lunar_joint_od_numpy_oracle.rs, stappen binnen 2.4e-11, sigma's binnen 1.3e-11); de fysische waarnemingsmodellen en grootheden blijven MODELLED. Eerdere onafhankelijke referentie: InternalConsistency: herstel van een geïnjecteerde gesimuleerde referentie + consistentie van de NEES-covariantie. Tests (lunar_combination::tests): volledige fusie herstelt de referentie (station < 5 m, RMS van satellieten < 5 m, klokken < 1e-8 s, geconvergeerd); VLBI herstelt de 3D-waarneembaarheid van het station (stationsfout ≥5× kleiner met VLBI dan met alleen afstanden op dezelfde referentie); deterministisch (zelfde seed → bit-identieke oplossing, andere seed → andere maar herstelde oplossing); gemiddelde NEES binnen een losse band rond n_params; eindige/bewaakte gerapporteerde getallen ook wanneer alleen afstanden slecht geconditioneerd zijn; scenario verstuurd via run_toml. Eerlijke reikwijdte: dit is een gesimuleerd herstel in gesloten lus, waarbij de referentie het waarnemingsmodel deelt, GEEN toetsing aan echte gegevens; geen propagatie met een krachtenmodel in de oplosser; de posities van de satellieten en de geometrie van aard- en maanstations zijn illustratief. Er wordt geen TRL, vluchtervaring of goedkeuring door een instantie beweerd. |
Realisatie van het lunaire referentiestelsel: 7-parameter-Helmert-datumfit (src/lunar_frame_realise.rs)#
Waar src/lunar_frame.rs de oriëntatie van het maanlichaam volgens IAU 2015 WGCCRE toepast (een voorwaarts model), schat (realiseert) deze module een lunair referentiestelsel uit een netwerk van geschatte puntcoördinaten die aan een datum zijn gekoppeld. De schattingskern is een klassieke gelijkvormigheidstransformatie met 7 parameters (Helmert), drie translatie-, drie kleinehoekrotatie- en één schaalparameter, die punten p_i (geschat frame) afbeeldt op q_i (datumframe) als q_i = t + (1 + s)·R(θ)·p_i, waarbij R(θ) = rz(θz)·ry(θy)·rx(θx) is opgebouwd uit crate::precession::{rx, ry, rz, matmul, mat_vec}. De zeven parameters [tx, ty, tz, θx, θy, θz, s] worden geschat uit ≥ 3 niet-collineaire puntparen met gewogen kleinste kwadraten via crate::batch_ls::gauss_newton: het voorwaartse model voorspelt elke q_i uit zijn p_i en legt alle drie componenten van alle punten plat tot de vector van waarneembare grootheden, de waargenomen datumcoördinaten vormen z, de gewichten zijn 1/σ² en de oplossing start vanuit x0 = zeros. Rotatiehoeken worden geschat in µrad en schaal in ppb zodat de Jacobiaan met eindige differenties goed geschaald blijft bij de grootte van de coördinaten op het maanoppervlak (~1.7e6 m). Een kleine icrf_orientation_tie stelt de gerealiseerde kleine rotatie samen via de oriëntatie van lichaam naar ICRF van IAU (transpose(crate::lunar_frame::icrf_to_iau_moon(jd_tdb))) en geeft de resterende kleinehoekoffset van het gerealiseerde frame rond de ICRF-assen terug: een bewust eenvoudige wijziging van de uitdrukkingswijze van het frame, geen onafhankelijke schatting van de maanpool.
De onafhankelijke referentie is interne consistentie: een bekende Helmert-transformatie (translatie ~tientallen m, rotatie ~µrad, schaal ~1e-7) wordt geïnjecteerd in een goed gespreid synthetisch puntnetwerk (gevarieerde selenografische breedte/lengte → MCMF, sommige punten op hoogte), geseede Gaussische ruis wordt toegevoegd en de fit moet de geïnjecteerde parameters herstellen. Op ruisvrije gegevens is het herstel tot ~machineprecisie (translatie < 1e-6 m, rotatie < 1e-9 rad, schaal < 1e-12); met ruis van een meter liggen de herstelde parameters binnen enkele × de formele σ en ligt de post-fit-RMS-residu nabij het ruisniveau. Het scenario lunar-frame-realisation rapporteert het herstelde datum, de herstelfout per parameter tegenover de geïnjecteerde referentie, de post-fit-RMS van het residu en de oriëntatiekoppeling aan ICRF van de gerealiseerde rotatie.
| Mogelijkheid | Status | Onafhankelijke referentie / eerlijke reikwijdte |
|---|---|---|
| Realisatie van het lunaire referentiestelsel | modelled |
src/lunar_frame_realise.rs helmert_fit, apply_helmert, realise_frame, icrf_orientation_tie, LunarFrameRealiseScenario. Onafhankelijke referentie: InternalConsistency: herstel van een geïnjecteerde gelijkvormigheidstransformatie met 7 parameters plus de algebraïsche identiteit van heen en terug van apply_helmert. Tests (lunar_frame_realise::tests): ruisvrij herstel van de geïnjecteerde transformatie (translatie < 1e-6 m, rotatie < 1e-9 rad, schaal < 1e-12); herstel met ruis binnen enkele × σ en RMS-residu nabij het ruisniveau; toepassen-dan-inverteren heen en terug; deterministisch (zelfde seed → bit-identiek, andere seed → andere maar herstelde oplossing); de ICRF-koppeling bij nulrotatie is nul en de koppeling behoudt de grootte van de rotatie; scenario verstuurd via run_toml. Eerlijke reikwijdte: dit is een controle van zelfconsistentie: ze herstelt een geïnjecteerde transformatie op een synthetisch netwerk, GEEN realisatie van het lunaire referentiestelsel aan echte volg-/VLBI-gegevens, en ze beweert geen absolute nauwkeurigheid van het frame. De ICRF-oriëntatiekoppeling is een eenvoudige wijziging van de uitdrukkingswijze, geen onafhankelijke schatting van de pool. Er wordt geen TRL, vluchtervaring of goedkeuring door een instantie beweerd. |
Servicevolume voor lunaire navigatie: DOP / dekking / beschikbaarheid + gegeneraliseerd lunair ARAIM-PL (src/lunar_service.rs)#
Deze module combineert reeds gebouwde onderdelen tot een analyse van het servicevolume van lunaire navigatie: zij doorloopt een selenografisch breedte-/lengteraster over een tijdshorizon tegen een illustratieve lunaire-baanconstellatie van het type Moonlight / LCNS op basis van openbare bronnen (LCNS: Lunar Communications and Navigation Services) en rapporteert DOP, dekking en beschikbaarheid, plus een gegeneraliseerde lunaire ARAIM-beschermingsniveau-envelop. De twee hergebruiken zijn dragend en expliciet. De DOP-geometrie is de VALIDATED kern (tegen gnss_lib_py) crate::orbit::dop — service_dop is slechts een elevatiemaskerfilter plus die kern, en een test stelt de identiteit vast (service_dop is gelijk aan een directe orbit::dop op dezelfde zichtbare posities). Integriteit hergebruikt de lunaire ARAIM-machinerie van LunaNet LNIS (LunaNet Interoperability Specification) crate::lunar::lunar_araim (σ_URE ≈ 30 m, P_sat ≈ 1e-4); lunar_protection_level generaliseert het bestaande beschermingsniveau voor de zuidpool naar een willekeurig punt op het oppervlak, en een test stelt vast dat het teruggaat op het geval van de zuidpool (op de zuidpool met dezelfde geometrie en hetzelfde budget geeft het exact het bestaande resultaat van lunar::lunar_araim tot op < 1e-9).
De constellatieparameters zijn een illustratieve benadering van publieke beschrijvingen door ESA van de systeemklasse (≈ 4 satellieten in elliptische bevroren maanbanen die dekking van de zuidpool bevoordelen, met de apoluun boven het zuidelijk halfrond; 4 is de standaard van de bibliotheek en de meegeleverde moonlight-service-volume.toml stelt 8 in omdat het beschermingsniveau er minstens 6 in zicht nodig heeft). Ze zijn niet de echte efemeride van Moonlight/LCNS en impliceren geen verbondenheid, goedkeuring, vluchtervaring, certificering of TRL. De samenstelling (dekking / beschikbaarheid / integriteit) is MODELLED: een relayset met cirkelvormige/elliptische Kepler-banen (geen met differentiële correctie bepaalde efemeride van LCNS / NRHO (bijna-rechtlijnige haloconfiguratie) van 9:2), een maan met gemiddelde rotatie (geen fysieke libratie / precesserende pool) en gepubliceerde integriteitsparameters van LunaNet LNIS. Ze toont de methode van het servicevolume, geen operationeel beschikbaarheidsgetal. Deterministisch (zuivere geometrie; geen toeval). Het scenario moonlight-service-volume rapporteert het dekkingspercentage, de omhullenden van het aantal zichtbare satellieten en van PDOP, de HPL/VPL-omhullende over het volume en de beschikbaarheid van het beschermingsniveau tegenover de alarmgrens.
| Mogelijkheid | Status | Onafhankelijke referentie / eerlijke reikwijdte |
|---|---|---|
| Maannavigatieservicevolume | modelled |
src/lunar_service.rs LunarConstellation, visible_sats, service_dop, coverage, lunar_protection_level, LunarServiceScenario. DOP-geometrie getoetst door hergebruik van de aan gnss_lib_py getoetste kernel crate::orbit::dop; integriteit hergebruikt de gepubliceerde lunaire ARAIM van LunaNet/LNIS (crate::lunar::lunar_araim, σ_URE ≈ 30 m). Tests (lunar_service::tests): service_dop is een identiteit op de getoetste kernel; lunar_protection_level op de zuidpool is gelijk aan het bestaande PL van lunar::lunar_araim tot < 1e-9 (reduceert tot het geval van de zuidpool); dekking neemt niet af met de grootte van de constellatie; zichtbaarheid respecteert het elevatiemasker; het scenario is deterministisch en wordt verstuurd via run_toml. Eerlijke reikwijdte: de constellatie is illustratief, uit publieke bronnen en NIET verbonden met ESA: niet de echte efemeride van Moonlight/LCNS; de samenstelling van dekking/beschikbaarheid/integriteit is MODELLED (relays met cirkelvormige/elliptische Kepler-banen, maan met gemiddelde rotatie, gepubliceerde LNIS-parameters), GEEN operationeel beschikbaarheidsgetal van Moonlight. Er wordt geen TRL, vluchtervaring of goedkeuring door een instantie beweerd. |
Lunaire differentiële PNT: opheffing van de gemeenschappelijke modus + residu dat met de basislijn groeit + DGNSS-beschermingsniveaus (src/lunar_dpnt.rs)#
Een lunair analogon van DGNSS (differentiële satellietnavigatie) / SBAS: een referentiestation van NovaMoon-klasse op een bekende selenografische locatie berekent differentiële correcties per satelliet uit een illustratieve constellatie van de klasse Moonlight / LCNS uit publieke bronnen, en een rondtrekkende gebruiker op een basislijn daarvandaan past ze toe zodat de fouten in de uitgezonden efemeride in de gemeenschappelijke modus wegvallen. Elke satelliet i heeft een geïnjecteerde gemeenschappelijke 3D-baanfoutvector e_i en een gemeenschappelijke klokfout c_i. Het pseudoafstandsresidu van het referentiestation is de correctie −e_i · û_ref,i + c_i; de ruwe fout van de gebruiker is −e_i · û_user,i + c_i; de gecorrigeerde fout van de gebruiker is hun verschil −e_i · (û_user,i − û_ref,i). De klokterm c_i valt exact weg (hij is identiek in beide waarnemingen) en de baanterm valt terug op de projectie op het verschil van de twee eenheidsvectoren langs de zichtlijn, die → 0 gaat naarmate de basislijn → 0 (de ondergrens van ruimtelijke decorrelatie) en ongeveer lineair groeit met de basislijn. De gecorrigeerde afstandsfouten per satelliet worden via de geometrie van de gebruiker afgebeeld door een kleine, afhankelijkheidsarme momentopname met gewogen kleinste kwadraten (toestand [x, y, z, clock] via crate::orbit::invert4; een constante afstandsbias wordt door de klokonbekende opgenomen in plaats van de positiebepaling te bederven) om de positiefout van de gebruiker te geven. Het beschermingsniveau van de gebruiker hergebruikt de machinerie voor het SBAS-beschermingsniveau van DO-229E (crate::sbas::sbas_protection_level, K-factoren voor Precision-Approach) met de differentiële residu-σ als 1σ-foutbudget van elke satelliet.
NovaMoon wordt alleen als systeemklasse genoemd (een publieke beschrijving van een lunair referentiestation); de constellatie hergebruikt de illustratieve crate::lunar_service::LunarConstellation uit publieke bronnen. Dit zijn illustratieve parameters om de differentiële methode te beproeven, geen echte efemeride, en ze impliceren geen verbondenheid, goedkeuring, vluchtervaring, certificering of TRL. Het scenario lunar-differential-pnt rapporteert de positiefout van de gebruiker met en zonder correcties, de reductiefactor, de curve van de fout tegen de basislijn en het beschermingsniveau. In de standaardconfiguratie is de gecorrigeerde fout van de gebruiker bij een basislijn van 50 km ≈ 0,008 m tegenover ≈ 24 m ongecorrigeerd (een reductie van ~3000×), en ≈ 0 bij een basislijn van nul.
De onafhankelijke referentie is interne consistentie: het wegvallen van de gemeenschappelijke modus is een exacte algebraïsche identiteit (met noise = 0, gecorrigeerde fout < 1e-6 m bij een basislijn van nul; de klokterm valt bij elke basislijn tot op machineprecisie weg), het residu groeit monotoon met de basislijn en het beschermingsniveau is hetzelfde DO-229E-algoritme waaraan de SBAS-stack is vastgelegd. Het residu van ruimtelijke decorrelatie is een geometrisch model van de eerste orde, geen gefit decorrelatiemodel uit echte lunaire volging.
| Mogelijkheid | Status | Onafhankelijke referentie / eerlijke reikwijdte |
|---|---|---|
| Differentiële PNT op de maan | modelled |
src/lunar_dpnt.rs differential_corrections, corrected_user_range_errors, user_position_error_m, lunar_dgnss_protection_level, LunarDpntScenario. Onafhankelijke referentie: InternalConsistency: de identiteit van differentiële foutopheffing plus hergebruik van de machinerie voor het SBAS-beschermingsniveau van DO-229E (crate::sbas). Tests (lunar_dpnt::tests): bij een basislijn van nul zijn de gecorrigeerde fout van de gebruiker en elke gecorrigeerde afstandsfout per satelliet ~0 (< 1e-6 m) en ≪ de ongecorrigeerde fout; de klokterm valt bij elke basislijn exact weg (geval zonder baanfout); de gecorrigeerde fout groeit monotoon met de basislijn en blijft bij bescheiden basislijnen ≪ ongecorrigeerd; differentieel verslaat standalone met een duidelijke marge (> 2×); het beschermingsniveau is gelijk aan een directe aanroep van sbas::sbas_protection_level en schaalt met de residu-σ; onderbepaalde geometrie geeft None terug; het scenario is deterministisch (geseed) en wordt verstuurd via run_toml. Eerlijke reikwijdte: MODELLED: de opheffing van de gemeenschappelijke modus is een exacte identiteit, maar het residu van ruimtelijke decorrelatie is een geometrisch model van de eerste orde, GEEN gefit decorrelatiemodel uit echte lunaire volging, en dit is GEEN toetsing aan echte gegevens. NovaMoon wordt alleen als systeemklasse genoemd (illustratief, uit publieke bronnen, niet verbonden met ESA). Er wordt geen TRL, vluchtervaring of goedkeuring door een instantie beweerd. |
Lunaire interoperabiliteitsexport: met LunaNet/IOAG afgestemde CCSDS OEM + KIF met formaatcontrole heen en terug (src/lunar_interop.rs)#
Het lunaire referentiestelsel, de lunaire tijdschaal en de lunaire efemeride worden geëxporteerd in op LunaNet/IOAG afgestemde (IOAG: Interagency Operations Advisory Group), op CCSDS gebaseerde uitwisselingsvormen. Deze fase verzint geen eigen berichtformaat: zij hergebruikt de bestaande CCSDS-OEM-zender (OEM: Orbit Ephemeris Message) 2,0 en -parser van de crate (crate::oem::OemFile::to_oem_string / crate::oem::parse_oem) en de envelop van het Kshana Interchange Format (crate::interchange::Envelope), opnieuw getagd voor de lunaire context. export_lunar_oem zet de OEM-REF_FRAME op het lunaire lichaamsstelsel van IAU 2015 WGCCRE (MOON_ME gemiddelde aarde of MOON_PA hoofdas), TIME_SYSTEM op de lunaire tijdschaal (LTC / TCL / UTC) en CENTER_NAME op MOON, over een voorbeeld van een illustratieve, uit openbare bronnen afkomstige efemeride van LCNS-klasse (posities uit crate::lunar_service::LunarSat::position_mci, snelheid door centraal eindig verschil). export_lunar_time_metadata levert een op LunaNet/IOAG afgestemde lunaire tijdsbeschrijving (schaal-id, seculiere snelheid in µs/dag uit crate::lunar_time::lunar_rate_breakdown, de gepubliceerde band van 56–59 µs/dag, referentieoppervlak) die via serde_json heen en weer wordt omgezet. export_kif_lunar verpakt de OEM, de beschrijving en het stelsellabel in de bestaande KIF-envelop met het eerlijkheidslabel MODELLED.
De onafhankelijke referentie is de controle van heen-en-terugomzetting en velden. Omdat oem.rs beide richtingen levert, wordt de OEM via crate::oem::parse_oem heen en weer omgezet (terug naar een gelijk segment, met behoud van lunair stelsel, lunaire tijd en aantal toestanden) en onafhankelijk gecontroleerd door oem_conformance. Die controleert of elk vereist CCSDS/LunaNet-headertrefwoord aanwezig is, of REF_FRAME een lunair MOON_*-token bevat en TIME_SYSTEM niet leeg is, of de META_START … META_STOP-omlijsting klopt en of de regels met positie- en snelheidsgegevens goed gevormd zijn. Het resultaat is een gestructureerde pass plus de lijst van aanwezige en ontbrekende velden, zodat een kapotte export (bijvoorbeeld met een weggevallen TIME_SYSTEM) wordt opgemerkt en bij naam genoemd. De tijdmetadata worden via parse_lunar_time_metadata heen en weer omgezet, en de KIF-envelop via Envelope::parse naar gelijke artefacten met het label MODELLED.
| Mogelijkheid | Status | Onafhankelijke referentie / eerlijke reikwijdte |
|---|---|---|
| Interoperabiliteitsexport voor de maan | modelled |
src/lunar_interop.rs export_lunar_oem, export_lunar_time_metadata, parse_lunar_time_metadata, export_kif_lunar, oem_conformance, LunarInteropScenario. Onafhankelijke referentie: InternalConsistency — deterministische heen-en-terugomzetting (CCSDS-OEM via crate::oem::parse_oem; KIF via crate::interchange::Envelope::parse; tijdmetadata via serde_json) plus controle van veldnamen aan de hand van gepubliceerde CCSDS-OEM- en LunaNet/IOAG-veldsemantiek. Tests (lunar_interop::tests): de geëxporteerde OEM bevat de lunaire tokens REF_FRAME (MOON_ME/MOON_PA) en TIME_SYSTEM (LTC/TCL), CENTER_NAME = MOON, het object en goed gevormde gegevensregels; de lunaire tijdmetadata worden heen en weer omgezet (snelheid/band/referentie) en wijzen rommel af; de KIF-envelop wordt geserialiseerd en gedeserialiseerd naar een gelijke waarde met het eerlijkheidslabel MODELLED aanwezig; een bewust kapotte OEM (zonder TIME_SYSTEM) faalt voor oem_conformance en wordt als ontbrekend gemeld; het scenario wordt afgehandeld via run_toml. Eerlijke reikwijdte: de veldnamen/eenheden sluiten aan op openbare normen (CCSDS 502.0-B OEM, IAU WGCCRE 2015 lunaire stelsels, de LunaNet Interoperability Specification / IOAG-architectuur voor de maan); de export is MODELLED — deterministische heen-en-terugomzetting plus controle van veldnamen is de onafhankelijke referentie, dit is GEEN gecertificeerde interoperabiliteitstest, de efemeride is illustratief, uit openbare bronnen en niet gelieerd aan ESA, en er wordt geen TRL, vluchtervaring of onderschrijving door een agentschap beweerd. |
Gepreregistreerde voorspellingen#
Een gepreregistreerde voorspelling is een MODELLED resultaat dat is vastgelegd voordat er gegevens bestaan om het aan te toetsen, waarbij tegelijk het beoordelingsprotocol wordt vastgelegd. Het is geen validatie en voegt geen registerrij toe. Elke voorspelling staat in docs/predictions/, met de vastgelegde invoer, het resultaat en hun SHA-256-hashes, en tests/prediction_frozen.rs faalt zodra een vastgelegde byte verandert; een gewijzigde aanname wordt beantwoord met een nieuwe, gedateerde voorspelling naast de oude, nooit door de oude te bewerken.
| Voorspelling | Vastgelegd | Beoordeeld aan | Status |
|---|---|---|---|
| Dekking door lunaire referentiestations | c05dac1d, 2026-10-12 | gepubliceerde nauwkeurigheid, beschikbaarheid, dekking en beschermingsniveaus van een lunair differentieel station nabij de zuidpool, door welke partij dan ook | nog niet beoordeeld (geen gepubliceerde resultaten) |
Representativiteit van de demonstratie en register van hiaten tot vlucht (src/representativeness.rs)#
Een simulatieresultaat is alleen bruikbaar als bewijs als het op zijn gezicht vermeldt waaraan het verankerd is, wat het aanneemt en wat het nog scheidt van een vluchtsysteem. Het representativiteitsregister maakt dat een volwaardige, machinaal gecontroleerde uitvoer: een Representativeness-record bevat de externe Anchors van de demonstratie, de gemodelleerde aannames, de Gaps tot vlucht (elk met de fase of activiteit die het zou sluiten) en de TRL-band waarvoor het representatief is. Het is de tegenhanger per resultaat van de verificationmatrix op mogelijkhedenniveau.
De onafhankelijke referentie is een verzameling invarianten in gesloten vorm, afgedwongen door representativeness::tests: een Validated-record moet minstens één ExternalDataset-anker vermelden (een simulatie kan niet aan zichzelf worden getoetst); een Modelled-record moet minstens één hiaat tot vlucht vermelden en mag geen representatieve TRL-band boven 4 claimen (rijping daarboven vraagt hardware- of vluchtbewijs, dat is een hiaat en geen simulatieresultaat); de TRL-band moet goed gevormd zijn; en een PartnerOwned-record mag niets beweren. Deze invarianten maken de discipline "representativiteit onderbouwd en resterende hiaten richting vlucht duidelijk benoemd" operationeel.
| Mogelijkheid | Status | Onafhankelijke referentie / eerlijke reikwijdte |
|---|---|---|
| Representativiteit en register van hiaten tot vlucht | modelled |
src/representativeness.rs Representativeness/Anchor/Gap, check/is_valid/report/to_json. Onafhankelijke referentie: InternalConsistency — eerlijkheidsinvarianten in gesloten vorm, gekoppeld aan de grens tussen status en referentiesoort van verification. Tests (representativeness::tests): een Validated-record zonder extern anker faalt; een intern anker (ReferenceImpl) voldoet niet voor Validated; een Modelled-record zonder hiaat faalt; een Modelled-record boven TRL 4 faalt; misvormde TRL-banden worden opgemerkt; het record wordt met de verwachte velden naar JSON geserialiseerd en geeft een leesbaar rapport. Eerlijke reikwijdte: het register controleert de indeling van het bewijs van een resultaat — het bewijst niet dat de genoemde ankers naar live tests verwijzen (die worden handmatig bijgehouden, precies zoals de verificationmatrix); de bewering "machinaal gecontroleerd" geldt alleen voor de invarianten van status, anker, hiaat en TRL. |
Uniform bewijs voor de afweging tussen kwantum en klassiek (src/qtrade.rs)#
Elk toepassingsgebied van kwantum-PNT beantwoordt dezelfde vraag op dezelfde manier: leg één vergelijkingskader vast (scenario + seed + engineversie), stuur een kwantumkandidaat en een klassieke basislijn door één neutraal codepad, beoordeel ze op gemeenschappelijke kwaliteitsmaten en rapporteer — met een betrouwbaarheidsinterval en een eerlijk label getoetst/uit een model berekend — waar kwantum wint en waar niet. TradeEvidence geeft dat antwoord één vorm, zodat de verticalen voor tijdsynchronisatie, navigatie en anomaliedetectie alle hetzelfde reproduceerbare, eerlijk gelabelde object leveren. Het implementeert geen enkele afweging opnieuw: de getallen per kwaliteitsmaat komen uit de bestaande engines (quantum_trade, crossover en de verticale modules); dit is het contract plus de omhulling voor reproduceerbaarheid en representativiteit, gebouwd op het representativiteitsregister en de verificatielabels.
De onafhankelijke referentie bestaat uit identiteiten voor voordeel en winnaar in gesloten vorm plus een getrouwe omhulling van de bestaande afwegingsuitvoer. qtrade::tests: de voordeelverhouding heeft de juiste polariteit (zo georiënteerd dat >1 altijd betekent dat de kwantumzijde beter is, zowel voor holdover waarbij hoger beter is als voor foutmaten waarbij lager beter is); een bewijsobject gebouwd uit een echt quantum_trade::TradeResult reproduceert zijn voordeelverhoudingen; oneerlijk bewijs wordt afgewezen (een Modelled-representativiteit zonder hiaat, of een Validated-kwaliteitsmaat waarvan het afwegingsrecord geen extern anker heeft); JSON is deterministisch en bevat de velden voor kader, seed, engine, kwaliteitsmaat en representativiteit.
| Mogelijkheid | Status | Onafhankelijke referentie / eerlijke reikwijdte |
|---|---|---|
| Bewijs voor de afweging tussen kwantum en klassiek | modelled |
src/qtrade.rs TradeEvidence/TradeFom/TradeFrame/Winner. Onafhankelijke referentie: InternalConsistency — identiteiten voor voordeel en winnaar in gesloten vorm plus een getrouwe omhulling van quantum_trade::TradeResult; eerlijkheid gekoppeld aan het representativiteitsregister en aan de grens tussen verificatiestatus en referentiesoort. Tests (qtrade::tests) zoals hierboven. Eerlijke reikwijdte: het harnas standaardiseert hoe een afweging wordt gerapporteerd en gereproduceerd; de onderliggende fysica per kwaliteitsmaat is wat de bijdragende engine levert, met zijn eigen label getoetst/uit een model berekend — TradeEvidence verheft een uit een model berekende kwaliteitsmaat niet tot een getoetste. |
Bibliotheek van foutmodellen voor kwantumapparaten (src/quantum_devices.rs)#
Eén plek die de kwantum-PNT-apparaten ontsluit waartussen de demonstrator afweegt — optische klokken, klokken met gevangen ionen en kwikionen, klassieke referentieklokken, de koudeatoominterferometer en tijdoverdrachtsverbindingen — elk als een DeviceCard met zijn belangrijkste specificatie en een representativiteitsrecord. De meeste apparaatfysica wordt hergebruikt (klokstabiliteiten uit holdover::QuantumClockClass en clock_state::ClockClass; de koudeatoominterferometer uit quantum_trade/crossover; klassieke optische en RF-verbindingen uit timetransfer_adv). Het enige echt nieuwe model is de tijdoverdrachtsverbinding met verstrengeling of enkele fotonen, waarvan de timingprecisie door shotruis wordt begrensd: σ_t ≈ jitter/√(R·τ) in de gedetecteerde coïncidentiesnelheid R en integratietijd τ, verslechterd door een donkertellingsstraf √(1 + dark/R) en naar onderen begrensd door een onvermijdelijke systematische fout.
De onafhankelijke referentie bestaat uit de hergebruikte, gepubliceerde klok- en CAI-coëfficiënten plus identiteiten voor shotruis en verlies in gesloten vorm. quantum_devices::tests: de volgorde van de hergebruikte klokstabiliteiten klopt (optisch rooster < kwikion < CSAC in σ_y(1 s)); de precisie van de verstrengeling verbetert als 1/√τ (4× integratie halveert σ) wanneer shotruis de grens bepaalt; de gedetecteerde coïncidentiesnelheid daalt met een factor 10 per 10 dB verbindingsverlies; donkertellingen verslechteren de precisie monotoon; de systematische ondergrens begrenst de precisie naar onderen; elke apparaatkaart is een geldig Modelled-representativiteitsrecord.
| Mogelijkheid | Status | Onafhankelijke referentie / eerlijke reikwijdte |
|---|---|---|
| Bibliotheek met foutmodellen van kwantumapparaten | modelled |
src/quantum_devices.rs DeviceCard, quantum_clock_card/classical_clock_card, EntanglementTimeLink. Onafhankelijke referentie: InternalConsistency — hergebruikte gepubliceerde klok- en CAI-coëfficiënten plus identiteiten voor shotruis en verlies in gesloten vorm voor de verstrengelingsverbinding. Tests (quantum_devices::tests) zoals hierboven. Eerlijke reikwijdte: de apparaatparameters van klok en CAI zijn hergebruikt uit de bestaande modellen van de engine met gepubliceerde coëfficiënten; het model van de verstrengelingsverbinding is MODELLED op basis van gepubliceerd gedrag van kwantumklok-synchronisatie, met illustratieve, uit openbare bronnen afkomstige waarden voor pairsnelheid, efficiëntie en verlies — het is niet getoetst aan een gemeten verbinding, en echte bron-, kanaal- en detectorhardware is een benoemd hiaat tot vlucht. |
Vertrouwde kwantumtijdsynchronisatie — keten van begin tot eind, beveiligde verspreiding, anomalie en afweging (src/timetransfer_chain.rs)#
Het scenario quantum-time-transfer stelt de tijdsynchronisatieketen samen die een kwantum-PNT-demonstrator nodig heeft: een eindgebruikerstijdbudget van begin tot eind (uitloopfout van de referentieklok en timingprecisie van de verbinding kwadratisch gecombineerd) voor een kwantumketen (optische-roosterklok + verstrengelings- of enkelefotonverbinding) tegenover een klassieke keten (CSAC + RF-tweewegverbinding); een beschermingsniveau voor tijdsynchronisatie (TPL, hergebruikt uit tpl) dat de niet-gedetecteerde tijdfout begrenst; een beveiligingskwaliteitsmaat voor vertragings- en replay-aanvallen 1 − P_md bij een vermeld vals-alarmpercentage (hergebruikt uit detection); een detectiekans voor klokanomalieën plus CUSUM-latentie (cumulatieve som) voor wijzigingsdetectie; en de vergelijking tussen kwantum en klassiek als eerlijk qtrade::TradeEvidence met een representativiteitsrecord en hiaten tot vlucht.
De onafhankelijke referentie is een kwadratisch budget in gesloten vorm over hergebruikte, afzonderlijk getoetste kernels (ADEV tegen Stable32/NIST; de TPL-grens; detection::analytic_pd/analytic_pmd). timetransfer_chain::tests: de kwantumprecisie verbetert met de integratietijd; de kwantumketen kan de precisiekwaliteitsmaat winnen en verliezen (eerlijk — geen universele winst; een zeer verliesgevende verbinding keert het resultaat om); het beschermingsniveau is eindig en positief; de beveiligingskwaliteitsmaat ligt in [0.1] en groeit met de aanvalsvertraging; de detectiekans voor anomalieën is monotoon in de grootte van de fout; en het afwegingsbewijs is intern eerlijk (is_honest()).
| Mogelijkheid | Status | Onafhankelijke referentie / eerlijke reikwijdte |
|---|---|---|
| Vertrouwde kwantumtijdsynchronisatie (keten + beveiligde verspreiding + anomalie + afweging) | modelled |
src/timetransfer_chain.rs QuantumTimeTransferScenario/Report, to_svg; kind="quantum-time-transfer". Onafhankelijke referentie: InternalConsistency — kwadratisch budget in gesloten vorm over hergebruikte, getoetste kernels (ADEV/Stable32-NIST, TPL-grens, analytische detectie Pd/Pmd); eerlijkheid gekoppeld aan het representativiteitsregister. Tests (timetransfer_chain::tests) zoals hierboven. Eerlijke reikwijdte: de parameters van klok en verbinding zijn illustratief en komen uit openbare bronnen; de verstrengelingsverbinding is het MODELLED, door shotruis begrensde model uit quantum_devices; dit modelleert de klasse van vertrouwde tijdsynchronisatiesystemen — het is niet getoetst aan een gemeten verbinding van begin tot eind, en echte klok-, verbindings- en ruimtekanaalhardware is een benoemd hiaat tot vlucht; er wordt geen TRL, vluchtervaring of certificering beweerd. |
GNSS-vrije kwantumnavigatie (src/quantum_nav_od.rs)#
Het scenario quantum-gnss-free-nav vergelijkt dead reckoning tijdens een GNSS-uitval met een kwantum-inertiaalbudget (een koudeatoominterferometer als versnellingsmeter, hergebruikt uit inertial::quantum_imu/quantum_trade, waarvan de CAI-witteruisondergrens is getoetst tot op ~2 ordes van grootte van Freier et al. 2016) tegenover een klassieke INS van navigatiekwaliteit. Het rapporteert de groei van de positiefout over de uitloop, de holdovertijd tot een positiedrempel en de afweging tussen kwantum en klassiek als eerlijk qtrade::TradeEvidence. De waarneembaarheid wordt eerlijk vermeld: zonder externe positiebepaling tijdens de uitval is de bias van de versnellingsmeter niet waarneembaar, dus de positiefout groeit onbegrensd (≈ ½·bias·t² plus een term voor random walk van de snelheid); een kwantumsensor met lagere bias vertraagt die groei maar dicht de kloof niet — alleen een externe positiebepaling doet dat.
De onafhankelijke referentie bestaat uit de hergebruikte inertiaalbudgetten (QuantumNavBudget/ClassicalInsBudget, beide een implementatie van de trait PositionDrift) plus driftidentiteiten in gesloten vorm. quantum_nav_od::tests: het kwantumbudget verslaat het klassieke over een lange uitval (lagere fout, langere holdover); de fout groeit bij beide met de duur van de uitval (de waarneembaarheidskloof); het voordeel hangt af van de uitval en is geen constante winstfactor (de kwantumcurve wordt bij korte uitloop door ruis bepaald en bij lange uitloop door bias); het afwegingsbewijs is intern eerlijk.
| Mogelijkheid | Status | Onafhankelijke referentie / eerlijke reikwijdte |
|---|---|---|
| GNSS-vrije kwantumnavigatie | modelled |
src/quantum_nav_od.rs QuantumNavOdScenario/Report, to_svg; kind="quantum-gnss-free-nav". Onafhankelijke referentie: InternalConsistency — hergebruikte inertiaalbudgetten (CAI getoetst door hergebruik op ~2 ordes ten opzichte van Freier 2016; klassieke drift in gesloten vorm); eerlijkheid gekoppeld aan het representativiteitsregister. Tests (quantum_nav_od::tests) zoals hierboven. Eerlijke reikwijdte: een statische vergelijking van dead-reckoningbudgetten, geen dynamisch filter op echte trajecten; dat bias zonder positiebepaling niet waarneembaar is, wordt vermeld; de apparaatparameters zijn illustratief en komen uit openbare bronnen; het modelleert de klasse van GNSS-vrije kwantumnavigatie — echte koudeatoom-IMU-hardware, een dynamisch platform en de vluchtomgeving zijn benoemde hiaten tot vlucht; er wordt geen TRL, vluchtervaring of certificering beweerd. |
Fout- en anomaliedetectie voor kwantum-PNT-systemen (src/quantum_faults.rs)#
Het scenario quantum-anomaly-detect definieert een gelabelde catalogus van kwantum-PNT-fouten (klokfrequentiesprong, drift, verlies van lock; sensorbiasstap, uitval), beoordeelt een detectiestatistiek op nominale tegenover foutieve vensters en rapporteert het onderscheidend vermogen van de detector als ROC-AUC en als minimaal detecteerbare fout bij een vast vals-alarmpercentage. De invalshoek kwantum tegenover klassiek: een stabielere kwantumklokreferentie verlaagt de monitorruis σ, zodat kleinere fouten worden gedetecteerd — uitgevoerd als eerlijk qtrade::TradeEvidence met een representativiteitsrecord.
De onafhankelijke referentie is een AUC in gesloten vorm voor de gaussische detectiestatistiek (nominaal N(0,σ), fout N(μ,σ) ⇒ AUC = Φ(μ/(σ√2))), gecontroleerd tegen de extern getoetste eval_stats::bootstrap_auc_ci (getoetst tegen scikit-learn) en de analytische drempels van detection. quantum_faults::tests: de analytische AUC komt overeen met bekende waarden (0,5 bij μ=0, →1 voor grote μ/σ, monotoon); het empirische bootstrap-AUC-interval omvat de gesloten vorm; de kwantummonitor heeft een hogere AUC en een kleinere minimaal detecteerbare fout; het voordeel verdwijnt voor enorme fouten (beide detecteren perfect — geen universele marge); de catalogus heeft vijf gelabelde klassen; de afweging is intern eerlijk.
| Mogelijkheid | Status | Onafhankelijke referentie / eerlijke reikwijdte |
|---|---|---|
| Fout- en anomaliedetectie voor kwantum-PNT | modelled |
src/quantum_faults.rs FaultKind, QuantumAnomalyScenario/Report, analytic_auc, min_detectable_fault; kind="quantum-anomaly-detect". Onafhankelijke referentie: InternalConsistency — gaussische AUC in gesloten vorm, gecontroleerd tegen de extern getoetste bootstrap-AUC van eval_stats (tegen scikit-learn) en de analytische drempels van detection. Tests (quantum_faults::tests) zoals hierboven. Eerlijke reikwijdte: de detectiestatistiek is een gaussisch model, geen echte telemetrie; de foutcatalogus is gelabeld-synthetisch; de ruisniveaus van kwantum- en klassieke monitor zijn illustratief en komen uit openbare bronnen; het modelleert de klasse van kwantum-PNT-anomaliedetectie — echte hardwaretelemetrie met grondwaarheidlabels is een benoemd hiaat tot vlucht; er wordt geen TRL, vluchtervaring of certificering beweerd. |
Normcontrole — uitwisselingsformaten, linkbudget en integriteit (controles tegen een externe onafhankelijke referentie)#
Deze normen worden getoetst door de letterlijke uitgewerkte voorbeelden en referentiewaarden te reproduceren die in de normen zelf zijn gepubliceerd (of in een onafhankelijke referentie-implementatie), niet door Kshana's eigen heen-en-terugomzetting. Het reproduceren van het eigen annexvoorbeeld van een norm is de sterkste beschikbare controle op een parser van een uitwisselingsformaat.
| Standaard | Status | Externe onafhankelijke referentie |
|---|---|---|
| CCSDS OEM (502.0-B Orbit Data Messages) | validated |
tests/ccsds_reference.rs: parse_oem reproduceert de exacte epochs en de toestandsvectoren X/Y/Z/Ẋ/Ẏ/Ż van het KVN-OEM-voorbeeld in CCSDS 502.0-B-3, Annex G §G6, Figure G-11 ("OEM Example with No Acceleration, No Covariance", p. G-10) — beide efemeridesegmenten, inclusief de bronwaarden met voorloopnul (-063.042). Fixture tests/fixtures/ccsds/oem_502_b3_figG11.oem is teken voor teken overgenomen uit het officiële Blue Book (de redactionele markeringen "< intervening data records omitted here >", die geen geldige OEM-records zijn, zijn niet opgenomen). |
| CCSDS TDM (503.0-B Tracking Data Message) | validated |
tests/ccsds_reference.rs: TdmFile::parse reproduceert alle 41 RANGE-records (eerste 3198,03679519614 km, laatste 3270,46440460551 km) en de metadata van het KVN-TDM-voorbeeld in CCSDS 503.0-B-2, Annex E, Figure E-9 ("Range Data with TIMETAG_REF=TRANSMIT", p. E-9). Fixture tests/fixtures/ccsds/tdm_503_b2_figE9.tdm is letterlijk uit het Blue Book. (Dit is de onafhankelijke referentie uit het gepubliceerde Blue Book naast de al bestaande, met de hand opgestelde heen-en-terugomzetting van reference.tdm in src/ccsds_tdm.rs.) |
| CCSDS 133,0 (Space Packet Protocol) | validated |
src/space_packet.rs primary_header_matches_published_independent_test_vectors: de encoder reproduceert de testvectoren voor de primaire header op byteniveau van de onafhankelijke bibliotheek spacepackets (us-irs/spacepackets-py, tests/ccsds/test_space_packet.py) — bijvoorbeeld 18 02 40 34 00 16 en het maximale 1F FF FF FF FF FF — plus het canonieke telemetriegeval (TM) met allemaal enen, elk heen en weer omgezet via decodering. Breedte en volgorde van de bitvelden volgens CCSDS 133.0-B-2 §4.1.3. |
| CCSDS 401 / DSN (linkbudget, DSN 810-005) | validated |
src/linkbudget.rs link_equation_reproduces_descanso_galileo_dct: de keten van FSPL (verlies in vrije ruimte) en C/N₀ reproduceert de gepubliceerde ontwerp-controletabel voor telemetrie in de diepe ruimte uit J. H. Yuen (ed.), Deep Space Telecommunications Systems Engineering (DESCANSO/JPL (DESCANSO: Deep Space Communications and Navigation Systems Center of Excellence) Pub. 82-76), Table 1-1 — de X-band-downlink (8420,43 MHz) van Galileo op 6,37 AU: verlies in vrije ruimte 290,54 dB (<0,05 dB) en ontvangen Pr/N₀ = 54,6 dB-Hz (<0,2 dB). De bandcentra liggen binnen de downlinktoewijzingen voor de diepe ruimte van DSN/CCSDS-401 (DSN 810-005 Module 201). De standaardmissieparameters blijven representatief (geen gekalibreerde transponder); de linkvergelijking is wat hier wordt vastgepind. |
GNSS-normen — status van de externe onafhankelijke referentie en de resterende hiaten, eerlijk benoemd:
| Standaard | Status en eerlijk voorbehoud |
|---|---|
| RAIM / ARAIM | Kernel, geometrie en het ARAIM-beschermingsniveau extern getoetst. De detectie-kernel — de χ²-drempel voor foutdetectie, de niet-centraliteit van de niet-centrale χ² voor gemiste detectie en de K-vermenigvuldigers volgens de normale verdeling — reproduceert SciPy (tests/raim_reference.rs, 171 gevallen, ≤ 1e-6 rel), en de omhullende geometrie reproduceert gnss_lib_py (DOP). Ook de waarde van het ARAIM-beschermingsniveau (PL) is nu vastgepind: tegen het "LPV-200 (LPV: localizer performance with vertical guidance) numerical example" in de WG-C (WG: Working Group) ARAIM Reference ADD (Algorithm Description Document) v3.1 geven src/araim_reference.rs / tests/araim_reference_vectors.rs VPL 18,2926 m tegenover 18,3 m, HPL 13,4063 m tegenover 13,45 m en σ_v,acc 1,3694 m tegenover 1,3694 m, binnen de eigen TOL_PL = 0,05 m van de referentie (het soort araim-reference-check). Reikwijdte: foutmodi tot één satelliet of één constellatie (N_fault,max = 1); foutsubsets met meerdere gebeurtenissen en uitsluiting zijn niet geïmplementeerd, en voor klassieke RAIM is er nog steeds geen canonieke gepubliceerde testvector van invoer naar HPL. Zie ARAIM_REFERENCE.md. |
| SBAS / DO-229E | Beschermingsniveau-algoritme nu extern getoetst. Gegeven de (el, az, σ) per satelliet reproduceert sbas_protection_level van kshana de RTKLIB SBAS-PL-fork (zsiki/rtklib_ws waasprotlevels(), Siki & Takács 2017, "DO-229D Appendix J") — gevoed met de eigen σ van dat hulpmiddel, berekend uit echte EGNOS-uitzendberichten en echte BUTE-RINEX — tot < 2e-3 m HPL over 6 epochs (tests/sbas_reference.rs); ESA gLAB v6.0.0 (core/filter.c) bevestigde dezelfde conventie. K-factoren (K_H,PA=6.0, K_V=5.33, K_H,NPA≈6.18) komen overeen met DO-229E Appendix J. Wat getoetst is en wat niet: dit pint het PL-algoritme vast (σ erin → HPL/VPL eruit); de σ-modellering stroomopwaarts uit ruwe UDRE/GIVE-berichten valt buiten de reikwijdte van kshana — daar verschillen onafhankelijke volledige-ketenhulpmiddelen op echte gegevens nog steeds meters. K_V kwam overeen bij de afgeronde 5,33 van de referentie (de exacte Φ⁻¹(1−5e-8)=5.3267 van kshana → VPL ~0,06 % kleiner; de verticaal wordt zonder K-factor getoetst als d_U). |
| IONEX / Klobuchar | Uitzendmodel extern getoetst. Het Klobuchar-L1-model reproduceert ionmodel van RTKLIB (tests/klobuchar_reference.rs, < 1e-4 m) — implementatiepariteit met de feitelijke open referentie, aangezien er geen officieel uitgewerkt voorbeeld met gemeten waarheid bestaat. De IONEX-TEC-kaartlezer bestaat nu (src/ionex.rs, met unittests); het resterende hiaat is een controle ervan tegen een echt GIM-product, niet het uitzendmodel. Zie de Klobuchar-rijen in Beweringen en werkelijkheid. |
| GPS L1 C/A-spreidingscode (IS-GPS-200) | Codegeneratie extern getoetst. src/sdr.rs (ca_first_ten_chips_match_is_gps_200_octal): de G1/G2-LFSR (linear-feedback shift register) voor de C/A-codegenerator reproduceert de gepubliceerde codefasetoewijzingen in IS-GPS-200 Table 3-Ia — de octale eerste tien chips voor PRN (pseudo-random noise) 1–9 ({1440, 1620, 1710, 1744, 1133, 1455, 1131, 1454, 1626}) — exact. Dit pint de chipreeks van de spreidingscode vast aan de GPS-interfacespecificatie; de omringende onderdelen voor modulatie, spectrale scheiding en codevolging met DLL (delay-locked loop) (navsignal) blijven MODELLED. |
Tijdsynchronisatie voor netwerken, spectrum, het zonnestelsel, constellaties, campagnes en LEO-PNT#
De mogelijkheden die in de lijn 0,28 zijn toegevoegd, worden rij voor rij beoordeeld in de gegenereerde VERIFICATION-MATRIX.md; deze sectie vat samen welke ervan een externe onafhankelijke referentie hebben. Een rij is alleen VALIDATED met een onafhankelijke externe referentie; al het overige is MODELLED.
| Mogelijkheid (kind) | Status | Externe onafhankelijke referentie, of waarom het uit een model berekend blijft |
|---|---|---|
Telecom-MTIE (maximum time interval error) en -TDEV (time deviation) op een holdoverreeks (telecom-timing) |
validated |
tests/telecom_timing_reference.rs: 17 middelingsfactoren voor MTIE en 12 voor TDEV op een vastgelegde holdoverreeks van een chipschaalklok met 2 048 samples, tegen allantools 2024,06, tot < 1e-12 / < 1e-9 relatief. De PASS/FAIL-oordelen over de ITU-T-maskers (International Telecommunication Union Telecommunication Standardization Sector) en de voorinstellingen voor oscillatoren uit datasheets blijven MODELLED. Zie TELECOM-TIMING.md. |
Holdovervoorspelling op basis van een gemeten klokregistratie (slot-timing) |
validated |
tests/slot_timing_cs5071a_holdout.rs: fit op het eerste derde van de echte 5071A-cesiumregistratie, voorspel het moment waarop de een-sigmagrens wordt overschreden bij zes drempels en meet dat op de achtergehouden twee derde; drempel een factor 1,5 naar beide kanten, waargenomen verhoudingen 0,84 tot 1,03. Het slotbewakingsbudget en de frequentie van positiebepaling die erop zijn gebouwd, blijven MODELLED. |
Spectrale vermogensdichtheden en spectrale scheiding in L-band in gesloten vorm (spectrum) |
validated |
navsignal gesloten vormen tegen gepubliceerde waarden (matrixrij "Closed-form L-band signal power spectral densities…"). Het waterval-diagram met J/S per band (jammer-to-signal-verhouding) en effectieve C/N0 (carrier-to-noise-dichtheid), en SigMF-invoer en -uitvoer (Signal Metadata Format), blijven MODELLED. |
Planeetposities uit de Standish-elementen van JPL (Jet Propulsion Laboratory) en lichttijd tussen hemellichamen (solar-system) |
validated |
0,30, gepreregistreerd tegen JPL Horizons (DE441): tests/solar_system_standish_preregistered.rs en tests/solar_system_standish_earth_icrf_preregistered.rs, RMS per planeet en component hooguit het cijfer uit Table 8.10.1 van het Explanatory Supplement (slechtste 0,778), inclusief de aardesplitsing en de ICRF-rotatie; tests/solar_system_light_time_solver_preregistered.rs, de lichttijdoplosser op DE441-posities binnen 1e-6 s van de lichttijd van Horizons (slechtste 6.7e-9 s). De eerdere vergelijking met tweemaal nominaal (tests/solar_system_horizons_reference.rs), waarvan de drempel na de eerste vergelijking is vastgesteld, blijft bewaard als niet-poortende regressie. Uranus/Neptunus uit Table 1, Pluto, de manen, de lichaamsconstanten en body-pnt blijven MODELLED. |
Walker-geometrie en de gepubliceerde GPS-, Galileo- en GLONASS-slots (GLObal NAvigation Satellite System); wereldwijde GPS-verdunning van precisie (constellation-design) |
validated |
constellation::tests: Walker 24/3/1 reproduceert de definitietabel van de Galileo-open-dienst tot 1e-9°, de slotformule uit de GLONASS-interfacecontrole en de equatoriale doorgangen van GPS; de HDOP-mediaan van de GPS-basislijn 0,940 tegenover 0,94 uit de prestatienorm van de Standard Positioning Service. Willekeurige dekkingskaarten voor meerdere constellaties rond elk hemellichaam blijven MODELLED. |
Campagnes: aaneengeschakelde missies, sweeps, Monte-Carlo-ensembles, runs met gedeelde condities (campaign) |
modelled |
tests/campaign_composition_reference.rs (11 tests): een campagne met één fase reproduceert de losstaande run byte voor byte, een sweep met één knooppunt leest hetzelfde getal, een ensemble met vaste seed is byte-stabiel. Samenstellingsidentiteiten, geen externe onafhankelijke referentie. |
| Linkfysica voor LEO (low Earth orbit): regencoëfficiënten volgens ITU-R (ITU Radiocommunication Sector) P.838, regendemping en scintillatie volgens P.618, gebouwpenetratieverlies volgens P.2109, ionosfeer van eerste orde, maximale Doppler | validated |
tests/leo_link_reference.rs, tests/leo_doppler_reference.rs: de eigen tabellen van de ITU-R-aanbevelingen en de validatievoorbeelden van Study Group 3 (vastgelegd met hun bron en ophaaldatum), de groepsvertragingsverhouding uit IS-GPS-200 voor de ionosfeer en de gepubliceerde tabel met maximale Doppler van Leclere, Marathe en Reid (ION GNSS+ 2025, arXiv 2509,19551). |
LEO-navigatiebericht: het gebruikersalgoritme voor de uitgezonden efemeride van de Galileo-ICD (interface control document), CRC-24Q (24-bits cyclische redundantiecontrole), wereldwijd gemiddelde SISRE-gewichten (signal-in-space range error) (leo-navmsg) |
validated |
tests/leo_navmsg_reference.rs: het Galileo-gebruikersalgoritme reproduceert RTKLIB (een opensourcebibliotheek voor real-time kinematische positiebepaling) tot 1 mm op vier echte uitgezonden Galileo-efemeriden; CRC-24Q geeft de catalogus-controlewaarde 0xCDE703 en de controlebytes van het RTCM-voorbeeldframe (Radio Technical Commission for Maritime Services) 1005; de SISRE-gewichten reproduceren de gepubliceerde MEO/GEO-tabel. De fitter, de update halverwege een pass, de binaire codering, de tekst in RINEX-4-stijl/CSV (door komma's gescheiden waarden) en de selecteerbare efemeridemodellen blijven MODELLED. |
Ontwerp van LEO-signalen, pass- en linkbudget, Doppler en gezamenlijke GNSS+LEO-positiebepaling, PPP-convergentie (precise point positioning), 5G-NTN-positiebepaling (non-terrestrial network), LEO-tijdoverdracht (leo-signal, leo-pass, leo-pvt, leo-ppp, ntn-positioning) |
modelled |
tests/leo_signal_reference.rs, tests/leo_fusion_scenarios.rs: gesloten vormen, filterconsistentie (bijvoorbeeld de over runs gemiddelde NEES van het PPP-filter binnen zijn 95%-band) en vergelijkingen met gepubliceerde trends; geen veldgegevens. |
Eén LEO-PNT-systeem van begin tot eind (leo-pnt-chain) |
modelled |
tests/leo_pnt_chain.rs: elke doorgegeven waarde is gelijk aan de eigen uitvoer van de voorgaande trap, en het wijzigen van een invoer stroomopwaarts verschuift elk cijfer stroomafwaarts dat ervan afhangt. |
| LEO-veerkracht en verticalen (spoofing via Doppler en via consistentie tussen banden, ionosfeersondering) | modelled |
tests/leo_resilience_verticals.rs (10 tests). De scenario's voor veerkracht en de verticalen staan vermeld in RESILIENCE-CROSSWALK.md. |
Uitvoer die weergave is en geen bewijs, heeft tests maar geen matrixrij: de uitwisselingsexports (CZML (Cesium Language), KML (Keyhole Markup Language), GeoJSON, STK-efemeride (Systems Tool Kit), SigMF (Signal Metadata Format)), elk teruggelezen door een validator die is geschreven op basis van de specificatie van het formaat (tests/interop_formats.rs, 13 tests; zie INTEROP.md); de animaties (tests/animation.rs: byte-identieke herhaalde runs, exacte framenaantallen, goed gevormde SVG (Scalable Vector Graphics), geen extern adres in de HTML-speler (HyperText Markup Language)); en het runrapport (tests/advanced_report.rs, tests/advanced_report_cli.rs: elk meegeleverd scenario rapporteert zonder lege sectie of plaatsvervangende waarde, de labels komen overeen met de matrix, en de vastgelegde opdracht reproduceert result.json en het rapport byte voor byte).
Werkingsgebied#
Elk pakket wordt over zijn vermelde invoergebied beproefd door tests/scenario_coverage.rs, dat bevestigt dat elke numerieke uitvoer eindig is (geen NaN/Inf (NaN: not a number)) en begrensd. De tabel toont per pakket het geteste invoerbereik, het verwachte uitvoergedrag en de dekkende test.
| Pakket | Doorlopen invoer | Getest bereik | Verwachte uitvoer | Dekkende test |
|---|---|---|---|---|
| clock | threshold_ns (tijdsynchronisatiespecificatie) |
1 – 500 ns | eindige kwaliteitsmaten voor holdover, tijdsynchronisatie en beveiliging | clock_pack_covers_the_spec_threshold_envelope |
| inertial | accel.bias |
1e-7 – 1e-2 m/s² (koudeatoom → grove MEMS (micro-electro-mechanical systems)) | eindige, begrensde positie-RMS/p95 | inertial_pack_covers_the_accel_bias_envelope |
| orbit | mask_deg (elevatiemasker) |
5° – 30° | eindige DOP/beschikbaarheid; begrensd | orbit_pack_covers_the_elevation_mask_envelope |
| spoof | attack.rate_ns_per_s |
0,1 – 50 ns/s | eindige P_md / beveiliging, begrensd | spoof_pack_covers_the_attack_rate_envelope |
| hybrid | position_spec_m |
10 – 1000 m | eindige holdover van tijdsynchronisatie en positie | hybrid_pack_covers_the_position_spec_envelope |
| baan (echt) | echte Celestrak-TLE's van gps-ops |
momentopname van 30 satellieten, strikte checksum | laadt alleen met geldige checksums; begrensde geometrie | real_gps_constellation_scenario_loads_with_valid_checksums_and_bounded_output |
| klok (flicker) | flicker_floor aan/uit |
0 tegenover 1e-12 | het inschakelen van de 1/f-ondergrens verslechtert de timing-p95-uitloop | flicker_fm_floor_degrades_the_clock_holdover_when_enabled |
| fusie (realisme) | accel.bias 0 tegenover 5.88e-7 m/s² |
nul tegenover realistisch niet-nul | filter convergeert nog steeds, binnen 3× de fout bij nul bias | fusion_filter_converges_with_a_realistic_non_zero_bias |
De rijen voor flicker-FM en fusiebias dichten twee specifieke realismehiaten: de ruistermen staan standaard uit maar beïnvloeden aantoonbaar de uitvoer wanneer ze zijn ingeschakeld, en het gezamenlijke fusiefilter hangt er niet van af dat biases op nul staan — het convergeert ook met een realistische restbias van koudeatoomklasse.
Bekende beperkingen#
- Kwantum- en klassieke runs gebruiken nu onafhankelijke RNG-seeds (random-number generator) (klassieke seed = seed + 0x9e3779b97f4a7c15), zodat hun ruisrealisaties ongecorreleerd zijn — hersteld na beoordeling.
holdover_sis segmentbewust: uitvaltijdlijnen worden bij heropname van GNSS gesplitst in aaneengesloten segmenten en de gerapporteerde waarde is de slechtste (kortste) uitloop daarover. Ze blijft begrensd door de resolutie van het tijdraster (een ondergrens).- Her-synchronisatie van ISL-tijdoverdracht modelleert de resterende onzekerheid van de verbinding als verse jitter met gemiddelde nul per meetstap plus herverankering op het ingestelde interval.
Beweringen en werkelijkheid — snelle naslag#
De checklist van een vijandige beoordelaar. Voor elke term die als meer kan worden gelezen dan hij is: wat Kshana vandaag doet en waar de echte versie op de roadmap staat.
| Term die u kunt tegenkomen | Wat het vandaag werkelijk is | Wat het (nog) niet is |
|---|---|---|
| "hybride kwantum/klassieke PNT-simulator" | een klassieke stochastische simulator, aangedreven door gepubliceerde Allan-/ruiscoëfficiënten van kwantumsensoren | kwantumfysica vanuit eerste beginselen (Mach–Zehnder-fase, projectieruis, systematische fouten) — zie QUANTUM-MODELS.md |
| "gezamenlijke Kalman-fusie" / fusiepakket | het uitvoerbare pakket fusion observeert de klok en de positie afzonderlijk (een directe tijdsbepaling en een directe positiebepaling), waarvoor de optimale schatter werkelijk blokdiagonaal is — twee filters met twee toestanden en een gecombineerde kwaliteitsmaat |
een gekoppeld filter voor het geval van pseudorange bestaat nu als fusion::coupled::CoupledPntFilter (gestapelde [pos,vel,phase,freq] met 4 toestanden, niet-nul kruisblokcovariantie, NEES-getoetst) maar is nog niet aangesloten op het uitvoerbare pakket, en het pakket is 1-DOF (één vrijheidsgraad) — de 3D-uitbreiding met 8 toestanden is toekomstig werk |
Beveiligingskwaliteitsmaat (soort spoof) |
1 − P_md van een stochastische detector voor tijd-spoofing: een tweezijdige χ²₁- / Neyman–Pearson-test op een klokondersteunde monitorstatistiek, met drempel vastgesteld uit een doel-P_fa, P_md geëvalueerd bij de specificatiegrootte, zowel in gesloten vorm als met Monte-Carlo (die op een paar ×1/√N na overeenkomen) |
een RAIM/ARAIM-detector met meerdere satellieten — zie INTEGRITY.md; de monitorstatistiek is een gaussisch model met de uit de PSD afgeleide σ van de klok, geen correlatie op signaalniveau |
| "klokondersteunde spoofingdetectie" | een tijdverschilmonitor met één klok (gaussische statistiek, σ uit de PSD van de klok), GEEN RAIM met meerdere SV's (SV: space vehicle, dat wil zeggen een satelliet) | RAIM met meerdere SV's in het afstandsdomein met beschermingsniveaus |
| P_md van de spoofingdetector (gesloten vorm tegenover Monte-Carlo) | de analytische, op Φ gebaseerde P_md en de empirische schatting uit mc_runs proeven komen overeen binnen de steekproeffout (≈ 1/√N); getoetst in de tests van src/spoof.rs / src/detection.rs bij een zwaar belaste afwijking (μ/σ = 2) |
een gemeten ROC van de detector tegen opgenomen spoofinggegevens |
pseudorangemodel van gnss-sim |
een voorwaartse simulatie: ρ = geometric + clocks + Klobuchar iono + Saastamoinen·Niell tropo + noise + multipath. Elk atmosfeermodel is per unit getest tegen handmatig berekende waarden (ZHD (zenith hydrostatic delay) ≈ 2,3 m, Niell = 1 in het zenit, obliquiteit van Klobuchar), en het volledige uitzendmodel van Klobuchar is gecontroleerd tegen de referentie-implementatie ionmodel() van RTKLIB tot op submillimeter (klobuchar_agrees_with_rtklib_reference_implementation, 6,1278 m voor het geval met de standaardcoëfficiënten van RTKLIB — er bestaat geen officiële gepubliceerde Klobuchar-testvector, dus dit is implementatiepariteit en geen gemeten waarheid); een run zonder ruis reproduceert geometrie plus correcties tot op submillimeter (RAIM-residu ≈ 0) |
een positie-oplossing uit echte signalen (PPP/RTK (PPP: precise point positioning)), tweefrequente ionosfeervrije combinatie of ambiguïteitsoplossing op de draaggolffase — niet gemodelleerd |
jammingmodel (soort jamming) |
een keten van linkbudget: J/S uit verlies in vrije ruimte plus antennewinst per richting → effectieve C/N₀ via de anti-jamvergelijking (despreidingswinst × spectrale scheiding Q) → verlies van lock bij een drempel (Kaplan & Hegarty §9,4) |
multipath, AGC-dynamiek (automatische versterkingsregeling) in de tijd, het acquisitiezoeken zelf (de optionele hysterese [acquisition] is een drempelpaar); het optionele kwantiseringsverlies [front_end] geldt voor een gaussische invoer en is niet geldig voor een CW-jammer; de optionele [crpa]-array is smalbandig en ideaal (geen koppeling of mismatch), en de optionele [terrain]-afscherming is één messcherpe rand op één SRTM-tegel; Q is een representatieve constante per type, niet afgeleid uit de gemeten PSD van de jammer |
| Integriteitskwaliteitsmaat (klok- en holdoverpakketten) | zelfconsistentie van het filter (aandeel van de uitvalsamples binnen zijn eigen k·σ-grens) | HPL/VPL, integriteitsrisico / P_HMI, alarmgrenzen, DO-229E/316/ED-259A — die worden afzonderlijk gerapporteerd door het soort integrity (RAIM / ARAIM) en de SBAS-functies en nooit in deze kwaliteitsmaat opgenomen |
kwaliteitsmaat van het oudere scenariopakket inertial |
een foutbudget voor een accelerometer/gyro met één as (1-DOF) (VRW/ARW, bias-instabiliteit) met een reset naar de referentie | het oudere pakket is 1-DOF; het pad met 3 assen zit in het pakket gnss-ins (volgende rij) |
strapdown-bibliotheek met 3 assen + pakket gnss-ins (src/inertial/, src/fusion/pack.rs) |
een geverifieerde navigator met quaternionen/NED (NED: north-east-down) met een deterministisch IMU-foutmodel — schaalfactor, misalignment, g-gevoeligheid, kwantisatie, snelheidsramp gemodelleerd (IEEE Std 952-1997 §A.2; Groves 2013 §4,3) — nu aangestuurd door het scenariopakket gnss-ins en per sensor configureerbaar vanuit TOML (Tom's Obvious Minimal Language, het scenarioformaat) ([imu_*.error_model]) |
niet gemodelleerd: trillingsrectificatiefout, temperatuurgradiëntdrift. De gefuseerde uitloopfout wordt aan de ondergrens begrensd door de oriëntatiefout bij overdracht (kanteling en accelerometerbias zijn zwak scheidbaar), dus kalibratie per bias wordt niet beweerd |
"Hybride PNT-integratie" (pakket hybrid) |
open-lus dead reckoning, omsloten door resets van GNSS naar de referentie | een gekoppelde (los/strak) Kalman-mix van GNSS en INS — dat is het afzonderlijke pakket gnss-ins (EKF) en het soort hybrid-ukf |
| "Positioneringsprestatie" (klokpakketten) | RMS van de klokfase-tijdsynchronisatie in ns (timing_rms_ns) |
een nauwkeurigheid in het positiedomein, gewogen met RMS/CEP/SEP/DOP (SEP: spherical error probable) |
inertiale positiekwaliteitsmaat (pos_rms_m) |
een positie-RMS/p95 met één as in meters, uit één seed tenzij runs = N om een ensemble vraagt (dan gemiddelde, spreiding en een bootstrap-betrouwbaarheidsinterval van 95% per maat) |
een verdeling van een ensemble-CEP / 2DRMS (tweemaal de afstands-RMS) (roadmap: Monte-Carlo-CEP) |
| "getoetst tot ~2%" | een typische waargenomen overeenstemming; de afgedwongen poort is 20–25% relatieve fout | een gegarandeerde nauwkeurigheidsgrens van 2% |
| "reproduceerbaar / bit-identiek" | bit-identieke herhaling op hetzelfde besturingssysteem + vastgezette toolchain; over Linux, macOS en Windows controleert CI een vastgelegde SHA-256 van de invoervingerafdruk en de vorm van elk resultaat (tests/cross_platform_golden.rs) en de numerieke waarden tot 1e-6 (tests/golden.rs) |
een byte-identiek volledig resultaat over besturingssystemen heen (verschillen in het laatste cijfer van libm) |
SGP4-GPS-scenario (orbit-sgp4-gps.toml) |
een echte momentopname van Celestrak gps-ops (2021-07-28, 30 satellieten, strikte checksums), waarbij elke satelliet vanaf zijn eigen TLE-epoch wordt gepropageerd |
een actuele constellatie — ververs de momentopname met scripts/fetch_tles.sh (zie REAL_TLE_GUIDE.md); de NORAD-catalogusnummers (North American Aerospace Defense Command) zijn de echte |
Kruiscontroles met artikelen over lunaire PNT (regressiebewijs, geen matrixrijen)#
De lunaire/cislunaire suite (de mogelijkheden "Lunar & cislunar" en "Lunar PNT suite" in de README) heeft haar beweringen uit gepubliceerde artikelen onafhankelijk gecontroleerd in tests/validate_p*.rs, elk tegen een onafhankelijke referentie uit een andere implementatie:
- footprint van baanzenden en -opvangen tegen
scipy.special.j1(Cephes-Bessel J1); - DOP van de geometrie van oppervlaktebakens tegen een onafhankelijke NumPy-oplossing van
(HᵀH)⁻¹; - groei van de voorspellingsfout van UT1/EOP-persistentie tegen een NumPy-herparsing van dezelfde letterlijke IERS-rijen uit
finals2000A; - vlakke familie van retrograde banen op grote afstand tegen de NASA/JPL Three-Body Periodic Orbit Database;
- budget voor RF-afstandsmetingsprecisie tegen een referentie vanuit eerste beginselen.
Fixtures en scripts voor onafhankelijke-referentiegeneratoren staan onder tests/fixtures/{p1_footprint,lunar_service,eop_prediction,rf_ranging_precision,dro_family_jpl,p2_independent_dop}/. Ze versterken het bewijs achter mogelijkheden die in de machinaal gecontroleerde matrix (src/verification.rs) MODELLED blijven; het zijn regressiecontroles en geen nieuwe VALIDATED matrixrijen, dus ze veranderen zelf het machinaal gecontroleerde matrixaantal niet. Dat aantal wordt hier niet herhaald, omdat een met de hand overgetypte kopie ervan afdrijft: de actuele verdeling is de gegenereerde kop van VERIFICATION-MATRIX.md, die gen_validation_artifacts schrijft op basis van verification_matrix() en die tests/verification_artifacts_doc_sync.rs vastpint.