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

ОрбитыПока нет на GitHubИсточник: docs/MISSION-THREAD.md

Цепочка миссии

Программное обеспечение консультативного характера, не сертифицированное навигационное оборудование. Только открытые источники; не связано ни с каким агентством и не одобрено им, и ничто здесь не заявляет о соответствии требованиям какой-либо программы.

kind = "mission-thread" связывает в цепочку фазы миссии, каждая из которых — один из восьми зарегистрированных видов со своими датчиками и фильтром, и сообщает бюджет ошибок навигации и времени всей цепочки: для каждой фазы — 1-сигма положения, скорости и смещения часов на входе, в пике и на выходе; каждый вклад в него с единицей измерения; запас относительно заданного вами требования; самое слабое звено; датированные события и рисунок временной шкалы. Каждое число — MODELLED: заданный входной параметр или его модель. Единственные строки с внешним оракулом находятся в xval/mission-thread/ и сообщают, что именно они проверяют.

Запустите пример из рабочей копии репозитория (он читает зафиксированный фрагмент ядра Луны):

kshana scenarios/mission-thread-artemis-class.toml

Документ#

kind = "mission-thread"
title = "..."                       # optional
seed = 20261024                     # each phase's seed comes from it and the phase id
epoch_utc = "2028-01-01T00:00:00Z"  # mission elapsed time counts from here
moon_kernel_path = "..."            # optional JPL SPK cut with the Moon and the Earth (a file: refused by the MCP server)

[entry]                             # the first phase's entry state
frame = "gcrf"; x = [...]           # six numbers, metres and metres per second
sigma_pos_m = 10.0; sigma_vel_mps = 0.01
timescale = "utc"; sigma_time_s = 1e-7; sigma_drift_s_per_s = 1e-12

[[phase]]
id = "ascent"                       # unique; names the phase in the report and seeds its noise
kind = "launch-ascent"
duration_s = 540.0
nav = ["gnss", "inertial"]          # gnss | gnss-ssv | ground-tracking | lunanet | trn | inertial | relative-optical
time = "gnss"                       # gnss | ground-clock | lunar-time | onboard-holdover
frame = "mci"                       # optional: the frame this phase needs its entry in
timescale = "ltc"                   # optional: the clock timescale it needs
[phase.handover]                    # how this phase hands over to the next (default carry)
rule = "inflate"; q_acc = 1e-9; gap_s = 172800.0
[phase.requirement]                 # optional limits; the margin is the smallest limit over peak
max_pos_m = 50.0
[phase.model]                       # the kind's own parameters

Документ отклоняется, а не угадывается, когда идентификатор фазы повторяется, список nav пуст, имя неизвестно, ключ модели не известен виду, ключ длины расходится с duration_s или фаза перечисляет источник, для которого её модель не задаёт чисел.

Что делает передача#

Передаваемое состояние — это полная ковариация 6x6 для [x, y, z, vx, vy, vz] в единицах СИ, часы (смещение, дрейф и их ковариация с указанием шкалы времени), система отсчёта, время миссии и метка уровня доказательств. Передача никогда не сбрасывает ковариацию.

Правило Что делает
carry передаёт состояние без изменений
inflate белый шум ускорения со спектральной плотностью q_acc на интервале gap_s для модели прямолинейного движения; строка указывает оба
reacquire счисление пути в течение acquire_s, затем ось устанавливается на порог источника только там, где порог меньше; никогда не ниже порога и никогда не сброс

Системы отсчёта и шкалы времени#

Цепочка выполняет преобразования при передаче, а не внутри фазы, и каждое преобразование — отдельная строка бюджета. Системы отсчёта: GCRF, MCI, MCMF (ITRF и LVLH отклоняются с указанием причины). Gcrf <-> Mci сдвигает начало на геоцентрическое состояние Луны: состояние класса DE440 из ядра там, где оно покрывает эпоху (заменитель 5 m и 1 mm/s; измеренное наихудшее 2,6 m относительно закреплённых значений JPL Horizons), иначе — аналитический ряд с измеренной СКО 195,7 km, которую указывает строка; поэтому лунный пример должен нести ядро, покрывающее его эпоху. Mci <-> Mcmf — среднее звёздное вращение с осями, совмещёнными в эпоху, и без либрации. Шкалы времени проходят через TT: Utc <-> Tt точно, Tdb <-> Tt добавляет 14 us, Tt <-> Ltc использует вековой темп lunar_time с его диапазоном 56–59 us/day как неопределённостью темпа.

Восемь видов фаз#

Вид Сегмент Что делает Параметры
launch-ascent Земля управляемый взлёт на орбиту ожидания: ковариация при постоянной скорости с белым шумом ускорения, захват GNSS и замирание, holdover часов ключи [phase.model] в src/mission_thread/earth/launch.rs
leo-rendezvous Земля относительная навигация по участкам датчиков: переход Клохесси — Уилтшира в LVLH, ковариация Калмана 6x6, окно стыковки ниже
tli-and-cruise Земля импульс TLI и цислунный перелёт: распространение по Коуэллу, матрица перехода состояния по конечным разностям, обновления gnss-ssv и наземного слежения ниже
entry Земля возвратный участок до границы входа в атмосферу; сигма угла траектории, вероятность попадания в коридор, пиковое замедление, зона падения ниже
lunar-orbit-rendezvous лунный относительная навигация до стыковки на лунной орбите mission-thread/lunar-phases.md
lunar-descent лунный бюджет разброса посадки на полярной площадке то же
lunar-surface лунный PNT и доступность времени на поверхности по площадкам и сезонам то же
lunar-ascent лунный управляемый взлёт на орбиту выведения то же

Лунные виды являются также самостоятельными видами сценариев; проект и доказательства — в MISSION-THREAD-LUNAR.md.

leo-rendezvous#

Бюджет несёт относительные сигмы; абсолютная ковариация преследователя передаётся дальше без изменений, и строка об этом сообщает, потому что эта фаза измеряет аппараты друг относительно друга, а не относительно Земли. Начальная относительная ковариация — это абсолютная ковариация преследователя плюс заданные сигмы цели, складываемые как независимые (осторожно). Ключи: target_alt_m, target_abs_sigma_pos_m, target_abs_sigma_vel_mps, capture_pos_m, capture_vel_mps, необязательные process_q_acc и min_window_s, а также один или несколько [[phase.model.legs]] с range_m, end_range_m, duration_s, sensor (optical-camera, lidar или rf-ranging, ILLUSTRATIVE параметры в src/mission_thread/sensors.rs) и interval_s; длительности участков складываются в длительность фазы. Окно стыковки — это время от момента, когда относительная сигма остаётся внутри стыковочного коридора захвата, до конца фазы. Повторы — отдельные фазы со своими идентификаторами.

tli-and-cruise#

Среднее состояние — это пропагатор Коуэлла движка с гравитацией Земли и J2, а также Солнцем и Луной как третьими телами. Ковариация проходит через каждый сегмент step_s с матрицей перехода состояния по разностям вперёд (номинальный прогон и шесть возмущённых прогонов) и белым шумом ускорения. Импульс направлен вдоль входной скорости с заданными долей величины и ошибкой наведения. Названное ограничение: зафиксированные фрагменты ядра Луны содержат Луну, но не Солнце, поэтому пропагатор берёт Луну из ядра, а Солнце из аналитического ряда (член Солнца как третьего тела нечувствителен к ошибке этого ряда); фаза сообщает в событии, чем воспользовалась, а там, где ни одно ядро не покрывает сегмент, использует аналитический ряд для обоих. Импульс не нацелен: номинальное состояние — там, куда приводит заданный импульс, а лунные фазы берут только ковариацию.

Обновления, используемые только тогда, когда документ перечисляет источник: gnss-ssv (фиксации положения с доступностью и PDOP из развёртки space-service-volume движка вдоль оскулирующей околоземной орбиты, заменяющей дугу, одна развёртка на ssv_window_s; сигма фиксации = медианный PDOP, умноженный на ssv_uere_m; форма ожидаемой информации делает прогон детерминированным) и ground-tracking (дальность и скорость изменения дальности вдоль геоцентрического направления, поэтому картинная плоскость не наблюдается; дисперсия обновления делится на долю времени слежения). Ключи: tli_dv_mps, tli_dv_sigma_fraction, tli_pointing_sigma_rad, step_s, clock_q_f, clock_q_d, необязательные process_q_acc, ssv_uere_m, ssv_window_s, ssv_step_min, ssv_cn0_min_dbhz, ground_range_sigma_m, ground_range_rate_sigma_mps, ground_interval_s, ground_duty.

entry#

Возвратный участок — это участок tli-and-cruise без импульса, заканчивающийся на границе входа в атмосферу; его ключи — ключи участка выше. На границе фаза считывает угол траектории и его сигму по полной ковариации, вероятность того, что угол находится внутри заданного коридора, пиковое замедление при номинальном угле и на обеих границах коридора (плоский баллистический вход движка рядом с замкнутой формой Аллена — Эггерса) относительно необязательного предела и зону падения: по дальности — от заданной чувствительности, по боковому смещению — от ковариации на границе поперёк плоскости орбиты. Ключи: interface_alt_m, ballistic_coeff_kg_m2, corridor_min_deg, corridor_max_deg, downrange_sensitivity_km_per_deg, flight_time_s, необязательные max_decel_g, scale_height_m и start_state_gcrf (номинальное возвратное состояние, шесть чисел, когда в цепочке нет трансземного импульса, который его давал бы). Здесь не моделируются ни подъёмная сила, ни наведение, ни нагрев капсулы.

Наложение наземной сети#

Необязательная таблица [ground_network] задаёт станции и наименьший угол места слежения; для каждой названной фазы цепочка вычисляет долю фазы, в течение которой станция может вести слежение, и передаёт её фазе как долю времени, масштабирующую частоту обновлений наземного слежения. Геометрии: entry-orbit (входное состояние, пропагируемое как двухтельное с J2, для фаз на низкой орбите), moon-direction (аппарат в положении Луны, для цислунного перелёта) и stated (заданная вами доля). Смена станции теряет handover_gap_s; в бюджет фазы попадает самый длинный интервал без станции в зоне видимости, а событие указывает долю. Антенны и расписания сети не моделируются.

Отчёт#

kshana-mission-thread/1: phases[] (индекс, идентификатор, вид, времена, метка, источники навигации и времени, ограничивающий источник, сигмы на входе, в пике и на выходе, требование, запас, budget_rows[] с единицей измерения для каждой строки, events[]), weakest_link (наименьший запас относительно заданного требования, иначе наибольшее пиковое положение), timeline[], label цепочки (метка самой слабой фазы) и блок units. Рисунок — это 1-сигма положения и смещение часов в зависимости от времени миссии, по одной полосе на фазу.

Что составляет доказательства#

Метка цепочки — метка самой слабой фазы, и каждая фаза — MODELLED. Лунный пропагатор сравнивается с LRO и CAPSTONE (xval/mission-thread-lunar/); цислунная дуга сравнивается с общедоступной траекторией Horizons (xval/mission-thread/). Строка выполняет или не выполняет порог, зафиксированный в закоммиченном файле до прогона, а промах записывается как промах. Ничто не является VALIDATED, пока реестр не скажет иного.