Машинний переклад, не перевірений носієм мови. Еталоном є англійська версія.

ОрбітиНа 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] в одиницях 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, доки реєстр не каже іншого.