This library implements various optimal control algorithms that are particularly suited for aerospace applications.
- 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
- JIT derivative code generation with CppAD/CppADCodegen
- Intuitive interface to implement custom models
- Rapid iteration with parameters files
- 2D Rocket Model
- Rocket Landing Model with Quaternion
- Rocket Landing Model with Euler Angles
- C++17
- Eigen
- Boost (odeint and ptree)
- fmt (included as submodule)
- CppAD/CppADCodegen (included as submodule)
- Epigraph (included as submodule)
git clone --recurse-submodules https://github.com/EmbersArc/SCpp.git
cd SCpp
mkdir build
cd build
cmake ..
make
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.
See existing models in the socp_models
folder for some examples.
(click on videos for higher quality versions)
feed-forward input tested in a box2d physics simulation
I'm looking forward to contributions, both problem formulations and improvements to the core library.