Reference
Configuration reference
Every YAML file, every key, and the C++ SimParams field each one lands in.
Files
| File | Holds |
config/network.yaml, network_quick.yaml | algo, layers, width, timesteps, n_envs, seed, torch_threads, ppo/sac/td3 blocks, vecnormalize |
config/orbit.yaml | training: the episode envelope; simulation: the decay-run orbit |
config/train.yaml | name, backend, variant, physics, gsi, controller, reward_w, v12: wrapper knobs |
config/sweep.yaml | name, base, grid | arms (dotted keys) |
config/sc_v*_6mq*.yaml | SolarCat six-rod campaign settings (sc6mq.py, sc3.py) |
config/plant/physics{,_fast,_high}.yaml | physics presets (below) |
config/plant/reward_v8a|v8b|v9|v10|v11|v12.yaml | reward weights with provenance tags |
config/plant/gains_mrp.yaml | kp, kd, gate_floor |
config/plant/power_mtq.yaml | coil card (torque_max_Nm, dipole_max_Am2, power_peak_W), vehicle mass, cp offset |
config/plant/estimator_kf.yaml | torque KF noise, gate, inertia |
config/plant/sensors_solarcat.yaml, sensors_gaussian.yaml | sensor datasheets |
config/plant/vehicle*.yaml | mass budget, geometry file, rods, cp offset, trim |
config/plant/mpc_v1..v3.yaml, duo.yaml | baselines |
Physics YAML
| Key | Type / values | standard | fast | high | → SimParams |
gravity.model | ggm03s | twobody | ggm03s | ggm03s | ggm03s | sh_degree = 0 if twobody |
gravity.degree | 0–24 | 4 | 2 | 8 | sh_degree |
gravity.lunisolar | bool | false | false | true | lunisolar |
gravity.gradient_torque | bool | true | true | true | gravity_gradient |
atmosphere.model | msis21 | nrlmsise00 | constant | msis21 | msis21 | msis21 | (Python) |
atmosphere.f107, ap | float | 150, 4 | 150, 4 | 150, 4 | (Python, seed only) |
atmosphere.corotating | bool | true | true | true | corotating |
atmosphere.interp | bool | true | false | true | (Python → set_atmosphere_end) |
atmosphere.constant | {rho, T, m_bar} | — | — | — | (Python) |
aero.gsi | sentman | cll | sentman | sentman | cll | gsi |
aero.alpha_E | 0–1 | 0.93 | 0.93 | 0.93 | alpha_E |
aero.alpha_n | 0–1 | 1.0 | 1.0 | 0.93 | alpha_n |
aero.alpha_t | 0–1 (σ_T) | 1.0 | 1.0 | 1.0 | alpha_t |
aero.T_w | K | 300 | 300 | 300 | T_w |
aero.one_sided_ref | bool | true | true | true | one_sided_ref |
srp.enabled | bool (required) | true | true | true | use_panel_srp |
srp.optical | bool | true | true | true | srp_optical |
srp.optics | preset name | al_mylar | al_mylar | al_mylar | srp_ca/cs/cd |
srp.Cr | float | 1.8 | 1.8 | 1.8 | Cr |
srp.earth | bool | true | true | true | earth_rad |
srp.ir | {ca, cs, cd} | .85/0/.15 | .85/0/.15 | .85/0/.15 | ir_ca/cs/cd |
magnetics.model | wmm | dipole | wmm | dipole | wmm | wmm_path ("" = dipole) |
attitude.law | mrp | quaternion | mrp | mrp | mrp | attitude_law |
attitude.ideal_torque | bool | false | (false) | (false) | ideal_torque |
integrator.rk4_step_s | (0, 120] | 2.0 | 2.0 | 2.0 | rk4_step_s |
config/plant/.physics_ideal.yaml is the standard preset with ideal_torque: true, the plant the v8–v14 campaigns were tuned on.
SimParams (all fields)
| Field | Default | Notes |
mass | 0.625 kg | > 0 |
inertia | diag(0.0125, 0.0125, 0.025) | set_inertia / set_inertia_diag |
dt_s | 2.0 | (0, 300] substep |
advisor_step_s | 300.0 | (0, 3600] |
rk4_step_s | 2.0 | (0, 120] |
sh_degree | 4 | ≤ 24 |
lunisolar | false | Sun + Moon third body |
use_panel_srp, srp_optical, srp_ca/cs/cd, Cr, srp_scale | true, false, 1/0/0, 1.8, 1.0 | solar pressure (the env sets srp_optical from YAML) |
earth_rad, ir_ca/cs/cd | false, .85/0/.15 | Earth IR + albedo |
corotating, wind_N | true, 0 | relative velocity |
gsi, alpha_E, alpha_n, alpha_t, T_w, one_sided_ref | sentman, 0.93, 1, 1, 300, true | aero |
gravity_gradient | true | GG torque |
attitude_law, ideal_torque, max_slew_rad, mode | mrp, false, 45°, point | control |
cmd_frame, mtq_duty | inertial, 1.0 | command frame, coil duty |
epoch_jd | 2461060.5 | 2026-01-15 00:00 UTC |
ggm_path, wmm_path | "" | loaded in the constructor. GGM failure throws. |
orbit.yaml
training: # [lo, hi] = drawn each episode, number = fixed, null = variant default
altitude_km: [300, 500]
inc_deg: [20, 40]
ecc: [0.0, 0.01]
f107: [5, 250]
ap: [2, 200]
raan_deg: null # U(0, 360)
argp_deg: null
nu_deg: null
omega_dps: [-5, 5] # initial tumble per axis
mass_kg: null
soc: 0.5
episode_orbits: null # 40 / 120 (v10) / 160 (v11)
simulation: # python main.py decay
alt0_km: 500
alt_stop_km: 250
inc_deg: 23
ecc: 0.001
f107: 150
ap: 4
mass_kg: 0.625
dt_s: 5
max_days: 800
geom: hex # hex | stl1pct
train.yaml
name: null # auto id MM-DD-HH-MM_ALGO_LxW
backend: train # train | v12
variant: v10
physics: standard # fast | standard | high | path
gsi: null # null = physics file
controller: null
reward_w: {}
v12: {w_slew: 0.5, use_cmp: false, w_env: 0.0, clip_wrong_way: false, ..., resume: null, ppo_kw: {}}
Environment variables
| Variable | Effect |
ARLAMX_GGM, ARLAMX_WMM, ARLAMX_HEX_GEOM, ARLAMX_SOLARCAT_STL, ARLAMX_V17 | data-file overrides |
ARLAMX_PYTHON | interpreter for build.sh |
ARLAMX_TORCH_THREADS | torch.set_num_threads in the trainer |