SCPToolbox.jl
Sequential Convex Programming Toolbox for nonconvex trajectory optimization.
Install / Use
/learn @UW-ACL/SCPToolbox.jlREADME
<p align="center"> <a href="media/logo/about.md" title="About the logo"> <img alt="SCP Toolbox" title="SCP Toolbox" src="media/logo/logo.png" width="400px" /> </a> </p> <p align="center"> <a href="http://www.gnu.org/licenses/gpl-3.0.txt"><img src="https://img.shields.io/badge/license-GPL_3-green.svg" alt="License GPL 3" /></a> <a href="https://mybinder.org/v2/gh/UW-ACL/SCPToolbox_tutorial/master?labpath=tutorial%2Fsrc%2Fp1_clp.ipynb"><img src="https://mybinder.org/badge_logo.svg" alt="Launch Binder" /></a> <a href="https://github.com//UW-ACL/SCPToolbox.jl/actions/workflows/CI.yml/badge.svg"><img src="https://github.com//UW-ACL/SCPToolbox.jl/actions/workflows/CI.yml/badge.svg"/></a> <a href="https://codecov.io/gh/UW-ACL/SCPToolbox.jl" > <img src="https://codecov.io/gh/UW-ACL/SCPToolbox.jl/branch/master/graph/badge.svg?token=UI74DSQCLL"/> </a> </p>:information_source: The repository name has changed to
SCPToolbox.jlin order to reflect the project's direction: to develop a general-purpose trajectory optimization toolkit using sequential convex programming algorithms.
The <b>SCP Toolbox</b> 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 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:
- 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
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}
}
Related Skills
node-connect
337.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
337.3kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.2kCommit, push, and open a PR
