Standardy i interoperacyjność
Kshana mówi standardowymi formatami wymiany społeczności GNSS (globalny system nawigacji satelitarnej), dynamiki lotu i czasu, aby mogła współistnieć z RTKLIB (otwartoźródłową biblioteką kinematycznego pozycjonowania w czasie rzeczywistym), gLAB, Ginan, GMAT (General Mission Analysis Tool), Orekit i narzędziami centrów analiz IGS (International GNSS Service), zamiast tkwić na prywatnej wyspie. Ta strona przypisuje formaty wymiany, które silnik odczytuje lub emituje, do modułu, który każdy z nich implementuje, i do autorytatywnej specyfikacji.
Dotyczy formatów, czyli rzeczy mających kierunek odczytu lub zapisu. Standardy sygnałów i algorytmów, które silnik implementuje, a nie odczytuje (IS-GPS-200 (IS: Interface Specification; GPS: Global Positioning System), IEEE (Institute of Electrical and Electronics Engineers) 1139, RTCA (dawniej Radio Technical Commission for Aeronautics) DO-229E, IGRF-14 (IGRF: International Geomagnetic Reference Field), odniesienie ARAIM (zaawansowane autonomiczne monitorowanie integralności przez odbiornik) WG-C (WG: Working Group), CCSDS (Consultative Committee for Space Data Systems) 401/DSN (DSN: Deep Space Network)) są udokumentowane dowodami wiersz po wierszu w VERIFICATION-MATRIX.md.
Formaty, którymi mówi silnik#
| Standard | Kierunek | Moduł | Specyfikacja / autorytet | Uwagi |
|---|---|---|---|---|
| CCSDS OEM (Orbit Ephemeris Message) | odczyt i zapis | src/oem.rs |
CCSDS 502.0-B Orbit Data Messages, postać KVN (notacja klucz-wartość) | Tabelaryczne efemerydy wektora stanu wczytywane przez GMAT, Orekit, STK (Systems Tool Kit). parse_oem odczytuje je z powrotem; sprawdzone względem niezależnego wzorca przez odtworzenie dosłownego przykładu z Rysunku G-11 Blue Book CCSDS 502.0-B-3 (tests/ccsds_reference.rs). Opcjonalny blok kowariancji położenia i prędkości 6×6 (COVARIANCE_START … COVARIANCE_STOP, 21-elementowa serializacja KVN dolnego trójkąta z opcjonalnym COV_REF_FRAME) jest zarówno zapisywany (covariance_block_kvn), jak i odczytywany (parse_covariance_block), symetrycznie w obie strony (testy src/oem.rs). |
| CCSDS OMM (Orbit Mean-Elements Message) | zapis | src/omm.rs |
CCSDS 502.0-B-2, postać KVN | Publikacja standardowa elementów średnich SGP4/TLE (SGP4: Simplified General Perturbations 4; TLE: zestaw elementów dwuwierszowych) (ruch średni, e, i, Ω, ω, M, BSTAR (człon oporu propagatora orbity)). Dostępne z CLI (CLI: interfejs wiersza poleceń) w scenariuszu orbit przez --export-omm <out.omm> lub export_omm = true (jeden OMM na satelitę zdefiniowanego przez TLE, z jego rzeczywistym identyfikatorem NORAD (North American Aerospace Defense Command), oznaczeniem COSPAR (Committee on Space Research) i epoką; tests/sp3_export_roundtrip.rs). Postać XML (Extensible Markup Language) i czytnik są kolejnymi krokami. |
| CCSDS TDM (Tracking Data Message) | odczyt i zapis | src/ccsds_tdm.rs |
CCSDS 503.0-B Tracking Data Message, postać KVN | Rekordy śledzenia odległości / Dopplera / kąta, które przejście DSN/ESTRACK (ESTRACK: European Space Tracking network) dostarcza do systemu OD (wyznaczania orbity). Sprawdzone względem niezależnego wzorca przez odtworzenie dosłownego przykładu z Rysunku E-9 Blue Book CCSDS 503.0-B-2 (tests/ccsds_reference.rs). |
| CCSDS Space Packet (133,0) | odczyt i zapis | src/space_packet.rs |
CCSDS 133.0-B-2 Space Packet Protocol | 6-oktetowe ramkowanie nagłówka głównego TM/TC (TM: telemetria; TC: telekomenda), wymieniane przez systemy naziemne. Koder odtwarza opublikowane, bajtowe wektory testowe niezależnej biblioteki spacepackets-py (testy src/space_packet.rs). |
| SP3-c (SP3: Standard Product 3, format dokładnych orbit) / SP3-d (dokładne efemerydy) | odczyt i zapis | src/sp3.rs |
IGS Standard Product 3 (c/d) | Szereg czasowy położenia w układzie związanym z Ziemią (ECEF) i czasu zegara. Przejście w obie strony sprawdzone względem niezależnego wzorca do < 0,5 m na rzeczywistej migawce gps-ops (tests/sp3_export_roundtrip.rs). |
| RINEX (Receiver Independent Exchange Format) 3 (nawigacyjne dane rozgłaszane) | odczyt | src/rinex.rs |
RINEX 3.x NAV (IS-GPS-200, Galileo ICD (dokument kontroli interfejsu), BeiDou ICD, GLONASS (rosyjski Globalny System Nawigacji Satelitarnej) ICD) | Wczytywanie NAV wielu GNSS (GPS LNAV (dawny komunikat nawigacyjny), Galileo F/NAV, QZSS (japoński Quasi-Zenith Satellite System), BeiDou MEO/IGSO (MEO: średnia orbita okołoziemska; IGSO: nachylona orbita geosynchroniczna), wektor stanu GLONASS); użyteczne jako pełnoprawne źródło Propagator. |
| TLE / 3LE (elementy dwu-/trzywierszowe) | odczyt | src/tle.rs |
NORAD / Celestrak, AIAA (American Institute of Aeronautics and Astronautics) 2006-6753 | Propagowane przez sprawdzony względem niezależnego wzorca rdzeń SGP4/SDP4 (SDP4: Simplified Deep-space Perturbations 4) (4,12 mm wobec 666 oficjalnych wektorów AIAA). |
| RINEX 3.0x (obserwacje) | odczyt | src/rinex_obs.rs |
RINEX 3.0x OBS (oczekuje się, że 4,00 się odczyta, ale nigdy nie sprawdzono tego na pliku 4,00) | Druga połowa RINEX: własne rekordy kodu/nośnej/Dopplera/SNR (SNR: stosunek sygnału do szumu) odbiornika (parse_obs). To dane wejściowe, które solwer pvt pozycjonowania jednopunktowego zużywa razem z plikiem nawigacyjnym rozgłaszanym (tests/pvt_abmf.rs, rzeczywista stacja IGS ABMF). |
| IONEX (IONosphere map EXchange format; globalne mapy TEC (całkowitej zawartości elektronów)) | odczyt | src/ionex.rs |
IONEX 1.x (produkt jonosferyczny IGS) | parse_ionex odczytuje globalne siatki całkowitej zawartości elektronów IGS — zmierzoną alternatywę dla rozgłaszanej poprawki Klobuchara — z dwuliniową interpolacją przestrzenną i czasową oraz odwzorowaniem nachylenia na opóźnienie ukośne. |
IERS (Międzynarodowa Służba Ruchu Obrotowego Ziemi i Systemów Odniesienia) finals2000A / Bulletin B (orientacja Ziemi) |
odczyt | src/eop.rs, src/frame_eop.rs |
IERS Conventions; IERS EOP (parametry orientacji Ziemi) 14 C04 / finals2000A.all |
UT1 (Universal Time 1, czas obrotu Ziemi)−UTC (uniwersalny czas koordynowany) i ruch bieguna z oficjalnego produktu, łącznie z wierszami przewidywanymi, tak aby redukcję układów można było uruchamiać w czasie rzeczywistym, a wzrost błędu predykcji budżetować (tests/operational_eop_predictor_reference.rs). |
| KIF (Kshana Interchange Format) | odczyt i zapis | src/interchange.rs |
to repozytorium — zob. SCHEMA.md |
Neutralna, wersjonowana koperta, w którą można opakować każdy artefakt: format / schema_version / kind / engine_version / payload, z jawnym werdyktem zgodności głównej i pobocznej wersji dla konsumenta. To nie jest standard zewnętrzny; opisany tu, ponieważ obce narzędzie musi go rozpoznać. |
| LunaNet / IOAG (Interagency Operations Advisory Group) wymiana księżycowa | zapis (metadane czasu także odczyt) | src/lunar_interop.rs |
specyfikacja interoperacyjności LunaNet / architektura łączności księżycowej IOAG, ponad CCSDS 502,0 | Układ księżycowy, księżycowa skala czasu i księżycowe efemerydy emitowane w formach CCSDS zgodnych z LunaNet/IOAG (export_lunar_oem, export_kif_lunar, export_lunar_time_metadata), z kontrolą pól emitowanego OEM (tests/lunar_interoperability_export_reference.rs). |
| CZML (Cesium Language) | zapis | src/interop/czml.rs |
format pakietów CZML CesiumJS | Strumień JSON (JavaScript Object Notation) pakietów ze znacznikami czasu dla globusa CesiumJS; obiekty ruchome zapisane w GCRS (INERTIAL). --export czml dla każdego rodzaju, który umieszcza obiekty na Ziemi. |
| KML (Keyhole Markup Language) | zapis | src/interop/kml.rs |
OGC (Open Geospatial Consortium) KML 2,2 | Długość, szerokość i wysokość w układzie związanym z Ziemią dla Google Earth i narzędzi GIS (systemów informacji geograficznej). --export kml. |
| GeoJSON | zapis i odczyt (trasa) | src/interop/geojson.rs |
IETF (Internet Engineering Task Force) RFC 7946 | Geometria w układzie związanym z Ziemią dla map internetowych i narzędzi GIS (--export geojson); LineString jest odczytywany z powrotem jako wejście toru prostego dla rodzajów, które nim lecą (--import-route <route.geojson>). |
Efemerydy STK (.e, EphemerisTimePosVel) |
zapis | src/interop/stk.rs |
format pliku efemeryd Ansys STK | Położenie i prędkość inercjalne (ICRF) dla STK i narzędzi, które czytają jego format efemeryd. --export stk. |
| SigMF (Signal Metadata Format) | odczyt i zapis | src/sigmf.rs |
specyfikacja SigMF | Zespolone nagrania pasma podstawowego plus metadane JSON: rodzaj spectrum zapisuje swoje zsyntetyzowane próbki fazy i kwadratury (IQ) (--export sigmf) i odczytuje nagranie przez swój blok [recording]. |
| Tekst komunikatu nawigacyjnego LEO (w stylu RINEX-4 i CSV (wartości rozdzielone przecinkami)) | odczyt i zapis | src/leo_navmsg/text.rs |
układ nawigacyjny RINEX 4, zaadaptowany | Rozgłaszane efemerydy i zegar rodzaju leo-navmsg dla satelity niskiej orbity okołoziemskiej (LEO), eksportowane i ponownie importowane; udokumentowana adaptacja, a nie zarejestrowany typ komunikatu RINEX (MODELLED w macierzy weryfikacji). |
Układy odniesienia i czas#
Układ, który silnik emituje, jest jawny, a nie domyślny. Redukcja IAU (International Astronomical Union) 2006/2000A oparta na CIO (CIO: Celestial Intermediate Origin) (src/cio.rs) oraz redukcja równonocy/GMST (GMST: średni czas gwiazdowy Greenwich) TEME (prawdziwy równik, średnia równonoc) (src/frames.rs, src/nutation.rs) są sprawdzone bit po bicie względem niezależnych wektorów referencyjnych SOFA/ERFA (SOFA: Standards of Fundamental Astronomy; ERFA: Essential Routines for Fundamental Astronomy) (zob. VALIDATION.md).
| Ramka | Realizacja | Uwagi |
|---|---|---|
| TEME | natywny dla SGP4 | Prawdziwy równik, średnia równonoc — układ wyjściowy SGP4/SDP4. |
| GCRS (Geocentryczny Niebieski Układ Odniesienia) / J2000 | precesja IAU 2006 + nutacja IAU 2000A/2000B | teme_to_gcrs (łańcuch równonocy). |
| CIRS (Celestial Intermediate Reference System) | IAU 2006/2000A CIO (X, Y, s) | gcrs_to_cirs_matrix (eraC2ixys). |
| ITRS (Międzynarodowy Ziemski Układ Odniesienia) / ECEF | ERA (kąt obrotu Ziemi) + ruch bieguna IERS (CIO) lub GMST + ruch bieguna (równonoc) | gcrs_to_itrs_matrix (CIO, eraC2tcio) / teme_to_itrf (równonoc). |
| geodezyjny WGS-84 (WGS: World Geodetic System) | dokładny + iteracyjna odwrotność | ecef_to_geodetic / geodetic_to_ecef. |
| Skala czasu | Zastosowanie |
|---|---|
| TT (czas ziemski) | Obliczanie argumentów precesji/nutacji/CIO (jd_tt). |
| UT1 | Kąt obrotu Ziemi / GMST (jd_ut1). |
| Dwuczęściowa JD (data juliańska) | src/jd2.rs Jd2 dla rozdzielczości epoki poniżej µs. |
Odwzorowanie pól wyjściowych na standard (CCSDS 502,0)#
Co dwa programy zapisujące komunikaty orbitalne umieszczają w każdym polu CCSDS ODM (Orbit Data Messages, 502,0), odczytane z przebiegu scenarios/orbit-sgp4-gps.toml z --export-oem i --export-omm:
| Wynik Kshana | Pole CCSDS ODM | Wartość / jednostka |
|---|---|---|
| Metadane segmentu OEM | CENTER_NAME / REF_FRAME / TIME_SYSTEM |
EARTH / TEME / GPS — układ, w którym całkują propagatory, i skala czasu siatki epok, bez zmiany etykiet |
| Epoka stanu OEM | pierwsza kolumna każdego wiersza danych | czas kalendarzowy ISO-8601 (ISO: Międzynarodowa Organizacja Normalizacyjna), skala czasu GPS |
| Położenie i prędkość OEM | kolumny danych X Y Z X_DOT Y_DOT Z_DOT |
km, km/s |
| Metadane OMM | REF_FRAME / TIME_SYSTEM / MEAN_ELEMENT_THEORY |
TEME / UTC / SGP4 |
| Epoka OMM | EPOCH |
postać ISO-8601 z dniem roku (epoka TLE) |
| Elementy średnie OMM | MEAN_MOTION / ECCENTRICITY / INCLINATION / RA_OF_ASC_NODE / ARG_OF_PERICENTER / MEAN_ANOMALY / BSTAR |
obr./dobę, –, deg, 1/promienie Ziemi |
JSON (JavaScript Object Notation) wyniku rodzaju ephemeris niesie ten sam stan w jednostkach SI (Międzynarodowy Układ Jednostek) na próbkę: jd_utc, teme_r_m / teme_v_m_s, gcrs_r_m / gcrs_v_m_s, ecef_r_m (m, m/s), a także lat_deg, lon_deg, alt_km.
Uczciwy zakres#
- OEM, TDM, Space Packet, KIF, SigMF i tekst komunikatu nawigacyjnego LEO są w trybie odczytu i zapisu; OMM, CZML, KML i efemerydy STK to programy zapisujące (czytnik OMM i serializacja XML są kolejnymi krokami); GeoJSON jest zapisywany i odczytywany z powrotem jako trasa; RINEX NAV, RINEX OBS, IONEX, produkty IERS EOP i TLE są czytnikami; eksport księżycowy LunaNet/IOAG jest programem zapisującym, którego metadane czasu przechodzą w obie strony.
INTEROP.mdwymienia, który eksport dotyczy każdego dołączonego scenariusza. - Powyższe odwzorowanie pól CCSDS/IGS jest dokumentacją, a nie stwierdzeniem, że jakikolwiek standard jest spełniony; formalna ocena względem tych standardów (i rejestracja w otwartym katalogu ESA (European Space Agency) ESSR (European Space Software Repository) / NASA (National Aeronautics and Space Administration)) jest śledzona osobno i oczekuje na przegląd.
- Niezależna kontrola numeryczna redukcji układów przez SPICE/ANISE (SPICE: Spacecraft, Planet, Instrument, C-matrix, Events; ANISE: Attitude, Navigation, Instrument, Spacecraft, Ephemeris — czysto rustowy zestaw narzędzi geometrii planetarnej) jest dostarczona w samodzielnej skrzynce wyłączonej z przestrzeni roboczej
xval/anise-frames/:gcrs_to_itrs_matrixwzględem rotacji GCRF (Geocentric Celestial Reference Frame) → ITRF93 (International Terrestrial Reference Frame 1993) w ANISE w ośmiu epokach 2020–2023 zgadza się do ≤ 0,86 m na ziemi i ≤ 3,6 m na orbicie GNSS (zob.VALIDATION.md). Wymaga jąder SPICE, więc nie jest domyślną bramką ciągłej integracji (CI).