Validering av kraftmodeller genom efemerispassning — metodik och validerade residualer
Kshanas fullständiga kraftmotor (src/precise_od.rs) anpassad till verkliga precisa banprodukter från rymdorganisationer, med ärliga, citerbara residualer stämplade med commit-hash. Detta är valideringsunderlaget för färdplansmilstolpen P4 ("Precise astrodynamics: high-order gravity, SRP (solar-radiation pressure), validation vs agency datasets").
Vad en validerad residual betyder här#
En residual rapporteras bara när allt av följande gäller (utformning docs/design/2026-06-09-precise-astrodynamics-design.md):
- Kraftmodellen innehåller varje störning som spelar roll vid målnoggrannheten: EGM2008 (Earth Gravitational Model 2008) geopotential av hög grad (avkortad vid en angiven grad och ordning, d/o), fasta, oceaniska och atmosfäriska tidvatten (
src/tides.rs, IERS (International Earth Rotation and Reference Systems Service) Conventions 2010 kap. 6), tredjekroppsinverkan från Solen och Månen, kanonkule-SRP med konisk skugga och skattadC_R, luftmotstånd (endast LEO (låg omloppsbana)), samt allmänna relativitetsteorins (GR) termer av Schwarzschild och Lense–Thirring (src/forces.rs). - Skattaren är en verklig Gauss–Newton-batchminstakvadratanpassning med en variationell tillståndsövergångsmatris (korskontrollerad mot ändlig differens över hela bågen till < 1e-6),
1/σ²-viktning av observationer och redigering av n-sigma-avvikare. - Referenssystem och tid använder verkliga IERS finals2000A jordorienteringsparametrar (EOP) (UT1 (Universal Time 1, jordrotationstid)−UTC (Coordinated Universal Time), polrörelse;
src/eop.rs) genom den validerade kedjan IAU (International Astronomical Union) 2006/2000A CIO (Celestial Intermediate Origin) (src/cio.rs). SP3 (Standard Product 3, formatet för precisa banor) GPS-tid (Global Positioning System) → TT (Terrestrial Time) via den fasta förskjutningen 51,184 s (timescales::gps_to_tt). - Residualerna rapporteras i RTN (radiellt/längs banan/tvärs banan) och i 3D, med och utan empiriska accelerationer, tillsammans med den råa överlappningen (utan anpassning).
- Varje tal är reproducerbart (grind med öppna data i CI (kontinuerlig integration)) och citerbart (commit-hash + datamängdsreferens + fixturens SHA-256 (SHA: Secure Hash Algorithm)).
Metod, per datamängd#
- Tolka den precisa SP3-banan; för den valda satelliten, ta varje ITRF-positionsbestämning (International Terrestrial Reference Frame).
- Konvertera SP3:s GPS-epok → TT; bestäm
(UT1, xₚ, yₚ)ur finals2000A vid den epoken. - Rotera varje ITRF-positionsbestämning till GCRS (Geocentric Celestial Reference System) genom CIO-kedjan med dessa EOP — de tröghetsbaserade positionsobservationerna. Dynamiken använder samma EOP för geopotentialens jordfasta rotation, så att observationer och krafter delar ett referenssystem.
- Initiera epokens tillstånd (position = första positionsbestämningen; hastighet = ändlig differens av 2:a ordningen) och batchanpassa
[r, v, C_R](nivå 1), därefter dessutom de 9 empiriska RTN-accelerationerna per varv (CPR, cycle-per-revolution) (nivå 2, med a priori-begränsning). - Rapportera RTN- och 3D-RMS (root mean square) efter anpassning för båda nivåerna och den råa överlappningen.
Resultat#
Galileo, medelhög jordbana — GREEN (< 5 m tröskel)#
- Datamängd: slutlig multi-GNSS-bana från ESA/ESOC (ESA: European Space Agency; ESOC: European Space Operations Centre) (GNSS: global navigation satellite system)
ESA0MGNFIN, ITRF, 5 minuters sampling, satellit E11 (GSAT0101, Galileo In-Orbit Validation (IOV), nominell MEO (medelhög jordbana)), 2022-01-01. - Öppen källa (ingen inloggning): spegel hos ESA Navigation Office,
navigation-office.esa.int/products/gnss-products/2190/. EOP: IERSdatacenter.iers.org/data/9/finals2000A.all. - Valideringscommit:
66da3ff(tests/agency_galileo.rs). - Fixturer (SHA-256): SP3
e7297f4c…d3a24a3; EOP6b781d36…cb2ed00f(tests/fixtures/agency/NOTICE.md).
| Kör | Båge | d/o | n_obs | 3D-RMS | RTN (R, T, N) | C_R |
Anteckningar |
|---|---|---|---|---|---|---|---|
CI-fixtur, nivå 1 (kraft + C_R) |
8 h | 12 | 97 | 0,133 m | 0,105, 0,067, 0,047 m | 1.174 | rå överlappning 78,7 km |
| CI-fixtur, nivå 2 (+ empirisk CPR) | 8 h | 12 | 97 | 0,070 m | 0,048, 0,044, 0,027 m | — | halverar residualen |
| Utskick av hela bågen, nivå 1 (före rättning†) | 24 h | 12 | 289 | 0,611 m | 0,276, 0,381, 0,390 m | 1.244 | workflow_dispatch |
CI-fixturernas tal ovan spelades in på nytt i 0,36 efter S2-rättningen av lufttidvattnet (xval/s2-air-tide-fix/): Galileo nivå 1 flyttades 0,132 → 0,133 m (C_R 1,1744 → 1,1743), N-komponenterna för Swarm-A med 1–2 mm; talen för utskicket av hela bågen kördes inte om. † Före rättning: talet för utskicket av hela bågen spelades in före S2-rättningen av lufttidvattnet i 0,36 och har inte körts om på den rättade koden (heldagsprodukterna hämtas av utskicksarbetsflödet och fanns inte tillgängliga i den session som gjorde rättningen). På CI-fixturerna flyttade rättningen Galileos 3D-RMS med mindre än 1 mm och Swarm-A:s komponenter med 1–2 mm, så en ändring av samma storleksordning förväntas; nästa körning av workflow_dispatch spelar in den på nytt.
MEO-fältet är gravitationsmässigt konvergerat vid grad 8 (nivå 1-resultatet för 8 h är identiskt vid d/o 8, 10 och 12 på millimetern när), så CI-fixturens avkortning vid d/o 12 är försumbar; utskicksjobbet kör hela d/o 70. Anpassningen över 8 h når 13 cm med ren kraft och 7 cm med den empiriska nivån; hela bågen på 24 h (mer SRP- och förmörkelsebelastning, längre dynamiskt tidsspann) ger 61 cm — långt inom tröskeln på 5 m.
Swarm-A LEO — GREEN (< 5 m tröskel)#
- Datamängd: ESA Swarm nivå 2, precis vetenskaplig bana med reducerad dynamik
SW_OPER_SP3ACOM_2_(RDOD_AR, GPS-härledd, ITRF / IGb14, ~2 cm, bearbetning vid Delft University of Technology), satellit Swarm-A (SP3-idL47, ~430 km LEO), 2022-01-01. - Öppen källa (ingen inloggning): ESA:s Swarm-distributionsserver
https://swarm-diss.eo.esa.int/→Level2daily/Latest_baselines/POD/RD/Sat_A/(öppen enligt ESA Data Policy). EOP: samma IERS-seriefinals2000A2022-001. - Valideringscommit:
ceea70a(tests/agency_swarm.rs). - Fixtur (SHA-256): SP3
6cd84b78…acb733e(tests/fixtures/agency/NOTICE.md).
En LEO-båge lägger till atmosfäriskt luftmotstånd i kraftmodellen. Eftersom densitetsmodellen är en statisk styckvis exponentiell anpassas banan i två nivåer: en dynamisk nivå (skatta endast epokens tillstånd; C_R hålls vid 1, eftersom luftmotståndet dominerar i LEO och SRP är dåligt separerbart över en kort båge), och en nivå med reducerad dynamik som lägger till de empiriska accelerationerna per varv som bär det omodellerade luftmotståndet — den operativt meningsfulla LEO-banan.
| Kör | Båge | d/o | n_obs | 3D-RMS | RTN (R, T, N) | Anteckningar |
|---|---|---|---|---|---|---|
CI-fixtur, dynamisk (C_R=1) |
3 h | 70 | 181 | 2,687 m | 0,925, 2,522, 0,045 m | residualen ≈ ren längs banan (luftmotstånd) |
| CI-fixtur, reducerad dynamik (+empirisk) | 3 h | 70 | 181 | 0,098 m | 0,026, 0,092, 0,025 m | det empiriska absorberar luftmotståndet |
Den dynamiska anpassningen klarar tröskeln på 5 m med residualen nästan helt längs banan — den klassiska luftmotståndssignaturen på ~430 km. Den empiriska nivån absorberar felet längs banan (2,52 → 0,09 m) och ger en anpassning med reducerad dynamik på ~10 cm mot ESA:s egen bana på ~2 cm. Körningen över hela dygnet med full grad är det ignorerade swarm_full_arc_dispatch (distributionsservern levererar produkten genom sin filbläddrarsession, så grundaren laddar ner dygnets SP3 och pekar KSHANA_SWARM_SP3 på den). NRLMSISE-00 (NRLMSISE: Naval Research Laboratory Mass Spectrometer and Incoherent Scatter Radar Extended atmosphere model) med rymdvädersdrivare är den noterade uppgraderingen som skulle skärpa den dynamiska nivån ytterligare.
LRO lunar — validated, över tröskeln på 5 m (ärligt) (P4 W4b)#
- Datamängd: den verkliga rekonstruerade banan för NASA/JPL (NASA: National Aeronautics and Space Administration; JPL: Jet Propulsion Laboratory) Lunar Reconnaissance Orbiter (LRO; NAIF (Navigation and Ancillary Information Facility) −85) från JPL Horizons, geometriska månscentrerade tillståndsvektorer i ICRF (International Celestial Reference Frame), 2022-01-01, ~98 km höjd, 1 minuts sampling (241 epoker, 4 h, ~2 varv). Att använda Horizons textvektorer kräver ingen SPK/SPICE-läsare (SPK: planetefemeridkärna; SPICE: Spacecraft, Planet, Instrument, C-matrix, Events).
- Gravitation: GRGM660PRIM-fältet från GRAIL (Gravity Recovery and Interior Laboratory) (NASA Goddard Space Flight Center, grad 660), avkortat till d/o 150 och anpassat vid d/o 100, utvärderat i månens kroppsfasta huvudaxelsystem.
- Öppen källa (ingen inloggning): Horizons-API:t (application programming interface)
ssd.jpl.nasa.gov/api/horizons.api; gravitation via ICGEM (International Centre for Global Earth Models)icgem.gfz-potsdam.de. - Valideringscommit:
4fb82bb(tests/agency_lro.rs). - Fixturer (SHA-256): LRO
574e3518…d100f0; GRGM0ff04184…f029977ae(tests/fixtures/agency/NOTICE.md).
Detta är månscentrerad dynamik — en särskild kraftmodell (src/lunar_od.rs): GRGM-fältet i månens kroppsfasta system (IAU:s 2015 orientering för medeljord src/lunar_frame.rs sammansatt med den fasta förskjutningen DE421 (Development Ephemeris 421) medeljord → huvudaxel (ME→PA)), plus jorden (den dominerande störningen i månbanor) och solen som tredje kroppar, anpassad genom samma generiska precisa Gauss–Newton-skattare som jorddatamängderna använder (egenskapen precise_od::ForceModel).
| Kör | Båge | d/o | n_obs | 3D-RMS | RTN (R, T, N) | Anteckningar |
|---|---|---|---|---|---|---|
| CI-fixtur, dynamisk (endast tillstånd) | 4 h | 100 | 241 | 12,05 m | 2,91, 10,11, 5,88 m | rå överlappning 39,9 m |
| CI-fixtur, reducerad dynamik (+empirisk 1+2/varv) | 4 h | 100 | 241 | 6,67 m | 3,41, 4,58, 3,44 m | empiriska 1 och 2 per varv absorberar felet längs banan |
Rättning i 0,36: fram till 0,36 tillämpades förskjutningen ME→PA i DE421 i fel riktning (och med fel Euler-ordning), vilket gjorde att det analytiska PA-systemet hamnade omkring 208″ från PA i stället för på det. Den är nu transkriberad så som SPICE definierar den (kontrollerad mot pxform('MOON_ME','MOON_PA') till 2.6e-16 rad, tests/lunar_me_pa_offset_spice_oracle.rs; docs/design/evidence/fut05b-me-pa-offset-sign/). Talen ovan gäller efter rättningen; före den var de 53,8 m rått, 12,6 m dynamiskt (3,07, 10,19, 6,81 m) och 6,65 m med reducerad dynamik (3,49, 4,56, 3,35 m).
Dessa residualer ligger över tröskeln på 5 m som Galileo (0,13 m) och Swarm-A (0,10 m) klarar, och rapporteras ärligt.
Vad som egentligen sätter golvet — en korsvalidering på DE-nivå (och en rättelse)
Vi antog att den begränsande faktorn var noggrannheten i den analytiska månorienteringen och efemeriden (IAU:s librationsserie, noggrann till tiotals bågsekunder jämfört med JPL:s DE (Development Ephemeris) numeriskt integrerade MOON_PA, och Montenbruck–Gills efemerid för jorden och solen, ~0,3° jämfört med en DE/SPICE-kärna). För att pröva det direkt byter den arbetsytsexkluderade korsvalideringskratet xval/anise-lunar-od ut enbart dessa två indata mot sådana på DE-nivå — DE440:s (Development Ephemeris 440) orientering av månens huvudaxlar (moon_pa_de440_200625.bpc) och DE440-efemeriden (de440s.bsp), lästa genom ANISE (Attitude, Navigation, Instrument, Spacecraft, Ephemeris — en ren Rust-läsare av SPICE-kärnor) — och kör om samma skattare (commit ae96a29, kärnans SHA-256 c1c7fee… / 60cd55a…):
| Nivå | analytisk | DE-grade |
|---|---|---|
| rå överlappning | 53,8 m | 41,5 m |
| dynamisk | 12,6 m | 12,0 m |
| reducerad dynamik (1+2/varv) | 6,65 m | 6,67 m |
Anmärkning för 0,36: det mesta av vinsten på den dynamiska nivån nedan berodde på förskjutningsfelet, inte på indata på DE-nivå. Med den rättade förskjutningen ME→PA ger den analytiska stacken 39,9 m rått, 12,05 m dynamiskt och 6,67 m med reducerad dynamik, mot 41,5, 12,0 och 6,67 m på DE-nivå: de analytiska anpassningarna och de på DE-nivå stämmer nu överens på varje nivå. Avläsningen 0,30 i tabellen nedan följer av detta och är kvar så som den skrevs.
Hypotesen stämmer bara till hälften, och huvudpåståendet behövde rättas. Orientering och efemerid på DE-nivå förbättrar den råa överlappningen (53,8 → 41,5 m) och den dynamiska anpassningen (12,6 → 12,0 m) — så felet i den analytiska orienteringen och efemeriden är verkligt och begränsar de nivåerna. Men de lämnar residualen med reducerad dynamik i stort sett oförändrad (6,65 → 6,67 m): den empiriska nivån med 1+2 per varv absorberade redan felet i orientering och efemerid, så det operativa golvet på ~6,6 m sätts av något annat — en residual som basen med cykler per varv inte kan absorbera och som referenssystem på DE-nivå inte tar bort. Den mest samstämmiga förklaringen är omodellerad icke-gravitationell dynamik hos LRO (termisk återstrålning, avgasning) över den korta bågen på 4 h; fältets grad är utesluten (identisk vid d/o 100 och 150) och integratorns tolerans är utesluten (identisk vid atol 1e-6 mot 1e-9). Den konstruktiva slutsatsen: Kshanas slimmade, kärnfria analytiska månstack matchar redan noggrannheten på DE-nivå för den operativa månbanan med reducerad dynamik — standardinställningen med enbart koefficienter lämnar ingenting oanvänt där. Att passera 5 m skulle kräva modellering av LRO:s icke-gravitationella krafter (en rymdfarkostspecifik box-wing-/termisk modell och en längre anpassning över flera bågar), inte bättre referenssystem.
Ärlighetskontrakt#
- Den "gröna" tröskeln på < 5 m är uppnådd för Galileo MEO (0,13 m dynamiskt) och Swarm-A LEO (2,69 m dynamiskt / 0,10 m med reducerad dynamik). LRO lunar publiceras som den är med 12,05 m dynamiskt / 6,67 m med reducerad dynamik (1+2 empiriska per varv) — över tröskeln (0,36, efter rättningen av förskjutningen ME→PA; 12,6 / 6,65 m före den). En korsvalidering på DE-nivå (ovan) prövade och rättade påståendet om den begränsande faktorn: golvet med reducerad dynamik är inte den analytiska orienteringen och efemeriden (DE440-kärnor lämnar det oförändrat vid 6,67 m), så det stängs inte av bättre referenssystem utan genom modellering av LRO:s icke-gravitationella dynamik — den ärliga, uppdaterade vägen till meternivå.
- För LEO rapporteras nivåerna dynamisk (endast tillstånd, statisk densitet) och reducerad dynamik (med empiriska accelerationer) alltid var för sig, så att läsaren ser vad de empiriska termerna absorberar; nivån med reducerad dynamik är den operativa banan. Samma uppdelning gäller för MEO:s empiriska nivåer och nivåer med ren kraft.
- Varje residual har sin commit-hash, datamängdsreferens och fixturens kontrollsumma angivna ovan.
- Datamängder validerade mot verklig referens från rymdorganisationer: 3 av 3 (Galileo MEO, Swarm-A LEO, LRO lunar). Når tröskeln < 5 m: 2 av 3 (Galileo ✓, Swarm-A ✓; LRO vid 6,67 m, ärligt över den).