Normas e interoperabilidade
O Kshana fala os formatos de intercâmbio padrão das comunidades de GNSS (global navigation satellite system), de dinâmica de voo e de temporização, para poder conviver com o RTKLIB (uma biblioteca de código aberto de posicionamento cinemático em tempo real), o gLAB, o Ginan, o GMAT (General Mission Analysis Tool), o Orekit e as ferramentas dos centros de análise do IGS (International GNSS Service), em vez de ficar em uma ilha privada. Esta página relaciona os formatos de intercâmbio que o motor lê ou emite ao módulo que implementa cada um e à especificação de referência.
Ela se limita a formatos — coisas com uma direção de leitura/escrita. Os padrões de sinal e de algoritmo que o motor implementa em vez de ler (IS-GPS-200 (IS: Interface Specification; GPS: Global Positioning System), IEEE (Institute of Electrical and Electronics Engineers) 1139, RTCA (formerly the Radio Technical Commission for Aeronautics) DO-229E, IGRF-14 (IGRF: International Geomagnetic Reference Field), a referência WG-C (WG: Working Group) do ARAIM (advanced receiver autonomous integrity monitoring), CCSDS (Consultative Committee for Space Data Systems) 401/DSN (DSN: Deep Space Network)) são evidenciados linha a linha em VERIFICATION-MATRIX.md.
Formatos que o motor fala#
| Padrão | Direção | Módulo | Especificação / autoridade | Observações |
|---|---|---|---|---|
| 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 por GMAT, Orekit e STK (Systems Tool Kit). parse_oem a lê de volta; validado ao recuperar o exemplo literal da Figura G-11 do Blue Book CCSDS 502.0-B-3 (tests/ccsds_reference.rs). O bloco de covariância de posição/velocidade de 6×6 opcional (COVARIANCE_START … COVARIANCE_STOP, a serialização KVN de 21 elementos do triângulo inferior com um COV_REF_FRAME opcional) é tanto escrito (covariance_block_kvn) quanto lido (parse_covariance_block), simétrico na ida e volta (testes de src/oem.rs). |
| CCSDS OMM (Orbit Mean-Elements Message) | gravação | src/omm.rs |
CCSDS 502.0-B-2, forma KVN | Publicação na trilha de padronizaçã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)). Alcançável pela CLI (CLI: interface de linha de comando) em um cenário orbit por meio de --export-omm <out.omm> ou export_omm = true (um OMM por satélite definido por TLE, com seu id NORAD (North American Aerospace Defense Command) real, designador COSPAR (Committee on Space Research) e época; tests/sp3_export_roundtrip.rs). A forma XML (Extensible Markup Language) e um leitor são desdobramentos posteriores. |
| CCSDS TDM (Tracking Data Message) | leitura e escrita | src/ccsds_tdm.rs |
CCSDS 503.0-B Tracking Data Message, forma KVN | Registros de rastreamento de distância / Doppler / ângulo que uma passagem DSN/ESTRACK (ESTRACK: European Space Tracking network) entrega a um sistema de DO (determinação de órbita). Validado ao recuperar o exemplo literal da Figura E-9 do Blue Book 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 de cabeçalho primário TM/TC (TM: telemetria; TC: telecomando) de 6 octetos que os sistemas de solo trocam. O codificador reproduz os vetores de teste em nível de 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 de relógio. Ida e volta validada a < 0,5 m em um instantâneo real de gps-ops (tests/sp3_export_roundtrip.rs). |
| RINEX (Receiver Independent Exchange Format) 3 (navegação por transmissão) | leitura | src/rinex.rs |
RINEX 3.x NAV (IS-GPS-200, Galileo ICD (interface control document), BeiDou ICD, GLONASS (Global Navigation Satellite System da Rússia) ICD) | Ingestão de NAV multi-GNSS (GPS LNAV (legacy navigation message), Galileo F/NAV, QZSS (Quasi-Zenith Satellite System do Japão), BeiDou MEO/IGSO (MEO: órbita média da Terra; IGSO: órbita geossíncrona inclinada), vetor de estado do GLONASS); utilizável como uma fonte 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 | Propagados pelo núcleo SGP4/SDP4 validado (SDP4: Simplified Deep-space Perturbations 4) (4,12 mm contra os 666 vetores oficiais da AIAA). |
| RINEX 3.0x (observação) | leitura | src/rinex_obs.rs |
RINEX 3.0x OBS (4,00 esperado para ser lido, nunca exercitado com um arquivo 4,00) | A outra metade do RINEX: os registros de código/portadora/Doppler/SNR (SNR: relação sinal-ruído) do próprio receptor (parse_obs). É a entrada que o solucionador de posicionamento por ponto único pvt consome junto com o arquivo de navegação por transmissão (tests/pvt_abmf.rs, estação real do IGS ABMF). |
| IONEX (IONosphere map EXchange format; mapas globais de TEC (total electron content)) | leitura | src/ionex.rs |
IONEX 1.x (produto de ionosfera do IGS) | parse_ionex lê as grades globais de conteúdo total de elétrons do IGS — a alternativa medida à correção de Klobuchar transmitida — 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 do produto oficial, inclusive as linhas previstas, de modo que a redução de referencial possa ser executada em tempo real e o crescimento do seu erro de predição possa ser orçado (tests/operational_eop_predictor_reference.rs). |
| KIF (Kshana Interchange Format) | leitura e escrita | src/interchange.rs |
este repositório — veja SCHEMA.md |
O envelope neutro e versionado em que todo artefato pode ser embrulhado: format / schema_version / kind / engine_version / payload, com um veredito explícito de compatibilidade maior-menor para um consumidor. Não é um padrão externo; é documentado aqui porque uma ferramenta alheia precisa reconhecê-lo. |
| Intercâmbio lunar LunaNet / IOAG (Interagency Operations Advisory Group) | escrita (metadados de tempo também lidos) | src/lunar_interop.rs |
Especificação de interoperabilidade LunaNet / arquitetura de comunicações lunares do IOAG, sobre o CCSDS 502,0 | O referencial lunar, a escala de tempo lunar e a efeméride lunar emitidos em formas CCSDS alinhadas ao LunaNet/IOAG (export_lunar_oem, export_kif_lunar, export_lunar_time_metadata), com uma verificação de campos sobre o OEM emitido (tests/lunar_interoperability_export_reference.rs). |
| CZML (Cesium Language) | gravação | src/interop/czml.rs |
Formato de pacote CZML do CesiumJS | Um fluxo JSON (JavaScript Object Notation) de pacotes com marca de tempo para o globo do CesiumJS; objetos em movimento escritos em GCRS (INERTIAL). --export czml em qualquer tipo que coloque objetos sobre a Terra. |
| KML (Keyhole Markup Language) | gravação | src/interop/kml.rs |
OGC (Open Geospatial Consortium) KML 2,2 | Longitude, latitude e altura fixas à Terra para o Google Earth e ferramentas de SIG (sistema de informação geográfica). --export kml. |
| GeoJSON | escrita e leitura (rota) | src/interop/geojson.rs |
IETF (Internet Engineering Task Force) RFC 7946 | Geometria fixa à Terra para mapas web e ferramentas de SIG (--export geojson); um LineString é lido de volta como a entrada de trajetória reta dos tipos que a percorrem (--import-route <route.geojson>). |
Efeméride STK (.e, EphemerisTimePosVel) |
gravação | src/interop/stk.rs |
Formato de arquivo de efeméride do Ansys STK | Posição e velocidade inerciais (ICRF) para o STK e 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 base mais metadados JSON: o tipo spectrum grava suas amostras sintetizadas em fase/quadratura (IQ) (--export sigmf) e lê uma gravação por meio do seu bloco [recording]. |
| Texto de mensagem de navegação LEO (estilo RINEX-4 e CSV (valores separados por vírgula)) | leitura e escrita | src/leo_navmsg/text.rs |
Layout de navegação RINEX 4, adaptado | A efeméride e o relógio transmitidos pelo tipo leo-navmsg para um satélite de órbita baixa da Terra (LEO), exportados e reimportados; uma adaptação documentada, não um tipo de mensagem RINEX registrado (MODELLED na matriz de verificação). |
Referenciais e tempo#
O referencial que o motor emite é explícito, não implícito. A redução IAU (International Astronomical Union) 2006/2000A baseada em CIO (CIO: Celestial Intermediate Origin) (src/cio.rs) e a redução TEME (true equator, mean equinox) por equinócio/GMST (GMST: Greenwich mean sidereal time) (src/frames.rs, src/nutation.rs) são validadas bit a bit em relação aos vetores de referência SOFA/ERFA (SOFA: Standards of Fundamental Astronomy; ERFA: Essential Routines for Fundamental Astronomy) (veja VALIDATION.md).
| Quadro | Realização | Observações |
|---|---|---|
| TEME | nativo do SGP4 | 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 de 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). |
| geodésico WGS-84 (WGS: World Geodetic System) | exato + inverso iterativo | ecef_to_geodetic / geodetic_to_ecef. |
| Escala de tempo | Uso |
|---|---|
| TT (Tempo Terrestre) | Avaliação dos argumentos de precessão/nutação/CIO (jd_tt). |
| UT1 | Ângulo de rotação da Terra / GMST (jd_ut1). |
| JD de duas partes (data juliana) | src/jd2.rs Jd2 para resolução de época inferior a µs. |
Mapeamento campo de saída → padrão (CCSDS 502,0)#
O que os dois escritores de mensagens de órbita colocam em cada campo CCSDS ODM (Orbit Data Messages, 502,0), lido de uma execução de scenarios/orbit-sgp4-gps.toml com --export-oem e --export-omm:
| Saída do Kshana | Campo CCSDS ODM | 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 grade de épocas, sem renomeação |
| Época do estado 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 OEM | colunas de dados X Y Z X_DOT Y_DOT Z_DOT |
km, km/s |
| Metadados OMM | REF_FRAME / TIME_SYSTEM / MEAN_ELEMENT_THEORY |
TEME / UTC / SGP4 |
| Época OMM | EPOCH |
forma ISO-8601 de dia do ano (a época do TLE) |
| Elementos médios OMM | MEAN_MOTION / ECCENTRICITY / INCLINATION / RA_OF_ASC_NODE / ARG_OF_PERICENTER / MEAN_ANOMALY / BSTAR |
rev/dia, –, graus, 1/raios da Terra |
O JSON (JavaScript Object Notation) de resultado do tipo ephemeris traz o mesmo estado em unidades do 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.
Escopo 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 desdobramentos posteriores); o GeoJSON é escrito e lido de volta como uma rota; 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.mdlista qual exportação se aplica a cada cenário incluído. - O mapeamento de campos CCSDS/IGS acima é documentação, não uma declaração de que algum padrão é atendido; a avaliação formal em relação a esses padrões (e o registro no catálogo aberto 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 toolkit de geometria planetária em Rust puro) da redução de referencial é entregue no crate autônomo
xval/anise-frames/, excluído do workspace:gcrs_to_itrs_matrixcontra a rotação GCRF (Geocentric Celestial Reference Frame) → ITRF93 (International Terrestrial Reference Frame 1993) do ANISE, ao longo de oito épocas de 2020–2023, concorda a ≤ 0,86 m no solo e a ≤ 3,6 m em órbita GNSS (vejaVALIDATION.md). Ela precisa de kernels SPICE; por isso, não é um portão padrão de integração contínua (CI).