This library implements various optimal control algorithms that are particularly suited for aerospace applications.
Guidance and Control Algorithms
- Efficient Successive Convexification, a real-time guidance algorithm for optimal trajectory planning of constrained dynamical systems
- Generic linear receding-horizon SOCP MPC algorithm
- Linear Quadratic Regulator
Features
- JIT derivative code generation with CppAD/CppADCodegen
- Intuitive interface to implement custom models
- Rapid iteration with parameters files
Current Models
- 2D Rocket Model
- Rocket Landing Model with Quaternion
- Rocket Landing Model with Euler Angles
Dependencies
- C++17
- Eigen
- Boost (odeint and ptree)
- fmt (included as submodule)
- CppAD/CppADCodegen (included as submodule)
- Epigraph (included as submodule)
Instructions
Install
git clone --recurse-submodules https://github.com/EmbersArc/SCpp.git
cd SCpp
mkdir build
cd build
cmake ..
make
Run
Available executables are:
-
LQR_sim to simulate a trajectory with the classic MPC controller
-
MPC_sim to simulate a trajectory with the classic MPC controller
-
SC_oneshot to calculate one trajectory with Successive Convexification
-
SC_sim to simulate a trajectory with Successive Convexification
Calculated trajectories are written to the output/<modelname>
directory.
Create a Custom Model
See existing models in the socp_models
folder for some examples.
Papers
Examples
(click on videos for higher quality versions)
Rocket Trajectory Model with Free-Final-Time
SpaceX Starship Landing Trajectory
2D Rocket Landing Problem
feed-forward input tested in a box2d physics simulation
Cartpole
Contributing
I'm looking forward to contributions, both problem formulations and improvements to the core library.