Standards & Interoperabilität
Kshana spricht die standardisierten Austauschformate der Communities für GNSS (Globales Satellitennavigationssystem), Flugdynamik und Zeitgebung, damit es neben RTKLIB (eine quelloffene Bibliothek für kinematische Echtzeit-Positionierung), gLAB, Ginan, GMAT (General Mission Analysis Tool), Orekit und den Werkzeugen der Analysezentren des IGS (International GNSS Service) stehen kann statt auf einer privaten Insel. Diese Seite ordnet die Austauschformate, die die Engine liest oder ausgibt, dem Modul zu, das jedes davon implementiert, und der maßgeblichen Spezifikation.
Sie beschränkt sich auf Formate – Dinge mit einer Lese-/Schreibrichtung. Die Signal- und Algorithmusstandards, die die Engine implementiert statt liest (IS-GPS-200 (IS: Interface Specification; GPS: Global Positioning System), IEEE (Institute of Electrical and Electronics Engineers) 1139, RTCA (früher Radio Technical Commission for Aeronautics) DO-229E, IGRF-14 (IGRF: International Geomagnetic Reference Field), die ARAIM-Referenz (Advanced Receiver Autonomous Integrity Monitoring) WG-C (WG: Working Group), CCSDS (Consultative Committee for Space Data Systems) 401/DSN (DSN: Deep Space Network)) werden stattdessen Zeile für Zeile in VERIFICATION-MATRIX.md belegt.
Formate, die die Engine spricht#
| Standard | Richtung | Modul | Spezifikation / Autorität | Hinweise |
|---|---|---|---|---|
| CCSDS OEM (Orbit Ephemeris Message) | lesen und schreiben | src/oem.rs |
CCSDS 502.0-B Orbit Data Messages, KVN-Form (Schlüssel-Wert-Notation) | Tabellierte Zustandsvektor-Ephemeride, die von GMAT, Orekit und STK (Systems Tool Kit) eingelesen wird. parse_oem liest sie zurück; validiert durch die Rückgewinnung des wörtlichen Blue-Book-Beispiels Abbildung G-11 aus CCSDS 502.0-B-3 (tests/ccsds_reference.rs). Der optionale 6×6-Kovarianzblock für Position/Geschwindigkeit (COVARIANCE_START … COVARIANCE_STOP, die KVN-Serialisierung des unteren Dreiecks mit 21 Elementen mit einem optionalen COV_REF_FRAME) wird sowohl geschrieben (covariance_block_kvn) als auch gelesen (parse_covariance_block), im Rundlauf symmetrisch (Tests in src/oem.rs). |
| CCSDS OMM (Orbit Mean-Elements Message) | Schreiben | src/omm.rs |
CCSDS 502.0-B-2, KVN-Form | Veröffentlichung auf dem Standardisierungsweg der mittleren Elemente von SGP4/TLE (SGP4: Simplified General Perturbations 4; TLE: Two-Line-Element-Satz) (mittlere Bewegung, e, i, Ω, ω, M, BSTAR (der Widerstandsterm des Bahnpropagators)). Über die CLI (CLI: Kommandozeilenschnittstelle) erreichbar bei einem Szenario orbit über --export-omm <out.omm> oder export_omm = true (eine OMM je durch TLE definiertem Satelliten, mit seiner echten NORAD-Kennung (North American Aerospace Defense Command), COSPAR-Bezeichnung (Committee on Space Research) und Epoche; tests/sp3_export_roundtrip.rs). Eine XML-Form (Extensible Markup Language) und ein Leser sind Folgearbeiten. |
| CCSDS TDM (Tracking Data Message) | lesen und schreiben | src/ccsds_tdm.rs |
CCSDS 503.0-B Tracking Data Message, KVN-Form | Entfernungs-/Doppler-/Winkel-Verfolgungsdatensätze, die ein Überflug bei DSN/ESTRACK (ESTRACK: European Space Tracking network) an ein OD-System (Bahnbestimmung) liefert. Validiert durch die Rückgewinnung des wörtlichen Blue-Book-Beispiels Abbildung E-9 aus CCSDS 503.0-B-2 (tests/ccsds_reference.rs). |
| CCSDS Space Packet (133,0) | lesen und schreiben | src/space_packet.rs |
CCSDS 133.0-B-2 Space Packet Protocol | Die Rahmung des 6-Oktett-Primär-Headers für TM/TC (TM: Telemetrie; TC: Telekommando), die Bodensysteme austauschen. Der Encoder reproduziert die veröffentlichten Testvektoren auf Byte-Ebene der unabhängigen Bibliothek spacepackets-py (Tests in src/space_packet.rs). |
| SP3-c (SP3: Standard Product 3, das Format für präzise Bahnen) / SP3-d (präzise Ephemeride) | lesen und schreiben | src/sp3.rs |
IGS Standard Product 3 (c/d) | Zeitreihe aus erdfester (ECEF) Position und Uhrzeit. Im Rundlauf auf < 0,5 m an einem realen Snapshot von gps-ops validiert (tests/sp3_export_roundtrip.rs). |
| RINEX (Receiver Independent Exchange Format) 3 (Broadcast-Navigation) | Lesen | src/rinex.rs |
RINEX 3.x NAV (IS-GPS-200, Galileo ICD (Interface Control Document), BeiDou ICD, GLONASS ICD (Globales Satellitennavigationssystem Russlands)) | Multi-GNSS-NAV-Einlesung (GPS LNAV (Legacy-Navigationsnachricht), Galileo F/NAV, QZSS (Quasi-Zenith-Satellitensystem Japans), BeiDou MEO/IGSO (MEO: mittlere Erdumlaufbahn; IGSO: geneigte geosynchrone Bahn), GLONASS-Zustandsvektor); als vollwertige Quelle für Propagator verwendbar. |
| TLE / 3LE (Zwei-/Drei-Zeilen-Elemente) | Lesen | src/tle.rs |
NORAD / Celestrak, AIAA (American Institute of Aeronautics and Astronautics) 2006-6753 | Propagiert vom validierten SGP4/SDP4-Kern (SDP4: Simplified Deep-space Perturbations 4) (4,12 mm gegenüber den 666 offiziellen AIAA-Vektoren). |
| RINEX 3.0x (Beobachtung) | Lesen | src/rinex_obs.rs |
RINEX 3.0x OBS (4,00 wird voraussichtlich gelesen, nie an einer Datei 4,00 erprobt) | Die andere Hälfte von RINEX: die eigenen Code-/Träger-/Doppler-/SNR-Datensätze (SNR: Signal-Rausch-Verhältnis) des Empfängers (parse_obs). Das ist die Eingabe, die der Einzelpunktpositionierungs-Löser pvt neben der Broadcast-Navigationsdatei verarbeitet (tests/pvt_abmf.rs, reale IGS-Station ABMF). |
| IONEX (IONosphere map EXchange format; globale TEC-Karten (Gesamtelektronengehalt)) | Lesen | src/ionex.rs |
IONEX 1.x (IGS-Ionosphärenprodukt) | parse_ionex liest die globalen Gesamtelektronengehalt-Gitter des IGS – die gemessene Alternative zur Klobuchar-Korrektur aus dem Broadcast – mit bilinearer räumlicher und zeitlicher Interpolation und der Schrägheitsabbildung auf die Schrägverzögerung. |
IERS (International Earth Rotation and Reference Systems Service) finals2000A / Bulletin B (Erdorientierung) |
Lesen | src/eop.rs, src/frame_eop.rs |
IERS Conventions; IERS EOP (Erdorientierungsparameter) 14 C04 / finals2000A.all |
UT1 (Universal Time 1, Erdrotationszeit)−UTC (Koordinierte Weltzeit) und Polbewegung aus dem offiziellen Produkt, einschließlich der vorhergesagten Zeilen, sodass die Rahmenreduktion in Echtzeit laufen kann und das Wachstum ihres Vorhersagefehlers veranschlagt werden kann (tests/operational_eop_predictor_reference.rs). |
| KIF (Kshana Interchange Format) | lesen und schreiben | src/interchange.rs |
dieses Repository – siehe SCHEMA.md |
Die neutrale, versionierte Hülle, in die sich jedes Artefakt verpacken lässt: format / schema_version / kind / engine_version / payload, mit einem ausdrücklichen Urteil über die Major-Minor-Kompatibilität für einen Konsumenten. Kein externer Standard; hier dokumentiert, weil ein fremdes Werkzeug ihn erkennen muss. |
| LunaNet / IOAG (Interagency Operations Advisory Group) Austausch für den Mond | schreiben (Zeitmetadaten auch lesen) | src/lunar_interop.rs |
LunaNet-Interoperabilitätsspezifikation / IOAG-Architektur für Mondkommunikation, über CCSDS 502,0 | Das lunare Bezugssystem, die lunare Zeitskala und die lunare Ephemeride, ausgegeben in an LunaNet/IOAG angelehnten CCSDS-Formen (export_lunar_oem, export_kif_lunar, export_lunar_time_metadata), mit einer Feldprüfung der ausgegebenen OEM (tests/lunar_interoperability_export_reference.rs). |
| CZML (Cesium Language) | Schreiben | src/interop/czml.rs |
CZML-Paketformat von CesiumJS | Ein JSON-Strom (JavaScript Object Notation) zeitmarkierter Pakete für den CesiumJS-Globus; bewegte Objekte in GCRS geschrieben (INERTIAL). --export czml bei jeder Art, die Objekte auf der Erde platziert. |
| KML (Keyhole Markup Language) | Schreiben | src/interop/kml.rs |
OGC (Open Geospatial Consortium) KML 2,2 | Erdfeste Länge, Breite und Höhe für Google Earth und GIS-Werkzeuge (Geoinformationssystem). --export kml. |
| GeoJSON | schreiben und lesen (Route) | src/interop/geojson.rs |
IETF (Internet Engineering Task Force) RFC 7946 | Erdfeste Geometrie für Webkarten und GIS-Werkzeuge (--export geojson); ein LineString wird als geradlinige Spureingabe der Arten zurückgelesen, die eine solche fliegen (--import-route <route.geojson>). |
STK-Ephemeride (.e, EphemerisTimePosVel) |
Schreiben | src/interop/stk.rs |
Ephemeriden-Dateiformat von Ansys STK | Inertiale Position und Geschwindigkeit (ICRF) für STK und Werkzeuge, die dessen Ephemeridenformat lesen. --export stk. |
| SigMF (Signal Metadata Format) | lesen und schreiben | src/sigmf.rs |
SigMF-Spezifikation | Komplexe Basisbandaufzeichnungen plus JSON-Metadaten: Die Art spectrum schreibt ihre synthetisierten Gleichanteil-/Quadratur-Abtastwerte (IQ) (--export sigmf) und liest eine Aufzeichnung über ihren Block [recording]. |
| Text der LEO-Navigationsnachricht (im RINEX-4-Stil und CSV (kommagetrennte Werte)) | lesen und schreiben | src/leo_navmsg/text.rs |
RINEX-4-Navigationslayout, angepasst | Die Broadcast-Ephemeride und -Uhr der Art leo-navmsg für einen Satelliten in der niedrigen Erdumlaufbahn (LEO), exportiert und wieder importiert; eine dokumentierte Anpassung, kein registrierter RINEX-Nachrichtentyp (MODELLED in der Verifikationsmatrix). |
Bezugssysteme und Zeit#
Das Bezugssystem, das die Engine ausgibt, ist ausdrücklich festgelegt, nicht implizit. Die CIO-basierte (CIO: Celestial Intermediate Origin) Reduktion nach IAU (International Astronomical Union) 2006/2000A (src/cio.rs) und die TEME-Reduktion (True Equator, Mean Equinox) über Äquinoktium/GMST (GMST: mittlere Greenwich-Sternzeit) (src/frames.rs, src/nutation.rs) sind bitgenau gegen die Referenzvektoren von SOFA/ERFA (SOFA: Standards of Fundamental Astronomy; ERFA: Essential Routines for Fundamental Astronomy) validiert (siehe VALIDATION.md).
| Rahmen | Realisierung | Hinweise |
|---|---|---|
| TEME | SGP4 nativ | True Equator, Mean Equinox – das Ausgabesystem von SGP4/SDP4. |
| GCRS (Geocentric Celestial Reference System) / J2000 | IAU-2006-Präzession + IAU-2000A/2000B-Nutation | teme_to_gcrs (Äquinoktiumskette). |
| CIRS (Celestial Intermediate Reference System) | IAU 2006/2000A CIO (X, Y, s) | gcrs_to_cirs_matrix (eraC2ixys). |
| ITRS (International Terrestrial Reference System) / ECEF | ERA (Erdrotationswinkel) + IERS-Polbewegung (CIO) oder GMST + Polbewegung (Äquinoktium) | gcrs_to_itrs_matrix (CIO, eraC2tcio) / teme_to_itrf (Äquinoktium). |
| WGS-84 (WGS: World Geodetic System) geodätisch | exakte + iterative Inverse | ecef_to_geodetic / geodetic_to_ecef. |
| Zeitskala | Verwendung |
|---|---|
| TT (Terrestrische Zeit) | Auswertung der Argumente für Präzession/Nutation/CIO (jd_tt). |
| UT1 | Erdrotationswinkel / GMST (jd_ut1). |
| Zweiteiliges JD (Julianisches Datum) | src/jd2.rs Jd2 für eine Epochenauflösung unter einer µs. |
Zuordnung Ausgabefeld → Standard (CCSDS 502,0)#
Was die beiden Bahnnachrichten-Schreiber in jedes Feld einer CCSDS-ODM (Orbit Data Messages, 502,0) schreiben, gelesen aus einem Lauf von scenarios/orbit-sgp4-gps.toml mit --export-oem und --export-omm:
| Ausgabe von Kshana | CCSDS-ODM-Feld | Wert / Einheit |
|---|---|---|
| Metadaten des OEM-Segments | CENTER_NAME / REF_FRAME / TIME_SYSTEM |
EARTH / TEME / GPS – das System, in dem die Propagatoren integrieren, und die Zeitskala des Epochenrasters, nicht umbenannt |
| OEM-Zustandsepoche | erste Spalte jeder Datenzeile | Kalenderzeit nach ISO-8601 (ISO: International Organization for Standardization), GPS-Zeitskala |
| OEM-Position, -Geschwindigkeit | Datenspalten X Y Z X_DOT Y_DOT Z_DOT |
km, km/s |
| OMM-Metadaten | REF_FRAME / TIME_SYSTEM / MEAN_ELEMENT_THEORY |
TEME / UTC / SGP4 |
| OMM-Epoche | EPOCH |
ISO-8601-Form mit Tag des Jahres (die TLE-Epoche) |
| mittlere OMM-Elemente | MEAN_MOTION / ECCENTRICITY / INCLINATION / RA_OF_ASC_NODE / ARG_OF_PERICENTER / MEAN_ANOMALY / BSTAR |
Uml./Tag, –, Grad, 1/Erdradien |
Das Ergebnis-JSON (JavaScript Object Notation) der Art ephemeris enthält denselben Zustand je Stichprobe in SI-Einheiten (Internationales Einheitensystem): jd_utc, teme_r_m / teme_v_m_s, gcrs_r_m / gcrs_v_m_s, ecef_r_m (m, m/s), dazu lat_deg, lon_deg, alt_km.
Ehrlicher Umfang#
- OEM, TDM, Space Packet, KIF, SigMF und der Text der LEO-Navigationsnachricht werden gelesen und geschrieben; OMM, CZML, KML und die STK-Ephemeride werden nur geschrieben (ein OMM-Leser und die XML-Serialisierung sind Folgearbeiten); GeoJSON wird geschrieben und als Route zurückgelesen; RINEX NAV, RINEX OBS, IONEX, die IERS-EOP-Produkte und TLE werden nur gelesen; der lunare Export nach LunaNet/IOAG ist ein Schreiber, dessen Zeitmetadaten im Rundlauf erhalten bleiben.
INTEROP.mdlistet auf, welcher Export für jedes mitgelieferte Szenario gilt. - Die obige Feldzuordnung zu CCSDS/IGS ist Dokumentation, keine Aussage, dass irgendein Standard eingehalten ist; eine formale Bewertung gegen diese Standards (und die Eintragung in den offenen Katalog der ESA (European Space Agency) ESSR (European Space Software Repository) / NASA (National Aeronautics and Space Administration)) wird gesondert verfolgt und steht noch zur Prüfung aus.
- Die unabhängige numerische Gegenprüfung der Rahmenreduktion mit SPICE/ANISE (SPICE: Spacecraft, Planet, Instrument, C-matrix, Events; ANISE: Attitude, Navigation, Instrument, Spacecraft, Ephemeris – ein reines Rust-Toolkit für Planetengeometrie) wird im eigenständigen, vom Workspace ausgeschlossenen Crate
xval/anise-frames/geliefert:gcrs_to_itrs_matrixstimmt gegen die Rotation GCRF (Geocentric Celestial Reference Frame) → ITRF93 (International Terrestrial Reference Frame 1993) von ANISE über acht Epochen 2020–2023 auf ≤ 0,86 m am Boden und ≤ 3,6 m in der GNSS-Bahn überein (sieheVALIDATION.md). Sie braucht SPICE-Kernel und ist daher kein standardmäßiges Gate der kontinuierlichen Integration (CI).