What is CCST?
The Cloud Controls and Simulation Toolbox is a browser-based environment for designing and analyzing control systems, dynamical models, and astrodynamics problems. Type commands in the terminal, see results render in the right-hand panel, persist intermediate variables across calls, and re-run everything as scripts.
Built-in backend
CCST ships with a self-contained backend covering the bread-and-butter operations: matrix algebra, state-space synthesis, LQR / LQG, Kalman filtering, PID design, transfer functions, Bokeh and Plotly plotting, BlockGraph diagram simulation, plus Kepler / J2 / third-body orbital propagation and constellation analysis. Most workflows never need to leave the built-in stack.
External integrations
For problems that demand more β nonlinear trajectory optimization, real ephemeris, distributed multi-node simulation β CCST routes the same command through an external library via a thin adapter layer. Each integration is opt-in: a command without a backend: argument falls back to the built-in implementation.
Drakepydrake
Nonlinear trajectory optimization via DirectCollocation, time-varying LQR, time-varying Kalman, and variable-step nonlinear integration. Opt in by adding `backend:drake` to `lqr`, `kalman`, or `optimize`.
LuPNTpylupnt
Stanford NavLab's Lunar PNT library: real DE440 ephemeris, full N-body Earth + Moon dynamics, high-fidelity coordinate frame conversions for cislunar work. Used by `analyze` when set to `propagator pylupnt`.
ROS2rclpy + Foxglove
Distributed multi-node simulation runtime. Each block in a BlockGraph runs as a separate ROS2 node, with live visualization piped to Foxglove Studio over a WebSocket bridge.
Coming soon
LangGraph design agentWIP
Natural-language front door to CCST. Type `design a docking controller with settling time < 500s` and a LangGraph agent iteratively builds the control system by calling the same commands you would β `ss`, `lqr`, `statefb`, `sim`, `gdisplay` β streaming its reasoning and tool calls back into the terminal.
Agent-driven controller tuningWIP
Same agent loop, narrower target: hand it an LQR/PID/Kalman design and a quantitative spec ("settling time < 200s, overshoot < 5%"), and it iterates on the weights β propose, simulate, measure, adjust β until the spec is met. Needs a small `metric` tool family for the agent to read scalar performance numbers back from `sim` results.
Whatβs new
fix
TVLQG closed-loop hardening
Time-varying lookup tables now linearly interpolated between knots; nonlinear observer split into RK4 predict + implicit-Euler correct (unconditionally stable for high-confidence Kalman gains); reference trajectories clamp `t_final` so post-touchdown frames no longer drift.
feature
Constellation stability analysis
New `stability` command produces e-Ο phase plane, mean-anomaly drift, and periapsis-altitude envelope for any propagated constellation. Works with both the built-in propagator and pylupnt.
integration
Foxglove live visualization
ROS2 simulations stream over a WebSocket bridge to Foxglove Studio, with theme support and graceful session shutdown.
integration
ROS2 distributed simulation
New `ros2_sim` command runs any block-graph system as a network of ROS2 nodes inside a Docker container β same interface as `sim`, real pub/sub messaging under the hood.
feature
Constellation toolbox
Walker Delta and Walker Star constellation generators, J2 + third-body propagation, and N-fold coverage analysis over arbitrary lat/lon grids.
feature
BlockGraph simulator
Compose plants, controllers, observers, and signal sources as a block diagram; runs the same way under `sim` or `ros2_sim`.