The SCP Toolbox provides a parser-solver framework for sequential convex programming (SCP) algorithms for real-time generation of dynamically feasible trajectories of aerospace, robotic, and other systems. Under the hood, the algorithms rely on optimal control and convex numerical optimization theory.
Clone this repository, scp_new_problem, and read the tutorial below to get started.
Four algorithms are implemented, and can be found in the solvers/
directory:
- Lossless convexification (LCvx)
- Successive convexification (SCvx)
- Guaranteed Sequential Trajectory Optimization (GuSTO)
- Penalized trust region (PTR)
Several example applications show how the algorithms can be used. These can all
be found in the examples/
director, and include:
- Double integrator with friction
- Mars rocket landing
- SpaceX Starship landing "flip" maneuver
- Mass-spring-damper with an actuator deadband or "sticking"
- Quadrotor flight around obstacles
- Space station freeflyer robot
- Planar spacecraft rendezvous with discrete logic
- Apollo transposition and docking maneuver with discrete logic
If you use this code, kindly cite the following associated publication.
@article{SCPTrajOptCSM2021,
year = {2021},
publisher = {{IEEE}},
author = {Danylo Malyuta and Taylor P. Reynolds and Michael Szmuk
and Thomas Lew and Riccardo Bonalli and Marco Pavone
and Behcet Acikmese},
title = {Convex Optimization for Trajectory Generation},
journal = {{IEEE} Control Systems Magazine (in review)},
pages = {arXiv:2106.09125}
}