Documents

Reference

Configuration reference

Every YAML file, every key, and the C++ SimParams field each one lands in.

Files

FileHolds
config/network.yaml, network_quick.yamlalgo, layers, width, timesteps, n_envs, seed, torch_threads, ppo/sac/td3 blocks, vecnormalize
config/orbit.yamltraining: the episode envelope; simulation: the decay-run orbit
config/train.yamlname, backend, variant, physics, gsi, controller, reward_w, v12: wrapper knobs
config/sweep.yamlname, base, grid | arms (dotted keys)
config/sc_v*_6mq*.yamlSolarCat six-rod campaign settings (sc6mq.py, sc3.py)
config/plant/physics{,_fast,_high}.yamlphysics presets (below)
config/plant/reward_v8a|v8b|v9|v10|v11|v12.yamlreward weights with provenance tags
config/plant/gains_mrp.yamlkp, kd, gate_floor
config/plant/power_mtq.yamlcoil card (torque_max_Nm, dipole_max_Am2, power_peak_W), vehicle mass, cp offset
config/plant/estimator_kf.yamltorque KF noise, gate, inertia
config/plant/sensors_solarcat.yaml, sensors_gaussian.yamlsensor datasheets
config/plant/vehicle*.yamlmass budget, geometry file, rods, cp offset, trim
config/plant/mpc_v1..v3.yaml, duo.yamlbaselines

Physics YAML

KeyType / valuesstandardfasthigh→ SimParams
gravity.modelggm03s | twobodyggm03sggm03sggm03ssh_degree = 0 if twobody
gravity.degree0–24428sh_degree
gravity.lunisolarboolfalsefalsetruelunisolar
gravity.gradient_torquebooltruetruetruegravity_gradient
atmosphere.modelmsis21 | nrlmsise00 | constantmsis21msis21msis21(Python)
atmosphere.f107, apfloat150, 4150, 4150, 4(Python, seed only)
atmosphere.corotatingbooltruetruetruecorotating
atmosphere.interpbooltruefalsetrue(Python → set_atmosphere_end)
atmosphere.constant{rho, T, m_bar}———(Python)
aero.gsisentman | cllsentmansentmancllgsi
aero.alpha_E0–10.930.930.93alpha_E
aero.alpha_n0–11.01.00.93alpha_n
aero.alpha_t0–1 (σ_T)1.01.01.0alpha_t
aero.T_wK300300300T_w
aero.one_sided_refbooltruetruetrueone_sided_ref
srp.enabledbool (required)truetruetrueuse_panel_srp
srp.opticalbooltruetruetruesrp_optical
srp.opticspreset nameal_mylaral_mylaral_mylarsrp_ca/cs/cd
srp.Crfloat1.81.81.8Cr
srp.earthbooltruetruetrueearth_rad
srp.ir{ca, cs, cd}.85/0/.15.85/0/.15.85/0/.15ir_ca/cs/cd
magnetics.modelwmm | dipolewmmdipolewmmwmm_path ("" = dipole)
attitude.lawmrp | quaternionmrpmrpmrpattitude_law
attitude.ideal_torqueboolfalse(false)(false)ideal_torque
integrator.rk4_step_s(0, 120]2.02.02.0rk4_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)

FieldDefaultNotes
mass0.625 kg> 0
inertiadiag(0.0125, 0.0125, 0.025)set_inertia / set_inertia_diag
dt_s2.0(0, 300] substep
advisor_step_s300.0(0, 3600]
rk4_step_s2.0(0, 120]
sh_degree4≤ 24
lunisolarfalseSun + Moon third body
use_panel_srp, srp_optical, srp_ca/cs/cd, Cr, srp_scaletrue, false, 1/0/0, 1.8, 1.0solar pressure (the env sets srp_optical from YAML)
earth_rad, ir_ca/cs/cdfalse, .85/0/.15Earth IR + albedo
corotating, wind_Ntrue, 0relative velocity
gsi, alpha_E, alpha_n, alpha_t, T_w, one_sided_refsentman, 0.93, 1, 1, 300, trueaero
gravity_gradienttrueGG torque
attitude_law, ideal_torque, max_slew_rad, modemrp, false, 45°, pointcontrol
cmd_frame, mtq_dutyinertial, 1.0command frame, coil duty
epoch_jd2461060.52026-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

VariableEffect
ARLAMX_GGM, ARLAMX_WMM, ARLAMX_HEX_GEOM, ARLAMX_SOLARCAT_STL, ARLAMX_V17data-file overrides
ARLAMX_PYTHONinterpreter for build.sh
ARLAMX_TORCH_THREADStorch.set_num_threads in the trainer