Standaarden en interoperabiliteit
Kshana spreekt de standaard uitwisselingsformaten van de gemeenschappen van GNSS (global navigation satellite system), vluchtdynamica en tijdsynchronisatie, zodat het naast RTKLIB (een opensourcebibliotheek voor real-time kinematic positioning), gLAB, Ginan, GMAT (General Mission Analysis Tool), Orekit en de analysecentrumtools van de IGS (International GNSS Service) kan staan in plaats van op een eigen eiland. Deze pagina koppelt de uitwisselingsformaten die de engine inleest of uitvoert aan de module die elk ervan implementeert en aan de gezaghebbende specificatie.
Ze is beperkt tot formaten: dingen met een leesrichting en een schrijfrichting. De signaal- en algoritmestandaarden die de engine implementeert in plaats van inleest (IS-GPS-200 (IS: Interface Specification; GPS: Global Positioning System), IEEE (Institute of Electrical and Electronics Engineers) 1139, RTCA (voorheen Radio Technical Commission for Aeronautics) DO-229E, IGRF-14 (IGRF: International Geomagnetic Reference Field), de ARAIM-referentie (advanced receiver autonomous integrity monitoring) van WG-C (WG: Working Group), CCSDS (Consultative Committee for Space Data Systems) 401/DSN (DSN: Deep Space Network)) worden rij voor rij onderbouwd in VERIFICATION-MATRIX.md.
Formaten die de engine spreekt#
| Standaard | Richting | Module | Specificatie / instantie | Notities |
|---|---|---|---|---|
| CCSDS OEM (Orbit Ephemeris Message) | lezen en schrijven | src/oem.rs |
CCSDS 502.0-B Orbit Data Messages, KVN-vorm (keyword-value notation) | Getabelleerde toestandsvector-efemeride die GMAT, Orekit en STK (Systems Tool Kit) inlezen. parse_oem leest haar terug; getoetst door het letterlijke Blue Book-voorbeeld van CCSDS 502.0-B-3 Figure G-11 te reproduceren (tests/ccsds_reference.rs). Het optionele covariantieblok van 6×6 voor positie en snelheid (COVARIANCE_START … COVARIANCE_STOP, de KVN-serialisatie van de 21 elementen van de onderdriehoek met een optionele COV_REF_FRAME) wordt zowel geschreven (covariance_block_kvn) als gelezen (parse_covariance_block), en is rondreis-symmetrisch (tests van src/oem.rs). |
| CCSDS OMM (Orbit Mean-Elements Message) | schrijven | src/omm.rs |
CCSDS 502.0-B-2, KVN-vorm | Publicatie op de standaardisatieroute van gemiddelde elementen van SGP4/TLE (SGP4: Simplified General Perturbations 4; TLE: two-line element set) (gemiddelde beweging, e, i, Ω, ω, M, BSTAR (de weerstandsterm van de baanpropagator)). Bereikbaar via de CLI (CLI: command-line interface) bij een orbit-scenario met --export-omm <out.omm> of export_omm = true (één OMM per met een TLE gedefinieerde satelliet, met zijn echte NORAD-id (North American Aerospace Defense Command), COSPAR-aanduiding (Committee on Space Research) en epoche; tests/sp3_export_roundtrip.rs). Een XML-vorm (Extensible Markup Language) en een lezer volgen later. |
| CCSDS TDM (Tracking Data Message) | lezen en schrijven | src/ccsds_tdm.rs |
CCSDS 503.0-B Tracking Data Message, KVN-vorm | Volgrecords van afstand, Doppler en hoek die een pass van DSN/ESTRACK (ESTRACK: European Space Tracking network) aanlevert bij een OD-systeem (baanbepaling). Getoetst door het letterlijke Blue Book-voorbeeld van CCSDS 503.0-B-2 Figure E-9 te reproduceren (tests/ccsds_reference.rs). |
| CCSDS Space Packet (133,0) | lezen en schrijven | src/space_packet.rs |
CCSDS 133.0-B-2 Space Packet Protocol | De framing van de primaire header van 6 octetten voor TM/TC (TM: telemetrie; TC: telecommando) die grondsystemen uitwisselen. De encoder reproduceert de gepubliceerde testvectoren op byteniveau van de onafhankelijke bibliotheek spacepackets-py (tests van src/space_packet.rs). |
| SP3-c (SP3: Standard Product 3, het formaat voor precieze banen) / SP3-d (precieze efemeride) | lezen en schrijven | src/sp3.rs |
IGS Standard Product 3 (c/d) | Tijdreeks van positie en klokstand in het aardvaste stelsel (ECEF). Rondreis getoetst tot < 0,5 m op een echte momentopname van gps-ops (tests/sp3_export_roundtrip.rs). |
| RINEX (Receiver Independent Exchange Format) 3 (uitgezonden navigatie) | lezen | src/rinex.rs |
RINEX 3.x NAV (IS-GPS-200, Galileo ICD (interface control document), BeiDou ICD, GLONASS (het Russische Global Navigation Satellite System) ICD) | Inlezen van multi-GNSS-NAV (GPS LNAV (legacy navigation message), Galileo F/NAV, QZSS (het Japanse Quasi-Zenith Satellite System), BeiDou MEO/IGSO (MEO: medium Earth orbit; IGSO: inclined geosynchronous orbit), GLONASS-toestandsvector); bruikbaar als volwaardige Propagator-bron. |
| TLE / 3LE (twee-/drieregelige elementen) | lezen | src/tle.rs |
NORAD / Celestrak, AIAA (American Institute of Aeronautics and Astronautics) 2006-6753 | Gepropageerd door de getoetste SGP4/SDP4-kern (SDP4: Simplified Deep-space Perturbations 4) (4,12 mm ten opzichte van de 666 officiële AIAA-vectoren). |
| RINEX 3.0x (waarnemingen) | lezen | src/rinex_obs.rs |
RINEX 3.0x OBS (4,00 wordt naar verwachting ingelezen, maar is nooit uitgeprobeerd op een 4,00-bestand) | De andere helft van RINEX: de eigen code-, draaggolf-, Doppler- en SNR-records (SNR: signal-to-noise ratio) van de ontvanger (parse_obs). Dit is de invoer die de single-point-positioning-solver pvt samen met het uitgezonden navigatiebestand verwerkt (tests/pvt_abmf.rs, echt IGS-station ABMF). |
| IONEX (IONosphere map EXchange format; globale TEC-kaarten (total electron content)) | lezen | src/ionex.rs |
IONEX 1.x (IGS-ionosfeerproduct) | parse_ionex leest de globale rasters van de totale elektronendichtheid van de IGS, het gemeten alternatief voor de uitgezonden Klobuchar-correctie, met bilineaire ruimtelijke en temporele interpolatie en de schuinheidsafbeelding naar schuine vertraging. |
IERS (International Earth Rotation and Reference Systems Service) finals2000A / Bulletin B (aardoriëntatie) |
lezen | src/eop.rs, src/frame_eop.rs |
IERS Conventions; IERS EOP (Earth orientation parameters) 14 C04 / finals2000A.all |
UT1 (Universal Time 1, aardrotatietijd)−UTC (Coordinated Universal Time) en poolbeweging uit het officiële product, inclusief de voorspelde rijen, zodat de reductie van het referentiestelsel in real time kan draaien en de groei van haar voorspelfout kan worden begroot (tests/operational_eop_predictor_reference.rs). |
| KIF (Kshana Interchange Format) | lezen en schrijven | src/interchange.rs |
deze repository, zie SCHEMA.md |
De neutrale, geversioneerde envelop waarin elk artefact kan worden verpakt: format / schema_version / kind / engine_version / payload, met een expliciet major-minor-compatibiliteitsoordeel voor een afnemer. Geen externe standaard; hier gedocumenteerd omdat een vreemd hulpmiddel haar moet herkennen. |
| LunaNet / IOAG (Interagency Operations Advisory Group) uitwisseling voor de maan | schrijven (tijdmetadata ook lezen) | src/lunar_interop.rs |
LunaNet-interoperabiliteitsspecificatie / IOAG-architectuur voor maancommunicatie, bovenop CCSDS 502,0 | Het maanreferentiestelsel, de maantijdschaal en de maanefemeride, uitgegeven in CCSDS-vormen in lijn met LunaNet/IOAG (export_lunar_oem, export_kif_lunar, export_lunar_time_metadata), met een veldcontrole op de uitgegeven OEM (tests/lunar_interoperability_export_reference.rs). |
| CZML (Cesium Language) | schrijven | src/interop/czml.rs |
CZML-pakketformaat van CesiumJS | Een JSON-stroom (JavaScript Object Notation) van pakketten met tijdlabel voor de CesiumJS-globe; bewegende objecten geschreven in GCRS (INERTIAL). --export czml bij elk soort dat objecten op de aarde plaatst. |
| KML (Keyhole Markup Language) | schrijven | src/interop/kml.rs |
OGC (Open Geospatial Consortium) KML 2,2 | Aardvaste lengte, breedte en hoogte voor Google Earth en GIS-hulpmiddelen (geographic information system). --export kml. |
| GeoJSON | schrijven en lezen (route) | src/interop/geojson.rs |
IETF (Internet Engineering Task Force) RFC 7946 | Aardvaste geometrie voor webkaarten en GIS-hulpmiddelen (--export geojson); een LineString wordt teruggelezen als de rechte-spoorinvoer van de soorten die er een vliegen (--import-route <route.geojson>). |
STK-efemeride (.e, EphemerisTimePosVel) |
schrijven | src/interop/stk.rs |
Ansys STK-efemeridebestandsformaat | Inertiale (ICRF) positie en snelheid voor STK en hulpmiddelen die zijn efemerideformaat lezen. --export stk. |
| SigMF (Signal Metadata Format) | lezen en schrijven | src/sigmf.rs |
SigMF-specificatie | Complexe basisbandopnamen plus JSON-metadata: het soort spectrum schrijft zijn gesynthetiseerde in-phase/quadrature-samples (IQ) (--export sigmf) en leest een opname via zijn blok [recording]. |
| Tekst van het LEO-navigatiebericht (in RINEX-4-stijl en CSV (comma-separated values)) | lezen en schrijven | src/leo_navmsg/text.rs |
RINEX 4-navigatielay-out, aangepast | De uitgezonden efemeride en klok van het soort leo-navmsg voor een satelliet in een lage baan om de aarde (LEO), geëxporteerd en opnieuw ingelezen; een gedocumenteerde aanpassing, geen geregistreerd RINEX-berichttype (MODELLED in de verificatiematrix). |
Referentiestelsels en tijd#
Het stelsel dat de engine uitgeeft is expliciet, niet impliciet. De op CIO gebaseerde reductie (CIO: Celestial Intermediate Origin) volgens IAU (International Astronomical Union) 2006/2000A (src/cio.rs) en de equinox/GMST-reductie (GMST: Greenwich mean sidereal time) naar TEME (true equator, mean equinox) (src/frames.rs, src/nutation.rs) zijn bit voor bit getoetst aan de referentievectoren van SOFA/ERFA (SOFA: Standards of Fundamental Astronomy; ERFA: Essential Routines for Fundamental Astronomy) (zie VALIDATION.md).
| Frame | Realisatie | Notities |
|---|---|---|
| TEME | SGP4 native | Ware evenaar, gemiddelde equinox: het uitvoerstelsel van SGP4/SDP4. |
| GCRS (Geocentric Celestial Reference System) / J2000 | IAU 2006-precessie + IAU 2000A/2000B-nutatie | teme_to_gcrs (equinoxketen). |
| CIRS (Celestial Intermediate Reference System) | IAU 2006/2000A CIO (X, Y, s) | gcrs_to_cirs_matrix (eraC2ixys). |
| ITRS (International Terrestrial Reference System) / ECEF | ERA (Earth rotation angle) + IERS-poolbeweging (CIO) of GMST + poolbeweging (equinox) | gcrs_to_itrs_matrix (CIO, eraC2tcio) / teme_to_itrf (equinox). |
| WGS-84 (WGS: World Geodetic System) geodetisch | exact + iteratief invers | ecef_to_geodetic / geodetic_to_ecef. |
| Tijdschaal | Gebruik |
|---|---|
| TT (Terrestrial Time) | Evaluatie van het argument voor precessie, nutatie en CIO (jd_tt). |
| UT1 | Aardrotatiehoek / GMST (jd_ut1). |
| Tweedelige JD (Julian date) | src/jd2.rs Jd2 voor een epochenresolutie beneden de µs. |
Koppeling van uitvoervelden aan de standaard (CCSDS 502,0)#
Wat de twee schrijvers van baanberichten in elk veld van CCSDS ODM (Orbit Data Messages, 502,0) zetten, gelezen uit een run van scenarios/orbit-sgp4-gps.toml met --export-oem en --export-omm:
| Uitvoer van Kshana | CCSDS ODM-veld | Waarde / eenheid |
|---|---|---|
| Segmentmetadata van OEM | CENTER_NAME / REF_FRAME / TIME_SYSTEM |
EARTH / TEME / GPS: het stelsel waarin de propagators integreren en de tijdschaal van het epochenraster, niet herbenoemd |
| Toestandsepoche van OEM | eerste kolom van elke gegevensregel | kalendertijd volgens ISO-8601 (ISO: International Organization for Standardization), GPS-tijdschaal |
| Positie en snelheid van OEM | Gegevenskolommen X Y Z X_DOT Y_DOT Z_DOT |
km, km/s |
| Metadata van OMM | REF_FRAME / TIME_SYSTEM / MEAN_ELEMENT_THEORY |
TEME / UTC / SGP4 |
| Epoche van OMM | EPOCH |
ISO-8601-vorm met dag van het jaar (de TLE-epoche) |
| Gemiddelde elementen van OMM | MEAN_MOTION / ECCENTRICITY / INCLINATION / RA_OF_ASC_NODE / ARG_OF_PERICENTER / MEAN_ANOMALY / BSTAR |
omw/dag, –, deg, 1/aardstralen |
De resultaat-JSON (JavaScript Object Notation) van het soort ephemeris bevat dezelfde toestand in SI-eenheden (International System of Units) per sample: jd_utc, teme_r_m / teme_v_m_s, gcrs_r_m / gcrs_v_m_s, ecef_r_m (m, m/s), plus lat_deg, lon_deg, alt_km.
Eerlijke reikwijdte#
- OEM, TDM, Space Packet, KIF, SigMF en de tekst van het LEO-navigatiebericht kunnen worden gelezen en geschreven; OMM, CZML, KML en STK-efemeride zijn schrijvers (een OMM-lezer en de XML-serialisatie volgen later); GeoJSON wordt geschreven en als route teruggelezen; RINEX NAV, RINEX OBS, IONEX, de IERS EOP-producten en TLE zijn lezers; de maanexport van LunaNet/IOAG is een schrijver waarvan de tijdmetadata een rondreis maken.
INTEROP.mdvermeldt welke export voor elk meegeleverd scenario geldt. - De veldkoppeling van CCSDS/IGS hierboven is documentatie, geen verklaring dat aan enige standaard is voldaan; formele beoordeling aan die standaarden (en registratie in de open catalogus van ESA (European Space Agency) ESSR (European Space Software Repository) / NASA (National Aeronautics and Space Administration)) wordt apart bijgehouden en is in afwachting van beoordeling.
- De onafhankelijke numerieke kruiscontrole van SPICE/ANISE (SPICE: Spacecraft, Planet, Instrument, C-matrix, Events; ANISE: Attitude, Navigation, Instrument, Spacecraft, Ephemeris, een zuivere Rust-toolkit voor planetaire geometrie) op de reductie van het referentiestelsel wordt geleverd in de zelfstandige crate
xval/anise-frames/, die buiten de workspace valt:gcrs_to_itrs_matrixtegenover de rotatie van ANISE van GCRF (Geocentric Celestial Reference Frame) naar ITRF93 (International Terrestrial Reference Frame 1993) over acht epochen 2020–2023 komt overeen tot ≤ 0,86 m op de grond en ≤ 3,6 m op GNSS-baanhoogte (zieVALIDATION.md). Ze heeft SPICE-kernels nodig, dus is ze geen standaardpoort van continuous integration (CI).