Validace SGP4/SDP4 vůči referenci komunity
Orbitální propagátor Kshany je validován vůči kanonické referenci komunity pro SGP4/SDP4 (SGP4: Simplified General Perturbations 4; SDP4: Simplified Deep-space Perturbations 4): ověřovacím vektorům zveřejněným s článkem Vallado a kol., „Revisiting Spacetrack Report #3“ (AIAA (American Institute of Aeronautics and Astronautics) 2006-6753), distribuovaným jako SGP4-VER.TLE (testovací TLE (dvouřádkové sady elementů)) a tcppver.out (očekávaný stav TEME (true equator, mean equinox) v každém čase). Je to táž reference, proti níž se validují veřejné implementace v C++/Pythonu/MATLABu, takže shoda zde je shodou s de facto standardem.
Výsledek#
| Veličina | Hodnota |
|---|---|
| Porovnané referenční stavy | 666 (všechny řádky v tcppver.out, zafixované v testu) |
| Nejhorší chyba polohy | 4,12 mm (4.120e-6 km, družice 23333; < tolerance 2e-5 km) |
| Nejhorší chyba rychlosti | 1.85e-9 km/s (družice 23333; < tolerance 1e-6 km/s) |
| Pokryté případy | SGP4 pro blízkou Zemi, SDP4 pro hluboký vesmír (lunisolární + rezonance 12 h/24 h) a záměrné případy chybových kódů |
Případy hlubokého vesmíru a rezonanční mají pro tento projekt zvláštní význam: družice GNSS (globálního družicového navigačního systému) obíhají po drahách s periodou ~12 h, které jsou hlubokovesmírné a rezonanční, což model dvou těles + sekulární J2 nedokáže reprodukovat — SGP4/SDP4 ano.
Metoda#
- Implementace (
src/sgp4.rs) je port algoritmu Vallada z public domain do Rustu bez závislostí; zpracování epochy je ve dnech od roku 1950, používá se režimimproved(nikoliafspc) a gravitační konstanty WGS-72 (WGS: World Geodetic System) se aplikují tak, jak reference předepisuje. - Test (
tests/sgp4_verification.rs) zpracuje přibalené fixturySGP4-VER.TLEatcppver.out(tests/fixtures/sgp4/), propaguje každou testovací družici ke každému referenčnímu času a ověřuje, že poloha a rychlost v TEME se shodují v rámci výše uvedených tolerancí. Počet porovnaných řádků je zafixován přesně na 666, aby regrese fixtury nebo přeskakování případů nemohly tiše snížit pokrytí.
Reprodukujte to#
cargo test --test sgp4_verification -- --nocapture
Test vypíše počet porovnaných řádků a nejhorší chyby polohy a rychlosti. Fixtury jsou součástí repozitáře, takže kontrola je zcela offline a deterministická.
Nezávislá křížová kontrola proti crate sgp4#
Shoda s publikovanou referencí dokazuje správnost vůči tabulce. Aby se prokázala správnost i vůči nezávislé implementaci, tests/sgp4_crate_comparison.rs spouští široce používanou nezávislou knihovnu SGP4 v Rustu, crate sgp4 (neuromorphicsystems/sgp4, verze 2,4), nad týmiž 666 vektory AIAA a porovnává obě kódové základny přímo mezi sebou. Obě jsou provozovány s gravitačním modelem WGS72 (World Geodetic System 1972), v němž jsou vektory definovány (výchozí from_elements tohoto crate používá WGS84 (World Geodetic System 1984), který se od reference WGS72 liší o ~km — jde o modelovací volbu, uvedenou otevřeně, nikoli o chybu).
| Režim | kshana ↔ reference | crate ↔ reference | kshana ↔ crate |
|---|---|---|---|
| blízká Zemi (LEO/MEO (LEO: nízká oběžná dráha Země; MEO: střední oběžná dráha Země)) | 7.3e-9 km | 7.3e-9 km | 4.4e-10 km |
| hluboký vesmír (nerezonanční) | 4.1e-6 km | 2.1e-7 km | 4.1e-6 km |
| rezonance v hlubokém vesmíru (½ dne) | 8.1e-9 km | 7.7e-9 km | 2.2e-9 km |
| rezonance v hlubokém vesmíru (1 den) | 8.2e-9 km | 7.8e-9 km | 2.2e-9 km |
Dvě nezávislé implementace se shodují na úrovni pod mikrometr pro dráhy blízké Zemi a rezonanční a na 4,12 mm v nejhorším případě napříč všemi režimy — týchž 4,12 mm, které jsou vlastní odchylkou Kshany od reference, tedy rozdíl je právě tento jeden případ hlubokého vesmíru, přičemž crate leží mezi Kshanou a tabulkou. Úplná tabulka (s počty řádků podle režimů a čtyřmi patologickými případy, které crate odmítá při konstrukci) je součástí repozitáře v tests/fixtures/sgp4_comparison.md a regeneruje se pomocí KSHANA_REGEN_FIXTURES=1 cargo test --test sgp4_crate_comparison.
Stav „publikování“ tohoto výsledku#
Samotná křížová validace je dokončena a je součástí repozitáře. Odeslání výsledku externím místům (komunitnímu katalogu, krátké poznámce, archivnímu záznamu s DOI (DOI: digitální identifikátor objektu)) je úkon správce sledovaný zvlášť v plánu rozvoje; tento dokument je záznam v repozitáři, na který by se tato odeslání odkazovala.