Стандарты и совместимость
Kshana говорит на стандартных обменных форматах сообществ GNSS (глобальная навигационная спутниковая система), динамики полёта и синхронизации времени, чтобы работать рядом с RTKLIB (библиотекой кинематического позиционирования в реальном времени с открытым кодом), gLAB, Ginan, GMAT (General Mission Analysis Tool), Orekit и инструментарием аналитических центров IGS (Международной службы ГНСС), а не на частном острове. Эта страница сопоставляет обменные форматы, которые движок разбирает или выдаёт, с модулем, реализующим каждый из них, и с авторитетной спецификацией.
Она ограничена форматами — тем, у чего есть направление чтения и записи. Стандарты сигналов и алгоритмов, которые движок реализует, а не разбирает (IS-GPS-200 (IS: Interface Specification; GPS: глобальная система позиционирования), IEEE (Институт инженеров по электротехнике и электронике) 1139, RTCA (ранее Радиотехническая комиссия по аэронавтике) DO-229E, IGRF-14 (IGRF: Международное геомагнитное опорное поле), эталон ARAIM (усовершенствованный автономный контроль целостности приёмника) WG-C (WG: рабочая группа), CCSDS (Консультативный комитет по космическим системам передачи данных) 401/DSN (DSN: Сеть дальней космической связи)), подкрепляются доказательствами построчно в VERIFICATION-MATRIX.md.
Форматы, на которых говорит движок#
| Стандарт | Направление | Модуль | Спецификация / авторитетный источник | Примечания |
|---|---|---|---|---|
| CCSDS OEM (сообщение об эфемеридах орбиты) | чтение и запись | src/oem.rs |
Сообщения об орбитальных данных CCSDS 502.0-B, форма KVN (нотация «ключ–значение») | Табличные эфемериды вектора состояния, принимаемые GMAT, Orekit, STK (Systems Tool Kit). parse_oem читает их обратно; проверено восстановлением дословного примера из Blue Book CCSDS 502.0-B-3, рисунок G-11 (tests/ccsds_reference.rs). Необязательный ковариационный блок положения и скорости размером 6×6 (COVARIANCE_START … COVARIANCE_STOP, сериализация KVN из 21 элемента нижнего треугольника с необязательным COV_REF_FRAME) и записывается (covariance_block_kvn), и читается (parse_covariance_block), симметрично при круговом преобразовании (тесты src/oem.rs). |
| CCSDS OMM (сообщение о средних элементах орбиты) | запись | src/omm.rs |
CCSDS 502.0-B-2, форма KVN | Публикация SGP4/TLE (SGP4: Simplified General Perturbations 4; TLE: двухстрочный набор элементов) на стандартном пути для средних элементов (среднее движение, e, i, Ω, ω, M, BSTAR (член сопротивления орбитального пропагатора)). Доступна из CLI (CLI: интерфейс командной строки) для сценария orbit через --export-omm <out.omm> или export_omm = true (один OMM на каждый спутник, заданный TLE, с его реальным идентификатором NORAD (Северо-американское командование воздушно-космической обороны), обозначением COSPAR (Комитет по космическим исследованиям) и эпохой; tests/sp3_export_roundtrip.rs). Форма XML (расширяемый язык разметки) и чтение — дальнейшие работы. |
| CCSDS TDM (сообщение о траекторных данных) | чтение и запись | src/ccsds_tdm.rs |
Сообщение о траекторных данных CCSDS 503.0-B, форма KVN | Записи слежения по дальности / Доплеру / углам, которые сеанс DSN/ESTRACK (ESTRACK: Европейская сеть слежения за космическими аппаратами) передаёт системе OD (определение орбиты). Проверено восстановлением дословного примера из Blue Book CCSDS 503.0-B-2, рисунок E-9 (tests/ccsds_reference.rs). |
| Космический пакет CCSDS (133,0) | чтение и запись | src/space_packet.rs |
Протокол космических пакетов CCSDS 133.0-B-2 | Кадрирование первичного заголовка TM/TC (TM: телеметрия; TC: телекоманда) размером 6 октетов, которым обмениваются наземные системы. Кодировщик воспроизводит опубликованные побайтные тестовые векторы независимой библиотеки spacepackets-py (тесты src/space_packet.rs). |
| SP3-c (SP3: Standard Product 3, формат точных орбит) / SP3-d (точные эфемериды) | чтение и запись | src/sp3.rs |
IGS Standard Product 3 (c/d) | Временной ряд положения и часов в системе, связанной с Землёй (ECEF). Круговое преобразование проверено с точностью лучше 0,5 м на реальном снимке gps-ops (tests/sp3_export_roundtrip.rs). |
| RINEX (формат независимого от приёмника обмена) 3 (навигационные данные вещания) | чтение | src/rinex.rs |
RINEX 3.x NAV (IS-GPS-200, Galileo ICD (документ управления интерфейсом), BeiDou ICD, GLONASS (Глобальная навигационная спутниковая система России) ICD) | Приём навигационных файлов нескольких GNSS (GPS LNAV (устаревшее навигационное сообщение), Galileo F/NAV, QZSS (японская квазизенитная спутниковая система), BeiDou MEO/IGSO (MEO: средняя околоземная орбита; IGSO: наклонная геосинхронная орбита), вектор состояния GLONASS); можно использовать как полноправный источник Propagator. |
| TLE / 3LE (двухстрочные и трёхстрочные элементы) | чтение | src/tle.rs |
NORAD / Celestrak, AIAA (Американский институт аэронавтики и астронавтики) 2006-6753 | Распространяются проверенным ядром SGP4/SDP4 (SDP4: Simplified Deep-space Perturbations 4) (4,12 мм против 666 официальных векторов AIAA). |
| RINEX 3.0x (наблюдения) | чтение | src/rinex_obs.rs |
RINEX 3.0x OBS (4,00 ожидается к разбору, но ни разу не проверялся на файле 4,00) | Вторая половина RINEX: собственные записи кода/несущей/Доплера/SNR (SNR: отношение сигнал/шум) приёмника (parse_obs). Это входные данные, которые решатель одноточечного позиционирования pvt потребляет вместе с навигационным файлом вещания (tests/pvt_abmf.rs, реальная станция IGS ABMF). |
| IONEX (формат обмена картами ионосферы; глобальные карты TEC (полное электронное содержание)) | чтение | src/ionex.rs |
IONEX 1.x (продукт IGS по ионосфере) | parse_ionex читает глобальные сетки полного электронного содержания IGS — измеренную альтернативу широковещательной поправке Клобучара — с билинейной пространственной и временной интерполяцией и отображением наклона в наклонную задержку. |
IERS (Международная служба вращения Земли и систем отсчёта) finals2000A / Bulletin B (ориентация Земли) |
чтение | src/eop.rs, src/frame_eop.rs |
Конвенции IERS; IERS EOP (параметры ориентации Земли) 14 C04 / finals2000A.all |
UT1 (всемирное время 1, время вращения Земли)−UTC (координированное всемирное время) и движение полюса из официального продукта, включая прогнозные строки, так что приведение систем отсчёта можно выполнять в реальном времени, а рост ошибки прогноза закладывать в бюджет (tests/operational_eop_predictor_reference.rs). |
| KIF (формат обмена Kshana) | чтение и запись | src/interchange.rs |
этот репозиторий — см. SCHEMA.md |
Нейтральная версионированная оболочка, в которую можно обернуть любой артефакт: format / schema_version / kind / engine_version / payload, с явным вердиктом совместимости по основной и дополнительной версии для потребителя. Это не внешний стандарт; описан здесь, потому что сторонний инструмент должен его распознавать. |
| Лунный обмен LunaNet / IOAG (Межагентская консультативная группа по операциям) | запись (метаданные времени также читаются) | src/lunar_interop.rs |
Спецификация совместимости LunaNet / лунная коммуникационная архитектура IOAG поверх CCSDS 502,0 | Лунная система отсчёта, лунная шкала времени и лунные эфемериды в формах CCSDS, согласованных с LunaNet/IOAG (export_lunar_oem, export_kif_lunar, export_lunar_time_metadata), с проверкой полей выданного OEM (tests/lunar_interoperability_export_reference.rs). |
| CZML (Cesium Language) | запись | src/interop/czml.rs |
Формат пакетов CZML для CesiumJS | Поток JSON (JavaScript Object Notation) пакетов с метками времени для глобуса CesiumJS; движущиеся объекты записываются в GCRS (INERTIAL). --export czml для любого вида, который размещает объекты на Земле. |
| KML (Keyhole Markup Language) | запись | src/interop/kml.rs |
OGC (Open Geospatial Consortium) KML 2,2 | Долгота, широта и высота в системе, связанной с Землёй, для Google Earth и инструментов ГИС (географической информационной системы). --export kml. |
| GeoJSON | запись и чтение (маршрут) | src/interop/geojson.rs |
IETF (Инженерный совет Интернета) RFC 7946 | Геометрия в системе, связанной с Землёй, для веб-карт и инструментов ГИС (--export geojson); LineString читается обратно как прямолинейный трек для видов, которые летят по такому треку (--import-route <route.geojson>). |
Эфемериды STK (.e, EphemerisTimePosVel) |
запись | src/interop/stk.rs |
Формат файла эфемерид Ansys STK | Инерциальные (ICRF) положение и скорость для STK и инструментов, читающих его формат эфемерид. --export stk. |
| SigMF (Signal Metadata Format) | чтение и запись | src/sigmf.rs |
Спецификация SigMF | Комплексные записи в основной полосе плюс метаданные JSON: вид spectrum записывает свои синтезированные синфазные/квадратурные (IQ) отсчёты (--export sigmf) и читает запись через свой блок [recording]. |
| Текст навигационного сообщения LEO (в стиле RINEX-4 и CSV (значения, разделённые запятыми)) | чтение и запись | src/leo_navmsg/text.rs |
Структура навигационного файла RINEX 4, адаптированная | Широковещательные эфемериды и часы вида leo-navmsg для спутника низкой околоземной орбиты (LEO), экспортируемые и импортируемые обратно; задокументированная адаптация, а не зарегистрированный тип сообщения RINEX (MODELLED в матрице верификации). |
Системы отсчёта и время#
Система отсчёта, которую выдаёт движок, задана явно, а не неявно. Приведение IAU (Международный астрономический союз) 2006/2000A на основе CIO (CIO: небесный промежуточный полюс-начало) (src/cio.rs) и приведение TEME (истинный экватор, среднее равноденствие) по равноденствию/GMST (GMST: среднее гринвичское звёздное время) (src/frames.rs, src/nutation.rs) проверены побитово по эталонным векторам SOFA/ERFA (SOFA: Standards of Fundamental Astronomy; ERFA: Essential Routines for Fundamental Astronomy) (см. VALIDATION.md).
| Кадр | Реализация | Примечания |
|---|---|---|
| TEME | родная для SGP4 | Истинный экватор, среднее равноденствие — выходная система отсчёта SGP4/SDP4. |
| GCRS (Геоцентрическая небесная система отсчёта) / J2000 | прецессия IAU 2006 + нутация IAU 2000A/2000B | teme_to_gcrs (цепочка по равноденствию). |
| CIRS (небесная промежуточная система отсчёта) | IAU 2006/2000A CIO (X, Y, s) | gcrs_to_cirs_matrix (eraC2ixys). |
| ITRS (Международная земная система отсчёта) / ECEF | ERA (угол вращения Земли) + движение полюса IERS (CIO) либо GMST + движение полюса (равноденствие) | gcrs_to_itrs_matrix (CIO, eraC2tcio) / teme_to_itrf (равноденствие). |
| геодезическая WGS-84 (WGS: Всемирная геодезическая система) | точное прямое + итеративное обратное преобразование | ecef_to_geodetic / geodetic_to_ecef. |
| Шкала времени | Применение |
|---|---|
| TT (земное время) | Вычисление аргументов прецессии/нутации/CIO (jd_tt). |
| UT1 | Угол вращения Земли / GMST (jd_ut1). |
| Двухчастная JD (юлианская дата) | src/jd2.rs Jd2 для разрешения эпохи лучше микросекунды. |
Соответствие выходных полей стандарту (CCSDS 502,0)#
Что два писателя сообщений об орбите кладут в каждое поле CCSDS ODM (Orbit Data Messages, 502,0), по прогону scenarios/orbit-sgp4-gps.toml с --export-oem и --export-omm:
| Выход Kshana | Поле CCSDS ODM | Значение / единица |
|---|---|---|
| Метаданные сегмента OEM | CENTER_NAME / REF_FRAME / TIME_SYSTEM |
EARTH / TEME / GPS — система отсчёта, в которой интегрируют пропагаторы, и шкала времени сетки эпох, без переименования |
| Эпоха состояния OEM | первый столбец каждой строки данных | календарное время ISO-8601 (ISO: Международная организация по стандартизации), шкала времени GPS |
| Положение и скорость OEM | столбцы данных X Y Z X_DOT Y_DOT Z_DOT |
км, км/с |
| Метаданные OMM | REF_FRAME / TIME_SYSTEM / MEAN_ELEMENT_THEORY |
TEME / UTC / SGP4 |
| Эпоха OMM | EPOCH |
форма ISO-8601 с номером дня в году (эпоха TLE) |
| Средние элементы OMM | MEAN_MOTION / ECCENTRICITY / INCLINATION / RA_OF_ASC_NODE / ARG_OF_PERICENTER / MEAN_ANOMALY / BSTAR |
об/сут, –, град, 1/радиусов Земли |
JSON-результат (JavaScript Object Notation) вида ephemeris содержит то же состояние в единицах СИ (Международной системы единиц) на каждый отсчёт: jd_utc, teme_r_m / teme_v_m_s, gcrs_r_m / gcrs_v_m_s, ecef_r_m (м, м/с), а также lat_deg, lon_deg, alt_km.
Честная оговорка об объёме#
- OEM, TDM, Space Packet, KIF, SigMF и текст навигационного сообщения LEO — чтение и запись; OMM, CZML, KML и эфемериды STK — только запись (чтение OMM и сериализация XML — дальнейшие работы); GeoJSON записывается и читается обратно как маршрут; RINEX NAV, RINEX OBS, IONEX, продукты IERS EOP и TLE — только чтение; лунный экспорт LunaNet/IOAG — запись, метаданные времени которой проходят круговое преобразование.
INTEROP.mdперечисляет, какой экспорт применим к каждому встроенному сценарию. - Приведённое выше соответствие полей CCSDS/IGS является документацией, а не утверждением о том, что какой-либо стандарт выполнен; формальная оценка по этим стандартам (и регистрация в открытом каталоге ESA (Европейское космическое агентство) ESSR (Европейский репозиторий космического программного обеспечения) / NASA (Национальное управление по аэронавтике и исследованию космического пространства)) отслеживается отдельно и ожидает рассмотрения.
- Независимая численная перекрёстная проверка приведения систем отсчёта по SPICE/ANISE (SPICE: Spacecraft, Planet, Instrument, C-matrix, Events; ANISE: Attitude, Navigation, Instrument, Spacecraft, Ephemeris — набор инструментов планетной геометрии на чистом Rust) поставляется в автономном крейте
xval/anise-frames/, исключённом из рабочего пространства:gcrs_to_itrs_matrixотносительно поворота ANISE GCRF (Геоцентрическая небесная система отсчёта) → ITRF93 (Международная земная система отсчёта 1993) за восемь эпох 2020–2023 согласуется с точностью ≤ 0,86 м на поверхности и ≤ 3,6 м на орбите GNSS (см.VALIDATION.md). Ей нужны ядра SPICE, поэтому она не входит в обязательные проверки непрерывной интеграции (CI) по умолчанию.