Authors: Ahmad Ali Parr, Jessica L. Williams (SNAPKITTYWEST)
NASA JPL's Open Source Rover had a bug in master.
Corner wheels calculated r wrong in v = r·ω. Turn radius was off.
We traced it. We fixed kinematics.py. Then we took it to orbit.
A ROS 2 multi-agent framework enabling LLM-driven agents to command robotic space drones (free-flyers) aboard ISS-analog environments. Extends the NASA JPL Open Source Rover control patterns, replacing ground kinematics with 6-DOF orbital dynamics.
Every command is Ed25519-signed per the Sovereign Trust Deed. The WORM chain seals the command history. The safety filter enforces keep-out zones at the type level.
NASA JPL's OSR kinematics.py calculates corner wheel velocities as v = r * omega but uses the wrong r — off-axis distance instead of the true turn radius. Result: the rover crab-walks, spins, and makes you think your Roboclaw or servos are dead when the hardware is fine.
NASA never patched it in master.
We rewrote the kinematics. Then extended the architecture to orbital dynamics.
LLM Agent (ROSA)
↓ calculate_orbital_wrench tool (CW dynamics + PD)
↓ verify_safety_zone tool (keep-out ellipsoids)
↓
ISS Node Bridge (ISSNodeBridge)
↓ Ed25519 command attestation (Sovereign Trust Deed)
↓ Safety filter (ellipsoidal CBF)
↓ Wrench → thruster allocation (LP, fuel-optimal)
↓
Swarm Coordinator
↓ CW-aware collision avoidance
↓ TDMA comms scheduling
↓ Task allocation (Hungarian / MILP)
↓
Gazebo / Real Hardware
↓ Thruster effort commands
↓ State estimation (EKF: VICON + IMU + star tracker)
↓
WORM Chain (sovereign ledger)
↓ Every command sealed, every state transition recorded
Clohessy-Wiltshire (Hill) equations for relative orbital motion in LVLH frame:
d²x/dt² - 2ω dz/dt - 3ω²x = Fx/m
d²y/dt² + ω²y = Fy/m
d²z/dt² + 2ω dx/dt = Fz/m
6×6 state transition matrix Φ — symplectic (energy-preserving, proven).
Thruster allocation solves A·f = wrench minimizing ||f||₁ (fuel-optimal LP) — feasible for all wrench in convex hull of thrust set, proven by LP duality.
osr-space/
├── osr_space/
│ ├── primitives.py SE3State, WrenchCommand, ThrusterCommand
│ ├── orbital_dynamics.py CW equations, thruster allocation (LP)
│ ├── iss_bridge.py ISSNodeBridge — per-agent ROS 2 node + Ed25519
│ ├── swarm_coordinator.py Multi-agent coordination + TDMA
│ ├── rosa_agent.py ROSA LLM agent factory + orbital IK tool
│ ├── safety_filter.py Keep-out zone enforcement (ellipsoidal CBF)
│ └── inverse_kinematics_6dof.py Pose → wrench solver
├── osr_bringup/
│ ├── launch/osr_space_launch.py
│ └── config/{orbital_params,thruster_config,safety_zones}.yaml
├── osr_interfaces/osr_msgs/
│ ├── msg/{SpacecraftState,ThrusterCommand,AvoidanceZone}.msg
│ └── srv/AssignTask.srv
├── osr_gazebo/
│ ├── gazebo_space_adapter.py
│ └── worlds/iss_lvlh.world
├── scripts/ina260/ina260_battery_publisher.py
└── test/
├── test_orbital_dynamics.py
├── test_thruster_allocation.py
└── test_safety_filter.py
| Component | Status |
|---|---|
| ROSA LLM agent + orbital IK as callable tool | NOVEL |
| ISS Node Bridge with Ed25519 sovereign attestation | NOVEL |
| Swarm coordinator with CW-aware collision avoidance | NOVEL |
| LLM → ROSA → orbital IK → thruster allocation → hardware | NOVEL |
| CW dynamics | Clohessy 1960 |
| LP thruster allocation | Bodson 2002 |
| Safety filter (ellipsoidal CBF) | Ames 2019, adapted |
| Obligation | Status |
|---|---|
| CW dynamics preserve energy (unforced) | ✅ Φ symplectic |
| Thruster allocation feasible ∀ wrench ∈ convex hull | ✅ LP duality |
| TDMA schedule collision-free | ✅ Round-robin + guard bands |
| Safety filter keep-out | |
| ROSA tool calls → valid wrenches |
- Ed25519 command signing — Sovereign Trust Deed, same as LOCKER WORM chain
- WORM ledger — every command sealed, every state transition recorded
- ERE gates — invalid commands rejected before execution
- Sovereign Hypervisor — 6502 agent VMs can run the ROSA agents
- BOB Voyager — ISS telemetry already tracked via Forth + NORAD 25544
The ground rover bug was the entry point. The orbital dynamics is the extension. The sovereign stack is the security layer underneath it all.
Tri-license — AGPL-3.0 | BSL 1.1 → MIT | MIT
Copyright (C) 2026 Ahmad Ali Parr, Jessica L. Williams / SNAPKITTYWEST
Bel Esprit D'Accord Irrevocable Trust