Місійний ланцюжок
Консультативне програмне забезпечення, не сертифіковане навігаційне обладнання. Лише відкриті джерела; не пов'язано з жодним агентством і не схвалено ним, і ніщо тут не заявляє про відповідність вимогам будь-якої програми.
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] в одиницях SI, годинник (зсув, дрейф і їхня коваріація, позначені шкалою часу), система відліку, час місії та позначка доказів. Передавання ніколи не скидає коваріацію.
| Правило | Що він робить |
|---|---|
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 та цисмісячний політ: пропагація Cowell, матриця переходу стану за скінченними різницями, оновлення 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#
Середній стан — це пропагатор Cowell рушія з гравітацією Землі та J2 і Сонцем та Місяцем як третіми тілами. Коваріація проходить через кожен сегмент step_s з матрицею переходу стану за прямими різницями (номінальний прогін і шість збурених прогонів) і білим шумом прискорення. Маневр спрямований уздовж вхідної швидкості із заданою часткою величини та похибкою напрямку. Названо обмеження: зафіксовані вирізки ядра Місяця містять Місяць, але не Сонце, тож пропагатор бере Місяць із ядра, а Сонце з аналітичного ряду (член третього тіла Сонця нечутливий до похибки того ряду); фаза у події каже, що саме використала, а там, де жодне ядро не охоплює сегмент, використовує аналітичний ряд для обох. Маневр не наведено на ціль: номінальний стан — там, куди веде заданий маневр, а місячні фази беруть лише коваріацію.
Оновлення, що використовуються лише коли документ перелічує джерело: gnss-ssv (позиційні визначення з доступністю та PDOP з обходу рушія за просторовою зоною обслуговування вздовж оскулюючої земної орбіти, що замінює дугу, один обхід на 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, доки реєстр не каже іншого.