Skip to content

UW-ACL/SCPToolbox.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ℹ️ The repository name has changed to SCPToolbox.jl in order to reflect the project's direction: to develop a general-purpose trajectory optimization toolkit using sequential convex programming algorithms.

SCP Toolbox

License GPL 3 Launch Binder

The SCP Toolbox provides the tools necessary to define and solve nonconvex trajectory optimization problems. The user-facing part of the toolbox provides a trajectory problem parser that allows one to define the system dynamics, state and input constraints, and boundary conditions. Under the hood, the problem is solved using any one of several Sequential Convex Programming (SCP) algorithms. These algorithms have been successfully demonstrated on a number of difficult aerospace, autonomous driving, robotics, and other applications. A major goal of the SCP Toolbox is to provide working reference implementations of the SCP algorithms. By placing the algorithms behind a parser that transforms trajectory problems into their abstract mathematical definitions, the algorithms can be generically tested on a suite of examples without having to re-implement the underlying algorithms each time.

Getting Started

Click on the Binder button to spin up a remote Jupyter environment. Follow the included notebooks to get a feel for the toolbox, and finish by solving a self-guided tutorial to land a rocket on the Moon! Check out the SCPToolbox_tutorial repository for more details.

Implemented SCP algorithms

The following algorithms are implemented, and can be found in the src/solvers/ directory:

  • Penalized trust region (PTR)
  • Successive convexification (SCvx)
  • Guaranteed Sequential Trajectory Optimization (GuSTO)
  • Lossless convexification (LCvx)

Implemented examples

Several example applications show how the algorithms can be used. These can all be found in the test/examples/ directory, and include:

  1. Double integrator with friction
  2. Mars rocket landing
  3. SpaceX Starship landing "flip" maneuver
  4. Mass-spring-damper with an actuator deadband or "sticking"
  5. Quadrotor flight around obstacles
  6. Space station freeflyer robot
  7. Planar spacecraft rendezvous with discrete logic
  8. Apollo transposition and docking maneuver with discrete logic

Citing

If you use the SCP Toolbox, kindly cite the following associated publication.

@article{SCPToolboxCSM2022,
  doi = {10.1109/mcs.2022.3187542},
  url = {https://doi.org/10.1109/mcs.2022.3187542},
  year = {2022},
  month = oct,
  publisher = {Institute of Electrical and Electronics Engineers ({IEEE})},
  volume = {42},
  number = {5},
  pages = {40--113},
  author = {Danylo Malyuta and Taylor P. Reynolds and Michael Szmuk and Thomas Lew
            and Riccardo Bonalli and Marco Pavone and Behçet Açıkmeşe},
  title = {Convex Optimization for Trajectory Generation: A Tutorial on Generating
           Dynamically Feasible Trajectories Reliably and Efficiently},
  journal = {{IEEE} Control Systems},
  note = {Free preprint available at https://arxiv.org/abs/2106.09125}
}