How sundw2014/c3m works
This repository learns contraction-metric-certified controllers for several dynamical-system tasks, then evaluates and plots closed-loop trajectories against generated references. The primary workflow is task selection and sampling, system/model construction, training with contraction constraints, checkpointing, and controller evaluation. The graph preserves the documented plotting and task-specific system capabilities; some task modules and training details were not sampled, so uncertain internal links are omitted.
Main entry points: main.py Training entry · plot.py Evaluation runner · systems Plant dynamics · np2pth.py NumPy adapters
Components 15
Controller learning
- Training entry
main.py - Metric and policy
models - Contraction loss
main.py - Train and validate
main.py
Task definitions
- Task configuration
configs - Plant dynamics
systems
Evaluation and plotting
- Evaluation runner
plot.py - NumPy adapters
np2pth.py - Euler integration
utils.py - Trajectory plots
plot.py
Model artifacts
- Saved controller
main.py - Aero network weights
data/Fa_net_12_3_full_Lip16.pth
Other components
- Engineer
- PyTorch
- Matplotlib
Connections 21
- Engineer → Training entry: selects task
- Training entry → Task configuration: loads bounds
- Training entry → Plant dynamics: loads dynamics
- Training entry → Metric and policy: builds networks
- Training entry → Train and validate: runs epochs
- Train and validate → Contraction loss: computes loss
- Contraction loss → Metric and policy: evaluates metric
- Contraction loss → Plant dynamics: evaluates plant
- Train and validate → Saved controller: saves best
- Engineer → Evaluation runner: requests evaluation
- Evaluation runner → Task configuration: creates reference
- Evaluation runner → NumPy adapters: loads adapters
- Evaluation runner → Euler integration: integrates trajectories
- NumPy adapters → Plant dynamics: calls dynamics
- NumPy adapters → Saved controller: loads policy
- Euler integration → NumPy adapters: queries control
- Euler integration → Plant dynamics: steps plant
- Evaluation runner → Trajectory plots: renders results
- Trajectory plots → Matplotlib: draws figures
- Plant dynamics → Aero network weights: loads weights
- Training entry → PyTorch: trains models