Normas e interoperabilidade
O Kshana fala os formatos de intercâmbio normalizados das comunidades de GNSS (sistema global de navegação por satélite), de dinâmica de voo e de temporização, para poder estar ao lado do RTKLIB (uma biblioteca de código aberto de posicionamento cinemático em tempo real), do gLAB, do Ginan, do GMAT (General Mission Analysis Tool), do Orekit e das ferramentas dos centros de análise do IGS (International GNSS Service), em vez de numa ilha privada. Esta página associa os formatos de intercâmbio que o motor analisa ou emite ao módulo que implementa cada um e à especificação de referência.
Está limitada aos formatos — coisas com um sentido de leitura/escrita. As normas de sinal e de algoritmo que o motor implementa em vez de analisar (IS-GPS-200 (IS: Interface Specification; GPS: Global Positioning System), IEEE (Institute of Electrical and Electronics Engineers) 1139, RTCA (anteriormente Radio Technical Commission for Aeronautics) DO-229E, IGRF-14 (IGRF: International Geomagnetic Reference Field), a referência WG-C (WG: Working Group) do ARAIM (monitorização avançada da integridade autónoma do recetor), CCSDS (Consultative Committee for Space Data Systems) 401/DSN (DSN: Deep Space Network)) são evidenciadas linha a linha em VERIFICATION-MATRIX.md.
Formatos que o motor fala#
| Norma | Sentido | Módulo | Especificação / autoridade | Notas |
|---|---|---|---|---|
| CCSDS OEM (Orbit Ephemeris Message) | leitura e escrita | src/oem.rs |
CCSDS 502.0-B Orbit Data Messages, forma KVN (notação chave-valor) | Efeméride tabulada de vetores de estado ingerida pelo GMAT, pelo Orekit e pelo STK (Systems Tool Kit). parse_oem lê-a de volta; validada pela recuperação do exemplo literal da Figura G-11 do Livro Azul CCSDS 502.0-B-3 (tests/ccsds_reference.rs). O bloco de covariância opcional de posição/velocidade de 6×6 (COVARIANCE_START … COVARIANCE_STOP, a serialização KVN do triângulo inferior de 21 elementos com um COV_REF_FRAME opcional) é escrito (covariance_block_kvn) e lido (parse_covariance_block), com simetria de ida e volta (testes de src/oem.rs). |
| CCSDS OMM (Orbit Mean-Elements Message) | escrita | src/omm.rs |
CCSDS 502.0-B-2, forma KVN | Publicação em via de normalização dos elementos médios SGP4/TLE (SGP4: Simplified General Perturbations 4; TLE: conjunto de elementos de duas linhas) (movimento médio, e, i, Ω, ω, M, BSTAR (o termo de arrasto do propagador de órbita)). Acessível pela CLI (CLI: interface de linha de comandos) num cenário orbit através de --export-omm <out.omm> ou export_omm = true (um OMM por satélite definido por TLE, com o seu verdadeiro identificador NORAD (North American Aerospace Defense Command), designador COSPAR (Committee on Space Research) e época; tests/sp3_export_roundtrip.rs). A forma XML (Extensible Markup Language) e um leitor são desenvolvimentos futuros. |
| CCSDS TDM (Tracking Data Message) | leitura e escrita | src/ccsds_tdm.rs |
CCSDS 503.0-B Tracking Data Message, forma KVN | Registos de seguimento de distância / Doppler / ângulo que uma passagem DSN/ESTRACK (ESTRACK: European Space Tracking network) entrega a um sistema de OD (determinação de órbita). Validado pela recuperação do exemplo literal da Figura E-9 do Livro Azul CCSDS 503.0-B-2 (tests/ccsds_reference.rs). |
| CCSDS Space Packet (133,0) | leitura e escrita | src/space_packet.rs |
CCSDS 133.0-B-2 Space Packet Protocol | O enquadramento do cabeçalho primário TM/TC (TM: telemetria; TC: telecomando) de 6 octetos que os sistemas de terra trocam. O codificador reproduz os vetores de teste ao nível do byte publicados pela biblioteca independente spacepackets-py (testes de src/space_packet.rs). |
| SP3-c (SP3: Standard Product 3, o formato de órbita precisa) / SP3-d (efeméride precisa) | leitura e escrita | src/sp3.rs |
IGS Standard Product 3 (c/d) | Série temporal de posição fixa à Terra (ECEF) + tempo do relógio. Ida e volta validada a < 0,5 m num instantâneo real de gps-ops (tests/sp3_export_roundtrip.rs). |
| RINEX (Receiver Independent Exchange Format) 3 (navegação difundida) | leitura | src/rinex.rs |
RINEX 3.x NAV (IS-GPS-200, ICD do Galileo (documento de controlo de interface), ICD do BeiDou, ICD do GLONASS (sistema global de navegação por satélite da Rússia)) | Ingestão NAV multi-GNSS (GPS LNAV (mensagem de navegação legada), Galileo F/NAV, QZSS (sistema japonês Quasi-Zenith Satellite System), BeiDou MEO/IGSO (MEO: órbita terrestre média; IGSO: órbita geossíncrona inclinada), vetor de estado GLONASS); utilizável como fonte de Propagator de primeira classe. |
| TLE / 3LE (elementos de duas / três linhas) | leitura | src/tle.rs |
NORAD / Celestrak, AIAA (American Institute of Aeronautics and Astronautics) 2006-6753 | Propagado pelo núcleo SGP4/SDP4 validado (SDP4: Simplified Deep-space Perturbations 4) (4,12 mm face aos 666 vetores oficiais da AIAA). |
| RINEX 3.0x (observação) | leitura | src/rinex_obs.rs |
RINEX 3.0x OBS (prevê-se que o 4,00 seja analisado, mas nunca foi exercitado num ficheiro 4,00) | A outra metade do RINEX: os registos de código/portadora/Doppler/SNR (SNR: razão sinal-ruído) do próprio recetor (parse_obs). É a entrada que o solucionador de posicionamento de ponto único pvt consome junto com o ficheiro de navegação difundido (tests/pvt_abmf.rs, estação IGS real ABMF). |
| IONEX (IONosphere map EXchange format; mapas globais de TEC (conteúdo eletrónico total)) | leitura | src/ionex.rs |
IONEX 1.x (produto de ionosfera do IGS) | parse_ionex lê as grelhas globais de conteúdo eletrónico total do IGS — a alternativa medida à correção de Klobuchar difundida — com interpolação espacial e temporal bilinear e o mapeamento de obliquidade para o atraso oblíquo. |
IERS (International Earth Rotation and Reference Systems Service) finals2000A / Bulletin B (orientação da Terra) |
leitura | src/eop.rs, src/frame_eop.rs |
IERS Conventions; IERS EOP (parâmetros de orientação da Terra) 14 C04 / finals2000A.all |
UT1 (Universal Time 1, tempo de rotação da Terra)−UTC (Tempo Universal Coordenado) e movimento polar a partir do produto oficial, incluindo as linhas previstas, de modo que a redução de referencial possa ser executada em tempo real e o crescimento do seu erro de previsão orçamentado (tests/operational_eop_predictor_reference.rs). |
| KIF (Kshana Interchange Format) | leitura e escrita | src/interchange.rs |
este repositório — ver SCHEMA.md |
O envelope neutro e versionado em que qualquer artefacto pode ser embrulhado: format / schema_version / kind / engine_version / payload, com um veredicto explícito de compatibilidade maior-menor para um consumidor. Não é uma norma externa; está documentado aqui porque uma ferramenta alheia tem de o reconhecer. |
| Intercâmbio lunar LunaNet / IOAG (Interagency Operations Advisory Group) | escrita (os metadados de tempo também são lidos) | src/lunar_interop.rs |
Especificação de interoperabilidade LunaNet / arquitetura de comunicações lunares do IOAG, sobre CCSDS 502,0 | O referencial lunar, a escala de tempo lunar e a efeméride lunar emitidos em formas CCSDS alinhadas com o LunaNet/IOAG (export_lunar_oem, export_kif_lunar, export_lunar_time_metadata), com uma verificação de campos no OEM emitido (tests/lunar_interoperability_export_reference.rs). |
| CZML (Cesium Language) | escrita | src/interop/czml.rs |
Formato de pacotes CZML do CesiumJS | Um fluxo JSON (JavaScript Object Notation) de pacotes com marca temporal para o globo do CesiumJS; objetos em movimento escritos em GCRS (INERTIAL). --export czml em qualquer tipo de cenário que coloque objetos na Terra. |
| KML (Keyhole Markup Language) | escrita | src/interop/kml.rs |
OGC (Open Geospatial Consortium) KML 2,2 | Longitude, latitude e altura fixas à Terra para o Google Earth e para ferramentas SIG (sistemas de informação geográfica). --export kml. |
| GeoJSON | escrita e leitura (percurso) | src/interop/geojson.rs |
IETF (Internet Engineering Task Force) RFC 7946 | Geometria fixa à Terra para mapas web e ferramentas SIG (--export geojson); um LineString é lido de volta como a entrada de trajeto reto dos tipos de cenário que fazem voar um (--import-route <route.geojson>). |
Efeméride STK (.e, EphemerisTimePosVel) |
escrita | src/interop/stk.rs |
Formato de ficheiro de efeméride Ansys STK | Posição e velocidade inerciais (ICRF) para o STK e para ferramentas que leem o seu formato de efeméride. --export stk. |
| SigMF (Signal Metadata Format) | leitura e escrita | src/sigmf.rs |
Especificação SigMF | Gravações complexas em banda de base mais metadados JSON: o tipo de cenário spectrum escreve as suas amostras sintetizadas em fase/quadratura (IQ) (--export sigmf) e lê uma gravação através do seu bloco [recording]. |
| Texto de mensagem de navegação LEO (estilo RINEX-4 e CSV (valores separados por vírgulas)) | leitura e escrita | src/leo_navmsg/text.rs |
Estrutura de navegação RINEX 4, adaptada | A efeméride difundida e o relógio do tipo de cenário leo-navmsg para um satélite de órbita terrestre baixa (LEO), exportados e reimportados; uma adaptação documentada, e não um tipo de mensagem RINEX registado (MODELLED na matriz de verificação). |
Referenciais e tempo#
O referencial que o motor emite é explícito, e não implícito. A redução IAU (International Astronomical Union) 2006/2000A baseada no CIO (CIO: Celestial Intermediate Origin) (src/cio.rs) e a redução TEME (equador verdadeiro, equinócio médio) por equinócio/GMST (GMST: tempo sideral médio de Greenwich) (src/frames.rs, src/nutation.rs) são validadas bit a bit face aos vetores de referência SOFA/ERFA (SOFA: Standards of Fundamental Astronomy; ERFA: Essential Routines for Fundamental Astronomy) (ver VALIDATION.md).
| Trama | Realização | Notas |
|---|---|---|
| TEME | SGP4 nativo | Equador verdadeiro, equinócio médio — o referencial de saída do SGP4/SDP4. |
| GCRS (Geocentric Celestial Reference System) / J2000 | Precessão IAU 2006 + nutação IAU 2000A/2000B | teme_to_gcrs (cadeia do equinócio). |
| CIRS (Celestial Intermediate Reference System) | IAU 2006/2000A CIO (X, Y, s) | gcrs_to_cirs_matrix (eraC2ixys). |
| ITRS (International Terrestrial Reference System) / ECEF | ERA (ângulo de rotação da Terra) + movimento polar do IERS (CIO) ou GMST + movimento polar (equinócio) | gcrs_to_itrs_matrix (CIO, eraC2tcio) / teme_to_itrf (equinócio). |
| WGS-84 (WGS: World Geodetic System) geodésico | exato + inverso iterativo | ecef_to_geodetic / geodetic_to_ecef. |
| Escala de tempo | Utilização |
|---|---|
| TT (Tempo Terrestre) | Avaliação do argumento de precessão/nutação/CIO (jd_tt). |
| UT1 | Ângulo de rotação da Terra / GMST (jd_ut1). |
| JD em duas partes (data juliana) | src/jd2.rs Jd2 para resolução de época inferior a µs. |
Campo de saída → mapeamento para a norma (CCSDS 502,0)#
O que os dois escritores de mensagens de órbita colocam em cada campo ODM (Orbit Data Messages, 502,0) do CCSDS, lido a partir de uma execução de scenarios/orbit-sgp4-gps.toml com --export-oem e --export-omm:
| Saída do Kshana | Campo ODM do CCSDS | Valor / unidade |
|---|---|---|
| Metadados do segmento OEM | CENTER_NAME / REF_FRAME / TIME_SYSTEM |
EARTH / TEME / GPS — o referencial em que os propagadores integram e a escala de tempo da grelha de épocas, sem nova etiquetagem |
| Época de estado do OEM | primeira coluna de cada linha de dados | tempo de calendário ISO-8601 (ISO: International Organization for Standardization), escala de tempo GPS |
| Posição e velocidade do OEM | colunas de dados X Y Z X_DOT Y_DOT Z_DOT |
km, km/s |
| Metadados do OMM | REF_FRAME / TIME_SYSTEM / MEAN_ELEMENT_THEORY |
TEME / UTC / SGP4 |
| Época do OMM | EPOCH |
forma ISO-8601 de dia do ano (a época do TLE) |
| Elementos médios do OMM | MEAN_MOTION / ECCENTRICITY / INCLINATION / RA_OF_ASC_NODE / ARG_OF_PERICENTER / MEAN_ANOMALY / BSTAR |
rev/dia, –, graus, 1/raios terrestres |
O JSON (JavaScript Object Notation) de resultado do tipo de cenário ephemeris transporta o mesmo estado em unidades SI (Sistema Internacional de Unidades) por amostra: jd_utc, teme_r_m / teme_v_m_s, gcrs_r_m / gcrs_v_m_s, ecef_r_m (m, m/s), mais lat_deg, lon_deg, alt_km.
Âmbito honesto#
- OEM, TDM, Space Packet, KIF, SigMF e o texto de mensagem de navegação LEO são de leitura e escrita; OMM, CZML, KML e a efeméride STK são escritores (um leitor de OMM e a serialização XML são desenvolvimentos futuros); o GeoJSON é escrito e lido de volta como um percurso; RINEX NAV, RINEX OBS, IONEX, os produtos EOP do IERS e o TLE são leitores; a exportação lunar LunaNet/IOAG é um escritor cujos metadados de tempo fazem ida e volta.
INTEROP.mdindica que exportação se aplica a cada cenário incluído. - O mapeamento de campos CCSDS/IGS acima é documentação, e não uma declaração de que qualquer norma seja satisfeita; a avaliação formal face a essas normas (e o registo no catálogo aberto da ESA (European Space Agency) ESSR (European Space Software Repository) / NASA (National Aeronautics and Space Administration)) é acompanhada separadamente e está pendente de revisão.
- A verificação cruzada numérica independente SPICE/ANISE (SPICE: Spacecraft, Planet, Instrument, C-matrix, Events; ANISE: Attitude, Navigation, Instrument, Spacecraft, Ephemeris — um conjunto de ferramentas de geometria planetária em Rust puro) da redução de referencial é entregue no crate autónomo, excluído do workspace,
xval/anise-frames/:gcrs_to_itrs_matrixface à rotação GCRF (Geocentric Celestial Reference Frame) → ITRF93 (International Terrestrial Reference Frame 1993) do ANISE, ao longo de oito épocas 2020–2023, concorda a ≤ 0,86 m à superfície e a ≤ 3,6 m na órbita GNSS (verVALIDATION.md). Precisa de kernels SPICE, pelo que não é uma barreira predefinida da integração contínua (CI).