Машинный перевод, не проверенный носителем языка. Эталоном служит английская версия.

Валидация и доказательстваПравить на GitHubИсточник: docs/STANDARDS.md

Стандарты и совместимость

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) по умолчанию.