Normas e interoperabilidad
Kshana habla los formatos de intercambio estándar de las comunidades de GNSS (sistema global de navegación por satélite), dinámica de vuelo y temporización, de modo que puede convivir con RTKLIB (una biblioteca de código abierto de posicionamiento cinemático en tiempo real), gLAB, Ginan, GMAT (General Mission Analysis Tool), Orekit y las herramientas de los centros de análisis del IGS (Servicio Internacional de GNSS) en lugar de en una isla privada. Esta página asocia los formatos de intercambio que el motor analiza o emite con el módulo que implementa cada uno y con la especificación de referencia.
Se limita a los formatos, es decir, a lo que tiene una dirección de lectura o escritura. Las normas de señal y de algoritmo que el motor implementa en lugar de analizar (IS-GPS-200 (IS: Interface Specification; GPS: Sistema de Posicionamiento Global), IEEE (Instituto de Ingenieros Eléctricos y Electrónicos) 1139, RTCA (antes Comisión Técnica Radioaeronáutica) DO-229E, IGRF-14 (IGRF: Campo Geomagnético Internacional de Referencia), la referencia WG-C (WG: Grupo de Trabajo) de ARAIM (monitorización autónoma avanzada de la integridad por el receptor), CCSDS (Comité Consultivo para Sistemas de Datos Espaciales) 401/DSN (DSN: Red de Espacio Profundo)) se evidencian fila a fila en VERIFICATION-MATRIX.md.
Formatos que habla el motor#
| Norma | Dirección | Módulo | Especificación / autoridad | Notas |
|---|---|---|---|---|
| CCSDS OEM (Mensaje de Efemérides Orbitales) | lectura y escritura | src/oem.rs |
CCSDS 502.0-B Mensajes de Datos Orbitales, forma KVN (notación clave-valor) | Efemérides tabuladas de vectores de estado que ingieren GMAT, Orekit y STK (Systems Tool Kit). parse_oem las lee de vuelta; validado recuperando el ejemplo literal de la Figura G-11 del Libro Azul CCSDS 502.0-B-3 (tests/ccsds_reference.rs). El bloque de covarianza opcional de posición/velocidad de 6×6 (COVARIANCE_START … COVARIANCE_STOP, la serialización KVN del triángulo inferior de 21 elementos con un COV_REF_FRAME opcional) se escribe (covariance_block_kvn) y se lee (parse_covariance_block), con simetría de ida y vuelta (pruebas de src/oem.rs). |
| CCSDS OMM (Mensaje de Elementos Medios Orbitales) | escritura | src/omm.rs |
CCSDS 502.0-B-2, forma KVN | Publicación en vía de normalización de los elementos medios de SGP4/TLE (SGP4: Perturbaciones Generales Simplificadas 4; TLE: conjunto de elementos de dos líneas) (movimiento medio, e, i, Ω, ω, M, BSTAR (el término de arrastre del propagador de órbitas)). Accesible desde la CLI (CLI: interfaz de línea de comandos) en un escenario orbit mediante --export-omm <out.omm> o export_omm = true (un OMM por satélite definido por TLE, con su identificador NORAD (Mando de Defensa Aeroespacial de Norteamérica) real, designador COSPAR (Comité de Investigación Espacial) y época; tests/sp3_export_roundtrip.rs). La forma XML (lenguaje de marcado extensible) y un lector son trabajos posteriores. |
| CCSDS TDM (Mensaje de Datos de Seguimiento) | lectura y escritura | src/ccsds_tdm.rs |
CCSDS 503.0-B Mensaje de Datos de Seguimiento, forma KVN | Registros de seguimiento de distancia / Doppler / ángulo que un paso de DSN/ESTRACK (ESTRACK: red europea de seguimiento espacial) entrega a un sistema de OD (determinación de órbita). Validado recuperando el ejemplo literal de la Figura E-9 del Libro Azul CCSDS 503.0-B-2 (tests/ccsds_reference.rs). |
| CCSDS Space Packet (133,0) | lectura y escritura | src/space_packet.rs |
CCSDS 133.0-B-2 Protocolo de Paquetes Espaciales | El encabezado primario TM/TC (TM: telemetría; TC: telecomando) de 6 octetos que intercambian los sistemas terrestres. El codificador reproduce los vectores de prueba publicados, a nivel de byte, de la biblioteca independiente spacepackets-py (pruebas de src/space_packet.rs). |
| SP3-c (SP3: Producto Estándar 3, el formato de órbitas precisas) / SP3-d (efemérides precisas) | lectura y escritura | src/sp3.rs |
Producto Estándar 3 del IGS (c/d) | Serie temporal de posición fija a la Tierra (ECEF) + tiempo de reloj. Ida y vuelta validada a < 0,5 m en una instantánea real de gps-ops (tests/sp3_export_roundtrip.rs). |
| RINEX (Formato de Intercambio Independiente del Receptor) 3 (navegación por difusión) | lectura | src/rinex.rs |
RINEX 3.x NAV (IS-GPS-200, ICD de Galileo (documento de control de interfaz), ICD de BeiDou, ICD de GLONASS (Sistema Mundial de Navegación por Satélite de Rusia)) | Ingesta NAV multi-GNSS (GPS LNAV (mensaje de navegación heredado), Galileo F/NAV, QZSS (Sistema de Satélites Cenitales Casi Zenitales de Japón), BeiDou MEO/IGSO (MEO: órbita terrestre media; IGSO: órbita geosíncrona inclinada), vector de estado de GLONASS); utilizable como fuente de Propagator de primera clase. |
| TLE / 3LE (elementos de dos / tres líneas) | lectura | src/tle.rs |
NORAD / Celestrak, AIAA (Instituto Americano de Aeronáutica y Astronáutica) 2006-6753 | Propagado por el núcleo SGP4/SDP4 validado (SDP4: Perturbaciones Simplificadas de Espacio Profundo 4) (4,12 mm frente a los 666 vectores oficiales de la AIAA). |
| RINEX 3.0x (observación) | lectura | src/rinex_obs.rs |
RINEX 3.0x OBS (se espera que 4,00 se analice, pero nunca se ha probado con un archivo 4,00) | La otra mitad de RINEX: los registros de código/portadora/Doppler/SNR (SNR: relación señal-ruido) del propio receptor (parse_obs). Es la entrada que consume, junto con el archivo de navegación por difusión, el resolvedor de posicionamiento de punto único de pvt (tests/pvt_abmf.rs, estación real ABMF del IGS). |
| IONEX (formato de intercambio de mapas de la IONosfera; mapas globales de TEC (contenido total de electrones)) | lectura | src/ionex.rs |
IONEX 1.x (producto de ionosfera del IGS) | parse_ionex lee las mallas globales de contenido total de electrones del IGS, la alternativa medida a la corrección de Klobuchar por difusión, con interpolación espacial y temporal bilineal y la función de oblicuidad para pasar a retardo oblicuo. |
finals2000A / Boletín B del IERS (Servicio Internacional de Rotación de la Tierra y Sistemas de Referencia) (orientación de la Tierra) |
lectura | src/eop.rs, src/frame_eop.rs |
Convenciones del IERS; IERS EOP (parámetros de orientación de la Tierra) 14 C04 / finals2000A.all |
UT1 (Tiempo Universal 1, tiempo de rotación terrestre)−UTC (Tiempo Universal Coordinado) y movimiento polar del producto oficial, incluidas las filas predichas, de modo que la reducción de marcos pueda ejecutarse en tiempo real y presupuestarse el crecimiento de su error de predicción (tests/operational_eop_predictor_reference.rs). |
| KIF (Formato de Intercambio de Kshana) | lectura y escritura | src/interchange.rs |
este repositorio; véase SCHEMA.md |
La envoltura neutra y versionada en la que puede envolverse cualquier artefacto: format / schema_version / kind / engine_version / payload, con un veredicto explícito de compatibilidad mayor-menor para el consumidor. No es una norma externa; se documenta aquí porque una herramienta ajena tiene que reconocerla. |
| Intercambio lunar de LunaNet / IOAG (Grupo Asesor de Operaciones Interagencias) | escritura (los metadatos de tiempo también se leen) | src/lunar_interop.rs |
Especificación de interoperabilidad de LunaNet / arquitectura de comunicaciones lunares del IOAG, sobre CCSDS 502,0 | El marco lunar, la escala de tiempo lunar y las efemérides lunares emitidos en formas CCSDS alineadas con LunaNet/IOAG (export_lunar_oem, export_kif_lunar, export_lunar_time_metadata), con una comprobación de campos del OEM emitido (tests/lunar_interoperability_export_reference.rs). |
| CZML (Cesium Language) | escritura | src/interop/czml.rs |
Formato de paquetes CZML de CesiumJS | Un flujo JSON (JavaScript Object Notation) de paquetes con marca de tiempo para el globo de CesiumJS; los objetos en movimiento se escriben en GCRS (INERTIAL). --export czml en cualquier tipo de escenario que sitúe objetos sobre la Tierra. |
| KML (Keyhole Markup Language) | escritura | src/interop/kml.rs |
OGC (Open Geospatial Consortium) KML 2,2 | Longitud, latitud y altura fijas a la Tierra para Google Earth y herramientas SIG (sistemas de información geográfica). --export kml. |
| GeoJSON | escritura y lectura (ruta) | src/interop/geojson.rs |
IETF (Grupo de Trabajo de Ingeniería de Internet) RFC 7946 | Geometría fija a la Tierra para mapas web y herramientas SIG (--export geojson); un LineString se lee de vuelta como la entrada de trayectoria recta de los tipos que vuelan una (--import-route <route.geojson>). |
Efemérides de STK (.e, EphemerisTimePosVel) |
escritura | src/interop/stk.rs |
Formato de archivo de efemérides de Ansys STK | Posición y velocidad inerciales (ICRF) para STK y herramientas que leen su formato de efemérides. --export stk. |
| SigMF (Formato de Metadatos de Señal) | lectura y escritura | src/sigmf.rs |
Especificación SigMF | Grabaciones complejas en banda base más metadatos JSON: el tipo spectrum escribe sus muestras sintetizadas en fase/cuadratura (IQ) (--export sigmf) y lee una grabación mediante su bloque [recording]. |
| Texto del mensaje de navegación LEO (de estilo RINEX 4 y CSV (valores separados por comas)) | lectura y escritura | src/leo_navmsg/text.rs |
Disposición de navegación RINEX 4, adaptada | Las efemérides y el reloj de difusión del tipo leo-navmsg para un satélite en órbita terrestre baja (LEO), exportados y reimportados; una adaptación documentada, no un tipo de mensaje RINEX registrado (MODELLED en la matriz de verificación). |
Marcos de referencia y tiempo#
El marco que emite el motor es explícito, no implícito. La reducción IAU (Unión Astronómica Internacional) 2006/2000A basada en el CIO (CIO: origen intermedio celeste) (src/cio.rs) y la reducción TEME (ecuador verdadero, equinoccio medio) de equinoccio/GMST (GMST: tiempo sidéreo medio de Greenwich) (src/frames.rs, src/nutation.rs) están validadas bit a bit frente a los vectores de referencia SOFA/ERFA (SOFA: Estándares de Astronomía Fundamental; ERFA: Rutinas Esenciales para Astronomía Fundamental) (véase VALIDATION.md).
| Trama | Realización | Notas |
|---|---|---|
| TEME | nativo de SGP4 | Ecuador verdadero, equinoccio medio: el marco de salida de SGP4/SDP4. |
| GCRS (Sistema Celeste de Referencia Geocéntrico) / J2000 | precesión IAU 2006 + nutación IAU 2000A/2000B | teme_to_gcrs (cadena de equinoccio). |
| CIRS (Sistema Celeste Intermedio de Referencia) | CIO IAU 2006/2000A (X, Y, s) | gcrs_to_cirs_matrix (eraC2ixys). |
| ITRS (Sistema Terrestre Internacional de Referencia) / ECEF | ERA (ángulo de rotación de la Tierra) + movimiento polar del IERS (CIO) o GMST + movimiento polar (equinoccio) | gcrs_to_itrs_matrix (CIO, eraC2tcio) / teme_to_itrf (equinoccio). |
| geodésico WGS-84 (WGS: Sistema Geodésico Mundial) | exacto + inverso iterativo | ecef_to_geodetic / geodetic_to_ecef. |
| Escala de tiempo | Uso |
|---|---|
| TT (Tiempo Terrestre) | Evaluación del argumento de precesión/nutación/CIO (jd_tt). |
| UT1 | Ángulo de rotación de la Tierra / GMST (jd_ut1). |
| JD en dos partes (fecha juliana) | src/jd2.rs Jd2 para una resolución de época inferior al µs. |
Correspondencia entre campos de salida y norma (CCSDS 502,0)#
Lo que los dos escritores de mensajes de órbita colocan en cada campo de los ODM de CCSDS (Mensajes de Datos Orbitales, 502,0), leído de una ejecución de scenarios/orbit-sgp4-gps.toml con --export-oem y --export-omm:
| Salida de Kshana | Campo ODM de CCSDS | Valor / unidad |
|---|---|---|
| Metadatos del segmento OEM | CENTER_NAME / REF_FRAME / TIME_SYSTEM |
EARTH / TEME / GPS: el marco en el que integran los propagadores y la escala de tiempo de la malla de épocas, sin cambiar de etiqueta |
| Época de estado OEM | primera columna de cada línea de datos | tiempo de calendario ISO-8601 (ISO: Organización Internacional de Normalización), escala de tiempo GPS |
| Posición y velocidad OEM | columnas de datos X Y Z X_DOT Y_DOT Z_DOT |
km, km/s |
| Metadatos OMM | REF_FRAME / TIME_SYSTEM / MEAN_ELEMENT_THEORY |
TEME / UTC / SGP4 |
| Época OMM | EPOCH |
forma ISO-8601 de día del año (la época del TLE) |
| Elementos medios OMM | MEAN_MOTION / ECCENTRICITY / INCLINATION / RA_OF_ASC_NODE / ARG_OF_PERICENTER / MEAN_ANOMALY / BSTAR |
rev/día, –, grados, 1/radios terrestres |
El JSON (JavaScript Object Notation) de resultados del tipo ephemeris lleva el mismo estado en unidades del SI (Sistema Internacional de Unidades) por muestra: jd_utc, teme_r_m / teme_v_m_s, gcrs_r_m / gcrs_v_m_s, ecef_r_m (m, m/s), además de lat_deg, lon_deg, alt_km.
Alcance real#
- OEM, TDM, Space Packet, KIF, SigMF y el texto del mensaje de navegación LEO son de lectura y escritura; OMM, CZML, KML y las efemérides de STK son escritores (un lector de OMM y la serialización XML son trabajos posteriores); GeoJSON se escribe y se lee de vuelta como una ruta; RINEX NAV, RINEX OBS, IONEX, los productos EOP del IERS y TLE son lectores; la exportación lunar LunaNet/IOAG es un escritor cuyos metadatos de tiempo hacen el viaje de ida y vuelta.
INTEROP.mdenumera qué exportación se aplica a cada escenario incluido. - La correspondencia de campos CCSDS/IGS anterior es documentación, no una afirmación de que se satisfaga ninguna norma; la evaluación formal frente a esas normas (y el registro en el catálogo abierto de la ESA (Agencia Espacial Europea) ESSR (Repositorio Europeo de Software Espacial) / NASA (Administración Nacional de Aeronáutica y del Espacio)) se sigue por separado y está pendiente de revisión.
- La comprobación numérica cruzada independiente de la reducción de marcos con SPICE/ANISE (SPICE: Spacecraft, Planet, Instrument, C-matrix, Events; ANISE: Attitude, Navigation, Instrument, Spacecraft, Ephemeris, un conjunto de herramientas de geometría planetaria en Rust puro) se entrega en el crate autónomo
xval/anise-frames/, excluido del espacio de trabajo:gcrs_to_itrs_matrixfrente a la rotación GCRF (Marco Celeste de Referencia Geocéntrico) → ITRF93 (Marco Terrestre Internacional de Referencia 1993) de ANISE en ocho épocas 2020–2023 concuerda a ≤ 0,86 m en el suelo y a ≤ 3,6 m en la órbita GNSS (véaseVALIDATION.md). Necesita núcleos SPICE, por lo que no es una puerta predeterminada de integración continua (CI).