Tradução automática, não revista por um falante nativo. O inglês é a referência.

ÓrbitasAinda não está no GitHubFonte: docs/MISSION-THREAD.md

A sequência de missão

Software de caráter consultivo, não um equipamento de navegação certificado. Apenas fontes públicas; sem afiliação nem aval de qualquer agência, e nada aqui afirma conformidade com os requisitos de qualquer programa.

kind = "mission-thread" encadeia fases de uma missão, cada uma de um de oito tipos registrados com seus próprios sensores e filtro, e informa o orçamento de erro de navegação e temporização da cadeia inteira: para cada fase, o 1-sigma de posição, velocidade e viés de relógio na entrada, no pico e na saída; cada contribuição a ele, com sua unidade; a margem em relação a um requisito que você declara; o elo mais fraco; os eventos datados; e uma figura de linha do tempo. Todo número é MODELLED: uma entrada declarada ou um modelo dela. As únicas linhas de referência independente externa estão em xval/mission-thread/ e dizem o que testam.

Execute o exemplo a partir de um checkout (ele lê um recorte versionado de kernel da Lua):

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

O documento#

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

Um documento é recusado, e não adivinhado, quando um id de fase se repete, uma lista nav está vazia, um nome é desconhecido, uma chave de modelo não é uma que o tipo conhece, uma chave de duração discorda de duration_s, ou uma fase lista uma fonte para a qual seu modelo não fornece números.

O que uma transferência faz#

O estado transferido é a covariância completa 6x6 de [x, y, z, vx, vy, vz] em unidades do SI, o relógio (viés, deriva e sua covariância, marcados com uma escala de tempo), o referencial, o tempo de missão e um rótulo de evidência. Uma transferência nunca reinicia uma covariância.

Regra O que faz
carry transfere o estado sem alteração
inflate ruído de aceleração branco de PSD q_acc ao longo de gap_s em um modelo de linha reta; a linha declara ambos
reacquire navegação por estima durante acquire_s, depois um eixo é fixado no piso da fonte apenas onde o piso é menor; nunca abaixo do piso, nunca uma reinicialização

Referenciais e escalas de tempo#

A sequência converte na transferência, nunca dentro de uma fase, e cada conversão é uma linha própria do orçamento. Referenciais: GCRF, MCI, MCMF (ITRF e LVLH são recusados com o motivo). Gcrf <-> Mci desloca a origem pelo estado geocêntrico da Lua: o estado de grau DE440 a partir do kernel onde ele cobre a época (valor substituto de 5 m e 1 mm/s; pior caso medido de 2,6 m contra valores fixados do JPL Horizons), caso contrário a série analítica com seus 195,7 km RMS medidos, o que a linha declara; um exemplo lunar deve portanto trazer um kernel que cubra sua época. Mci <-> Mcmf é a rotação sideral média com os eixos alinhados na época e sem libração. As escalas de tempo passam por TT: Utc <-> Tt exata, Tdb <-> Tt acrescenta 14 us, Tt <-> Ltc usa a taxa secular de lunar_time com sua faixa de 56 a 59 us/dia como incerteza da taxa.

Os oito tipos de fase#

Tipo Segmento O que faz Parâmetros
launch-ascent Terra ascensão propulsada a uma órbita de estacionamento: covariância de velocidade constante com ruído de aceleração branco, aquisição e desvanecimento de GNSS, holdover do relógio chaves [phase.model] em src/mission_thread/earth/launch.rs
leo-rendezvous Terra navegação relativa ao longo de trechos de sensor: transição de Clohessy-Wiltshire em LVLH, covariância de Kalman 6x6, janela de acoplagem abaixo
tli-and-cruise Terra queima TLI e cruzeiro cislunar: propagação de Cowell, matriz de transição de estado por diferenças finitas, atualizações de gnss-ssv e de rastreamento em solo abaixo
entry Terra trecho inercial de retorno até a interface de reentrada; sigma do ângulo de trajetória, probabilidade do corredor, desaceleração máxima, área de pouso abaixo
lunar-orbit-rendezvous lunar navegação relativa até a acoplagem em uma órbita lunar mission-thread/lunar-phases.md
lunar-descent lunar orçamento de dispersão de pouso em um local polar igual
lunar-surface lunar disponibilidade de PNT e temporização na superfície por local e estação igual
lunar-ascent lunar ascensão propulsada a uma órbita de inserção igual

Os tipos de cenário lunares também são tipos de cenário isolados; o projeto e as evidências estão em MISSION-THREAD-LUNAR.md.

leo-rendezvous#

O orçamento leva os sigmas relativos; a covariância absoluta do veículo perseguidor é transferida sem alteração e uma linha o declara, porque esta fase mede os veículos um em relação ao outro, e não em relação à Terra. A covariância relativa inicial é a absoluta do perseguidor mais os sigmas declarados do alvo, somados como se fossem independentes (conservador). Chaves: target_alt_m, target_abs_sigma_pos_m, target_abs_sigma_vel_mps, capture_pos_m, capture_vel_mps, opcionais process_q_acc e min_window_s, e um ou mais [[phase.model.legs]] com range_m, end_range_m, duration_s, sensor (optical-camera, lidar ou rf-ranging, parâmetros ILLUSTRATIVE em src/mission_thread/sensors.rs) e interval_s; as durações dos trechos somam a da fase. A janela de acoplagem é o tempo a partir do qual o sigma relativo permanece dentro do envelope de captura até o fim da fase. As repetições são fases separadas com seus próprios ids.

tli-and-cruise#

O estado médio é o propagador de Cowell do motor, com a gravidade da Terra e J2 e o Sol e a Lua como terceiros corpos. A covariância passa por cada segmento step_s com uma matriz de transição de estado por diferenças progressivas (a execução nominal e seis execuções perturbadas) e um ruído de aceleração branco. A queima é ao longo da velocidade de entrada com uma fração de tamanho e um erro de apontamento declarados. Limite declarado: os recortes de kernel da Lua versionados contêm a Lua mas não o Sol, de modo que o propagador toma a Lua do kernel e o Sol da série analítica (o termo de terceiro corpo do Sol é insensível ao erro dessa série); a fase diz em um evento qual usou, e onde nenhum kernel cobre um segmento ela usa a série analítica para ambos. A queima não é direcionada: o estado nominal é onde a queima declarada o levar, e as fases lunares tomam apenas a covariância.

Atualizações, usadas apenas quando o documento lista a fonte: gnss-ssv (soluções de posição com disponibilidade e PDOP da varredura do volume de serviço espacial do motor ao longo de uma órbita terrestre osculadora que substitui o arco, uma varredura por ssv_window_s; sigma da solução = PDOP mediano vezes ssv_uere_m; a forma de informação esperada mantém a execução determinística) e ground-tracking (distância e taxa de variação da distância ao longo da direção geocêntrica, de modo que o plano do céu não é observado; a variância da atualização é dividida pelo ciclo de rastreamento). Chaves: tli_dv_mps, tli_dv_sigma_fraction, tli_pointing_sigma_rad, step_s, clock_q_f, clock_q_d, opcionais 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#

O trecho inercial é o trecho inercial de tli-and-cruise sem queima, terminando na interface de reentrada; suas chaves são as chaves do trecho acima. Na interface a fase lê o ângulo de trajetória e seu sigma a partir da covariância completa, a probabilidade de o ângulo estar dentro de um corredor declarado, a desaceleração máxima no ângulo nominal e nas duas bordas do corredor (a reentrada balística plana do motor ao lado da forma fechada de Allen-Eggers) em relação a um limite opcional, e a área de pouso: alcance a partir de uma sensibilidade declarada, desvio lateral a partir da covariância na interface através do plano orbital. Chaves: interface_alt_m, ballistic_coeff_kg_m2, corridor_min_deg, corridor_max_deg, downrange_sensitivity_km_per_deg, flight_time_s, opcionais max_decel_g, scale_height_m e start_state_gcrf (o estado nominal de retorno, seis números, quando a cadeia não tem queima trans-Terra que o produza). Nada aqui modela a sustentação, a guiagem ou o aquecimento de uma cápsula.

A sobreposição da rede terrestre#

Uma tabela opcional [ground_network] fornece estações e a menor elevação de rastreamento; para cada fase que ela nomeia, a sequência calcula a fração da fase que uma estação pode rastrear e a repassa à fase como o ciclo que escala sua taxa de atualização de rastreamento em solo. Geometrias: entry-orbit (o estado de entrada voado em dois corpos com J2, para fases em órbita baixa), moon-direction (o veículo na posição da Lua, para o cruzeiro cislunar) e stated (um ciclo que você fornece). Uma troca de estação perde handover_gap_s; o orçamento da fase recebe o maior intervalo sem estação à vista e um evento informa o ciclo. Nada modela as antenas ou as programações de uma rede.

O relatório#

kshana-mission-thread/1: phases[] (índice, id, tipo, tempos, rótulo, fontes de navegação e de tempo, fonte limitante, sigmas de entrada, de pico e de saída, requisito, margem, budget_rows[] com uma unidade por linha, events[]), o weakest_link (menor margem em relação a um requisito declarado, caso contrário a maior posição de pico), o timeline[], o label da sequência (o rótulo da fase mais fraca) e um bloco units. A figura é o 1-sigma de posição e de viés de relógio em função do tempo de missão, uma faixa por fase.

O que são as evidências#

O rótulo da sequência é o rótulo da fase mais fraca, e toda fase é MODELLED. O propagador lunar é comparado com o LRO e o CAPSTONE (xval/mission-thread-lunar/); o arco cislunar é comparado com uma trajetória pública do Horizons (xval/mission-thread/). Uma linha passa ou não atinge um limiar fixado em um arquivo versionado antes da execução, e uma falha é registrada como falha. Nada é VALIDATED, a menos que o registro o diga.