El hilo de misión
Software de carácter consultivo, no un equipo de navegación certificado. Solo fuentes públicas; sin afiliación ni respaldo de ninguna agencia, y nada de aquí afirma conformidad con los requisitos de ningún programa.
kind = "mission-thread" encadena fases de una misión, cada una de uno de ocho tipos registrados con sus propios sensores y filtro, e informa del presupuesto de errores de navegación y temporización de toda la cadena: para cada fase, la posición, la velocidad y el sesgo de reloj de 1 sigma en la entrada, en el máximo y en la salida; cada contribución a él, con su unidad; el margen frente a un requisito que usted indique; el eslabón más débil; los eventos fechados; y una figura de línea de tiempo. Cada número es MODELLED: una entrada indicada o un modelo de una. Las únicas filas con referencia independiente externa están en xval/mission-thread/ y dicen qué prueban.
Ejecute el ejemplo desde una copia del repositorio (lee un recorte confirmado del kernel de la Luna):
kshana scenarios/mission-thread-artemis-class.toml
El 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
Un documento se rechaza, no se adivina, cuando un identificador de fase se repite, una lista nav está vacía, un nombre es desconocido, una clave de modelo no es una que el tipo de escenario conoce, una clave de duración discrepa de duration_s, o una fase enumera una fuente para la que su modelo no da números.
Qué hace un traspaso#
El estado transmitido es la covarianza completa de 6x6 de [x, y, z, vx, vy, vz] en unidades SI, el reloj (sesgo, deriva y su covarianza, con una escala de tiempo asociada), el marco, el tiempo de misión y una etiqueta de evidencia. Un traspaso nunca reinicia una covarianza.
| Regla | Qué hace |
|---|---|
carry |
transmite el estado sin cambios |
inflate |
ruido de aceleración blanco de PSD q_acc sobre gap_s en un modelo de línea recta; la fila indica ambos |
reacquire |
navegación a estima durante acquire_s, y luego un eje se fija al piso de la fuente solo donde el piso es menor; nunca por debajo del piso, nunca un reinicio |
Marcos y escalas de tiempo#
El hilo convierte en el traspaso, nunca dentro de una fase, y cada conversión es su propia fila de presupuesto. Marcos: GCRF, MCI, MCMF (ITRF y LVLH se rechazan con el motivo). Gcrf <-> Mci desplaza el origen según el estado geocéntrico de la Luna: el estado de grado DE440 del kernel donde cubre la época (sustituto de 5 m y 1 mm/s; peor caso medido 2,6 m frente a valores fijados de JPL Horizons), y si no la serie analítica con su RMS medido de 195,7 km, que la fila indica; por tanto, un ejemplo lunar debe llevar un kernel que cubra su época. Mci <-> Mcmf es la rotación sidérea media con los ejes alineados en la época y sin libración. Las escalas de tiempo pasan por TT: Utc <-> Tt exacta, Tdb <-> Tt añade 14 us, Tt <-> Ltc usa la tasa secular de lunar_time con su banda de 56 a 59 us/día como incertidumbre de la tasa.
Los ocho tipos de fase#
| Tipo | Segmento | Qué hace | Parámetros |
|---|---|---|---|
launch-ascent |
Tierra | ascenso propulsado a una órbita de estacionamiento: covarianza de velocidad constante con ruido de aceleración blanco, adquisición y desvanecimiento de GNSS, holdover del reloj | claves [phase.model] en src/mission_thread/earth/launch.rs |
leo-rendezvous |
Tierra | navegación relativa a lo largo de tramos de sensor: transición de Clohessy-Wiltshire en LVLH, covarianza de Kalman de 6x6, ventana de acoplamiento | más abajo |
tli-and-cruise |
Tierra | maniobra TLI y crucero cislunar: propagación de Cowell, matriz de transición de estado por diferencias finitas, actualizaciones de gnss-ssv y de seguimiento terrestre | más abajo |
entry |
Tierra | deriva de regreso hasta la interfaz de entrada; sigma del ángulo de trayectoria de vuelo, probabilidad de corredor, deceleración máxima, huella | más abajo |
lunar-orbit-rendezvous |
lunar | navegación relativa hasta el acoplamiento en una órbita lunar | mission-thread/lunar-phases.md |
lunar-descent |
lunar | presupuesto de dispersión de aterrizaje en un emplazamiento polar | igual |
lunar-surface |
lunar | disponibilidad de PNT y temporización en la superficie por emplazamiento y estación | igual |
lunar-ascent |
lunar | ascenso propulsado a una órbita de inserción | igual |
Los tipos de escenario lunares son también tipos de escenario independientes; el diseño y las evidencias están en MISSION-THREAD-LUNAR.md.
leo-rendezvous#
El presupuesto lleva los sigmas relativos; la covarianza absoluta del perseguidor se transmite sin cambios y una fila lo indica, porque esta fase mide los vehículos entre sí, no respecto de la Tierra. La covarianza relativa inicial es la absoluta del perseguidor más los sigmas indicados del objetivo, sumados como si fueran independientes (conservador). Claves: target_alt_m, target_abs_sigma_pos_m, target_abs_sigma_vel_mps, capture_pos_m, capture_vel_mps, opcionalmente process_q_acc y min_window_s, y uno o más [[phase.model.legs]] con range_m, end_range_m, duration_s, sensor (optical-camera, lidar o rf-ranging, parámetros ILLUSTRATIVE en src/mission_thread/sensors.rs) y interval_s; las duraciones de los tramos suman la de la fase. La ventana de acoplamiento es el tiempo desde que el sigma relativo permanece dentro de la envolvente de captura hasta el final de la fase. Las repeticiones son fases separadas con sus propios identificadores.
tli-and-cruise#
El estado medio es el propagador de Cowell del motor con gravedad terrestre y J2 y el Sol y la Luna como terceros cuerpos. La covarianza recorre cada segmento step_s con una matriz de transición de estado por diferencias hacia adelante (la ejecución nominal y seis ejecuciones perturbadas) y un ruido de aceleración blanco. La maniobra va a lo largo de la velocidad de entrada con una fracción de tamaño y un error de apuntamiento indicados. Límite indicado: los recortes confirmados del kernel de la Luna contienen la Luna pero no el Sol, de modo que el propagador toma la Luna del kernel y el Sol de la serie analítica (el término de tercer cuerpo del Sol es insensible al error de esa serie); la fase indica cuál usó en un evento, y donde ningún kernel cubre un segmento usa la serie analítica para ambos. La maniobra no está apuntada: el estado nominal es adonde vaya la maniobra indicada, y las fases lunares toman solo la covarianza.
Actualizaciones, usadas solo cuando el documento enumera la fuente: gnss-ssv (posiciones con disponibilidad y PDOP del barrido de volumen de servicio espacial del motor a lo largo de una órbita terrestre osculatriz que sustituye al arco, un barrido por ssv_window_s; sigma de la posición = PDOP mediano multiplicado por ssv_uere_m; la forma de información esperada mantiene la ejecución determinista) y ground-tracking (distancia y velocidad de distancia a lo largo de la dirección geocéntrica, de modo que no se observa el plano del cielo; la varianza de la actualización se divide por el ciclo de seguimiento). Claves: tli_dv_mps, tli_dv_sigma_fraction, tli_pointing_sigma_rad, step_s, clock_q_f, clock_q_d, opcionalmente 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#
La deriva es la deriva de tli-and-cruise sin maniobra, que termina en la interfaz de entrada; sus claves son las claves de la deriva indicadas arriba. En la interfaz la fase lee el ángulo de trayectoria de vuelo y su sigma a partir de la covarianza completa, la probabilidad de que el ángulo esté dentro de un corredor indicado, la deceleración máxima en el ángulo nominal y en ambos bordes del corredor (la entrada balística plana del motor junto a la forma cerrada de Allen-Eggers) frente a un límite opcional, y la huella: en el sentido del alcance a partir de una sensibilidad indicada, transversal a partir de la covarianza de la interfaz a través del plano orbital. Claves: interface_alt_m, ballistic_coeff_kg_m2, corridor_min_deg, corridor_max_deg, downrange_sensitivity_km_per_deg, flight_time_s, opcionalmente max_decel_g, scale_height_m y start_state_gcrf (el estado de regreso nominal, seis números, cuando la cadena no tiene ninguna maniobra de regreso a la Tierra que lo produzca). Nada de aquí modela la sustentación, el guiado ni el calentamiento de una cápsula.
La superposición de la red terrestre#
Una tabla opcional [ground_network] da estaciones y la elevación mínima de seguimiento; para cada fase que nombra, el hilo calcula la fracción de la fase que una estación puede seguir y se la pasa a la fase como el ciclo que escala su tasa de actualización de seguimiento terrestre. Geometrías: entry-orbit (el estado de entrada volado en dos cuerpos con J2, para las fases en órbita baja), moon-direction (el vehículo en la posición de la Luna, para el crucero cislunar) y stated (un ciclo que usted indica). Un cambio de estación pierde handover_gap_s; el presupuesto de la fase recibe el intervalo más largo sin ninguna estación a la vista y un evento indica el ciclo. Nada modela las antenas ni las programaciones de una red.
El informe#
kshana-mission-thread/1: phases[] (índice, identificador, tipo, tiempos, etiqueta, fuentes de navegación y de tiempo, fuente limitante, sigmas de entrada, máximo y salida, requisito, margen, budget_rows[] con una unidad por fila, events[]), el weakest_link (el menor margen frente a un requisito indicado, o si no la mayor posición máxima), el timeline[], la label del hilo (la etiqueta de la fase más débil) y un bloque units. La figura es la posición de 1 sigma y el sesgo de reloj frente al tiempo de misión, una banda por fase.
Qué son las evidencias#
La etiqueta del hilo es la de la fase más débil, y cada fase es MODELLED. El propagador lunar se compara con LRO y CAPSTONE (xval/mission-thread-lunar/); el arco cislunar se compara con una trayectoria pública de Horizons (xval/mission-thread/). Una fila supera o no alcanza un umbral fijado en un archivo confirmado antes de la ejecución, y un fallo se registra como fallo. Nada es VALIDATED salvo que el registro lo diga.