Skip to content

Commit

Permalink
update README
Browse files Browse the repository at this point in the history
  • Loading branch information
dmalyuta committed Jan 19, 2022
1 parent d5d3f99 commit 41fefd9
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 43 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
.juliahistory
/.vscode/
/media/*
/media/tests/*
/.ipynb_checkpoints/*
/sandbox/*
!/**/.gitkeep
!/media/logo/
!/media/logo/*
75 changes: 34 additions & 41 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,78 +4,71 @@
> algorithms.
<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="300px" />
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>
</p>

<p align="center">
<a href="media/logo/about.md">About the logo</a>
</p>

***

<p align="justify">
The <b>SCP Toolbox</b> 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.
</p>

<p align="justify">
Clone this repository, <a href="https://github.com/dmalyuta/scp_new_problem">scp_new_problem</a>, and read the
tutorial below to get started.
</p>

***
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.

<p align="center">
<a href="https://www.malyuta.name/optimization/tooling/2021/07/15/scp-tutorial.html"><b>Tutorial</b></a>
</p>
## Implemented SCP algorithms

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

## About

Four algorithms are implemented, and can be found in the `solvers/` directory:
- Lossless convexification ([LCvx](https://doi.org/10.2514/1.27553))
- Penalized trust region ([PTR](https://arxiv.org/abs/1811.10803))
- Successive convexification ([SCvx](https://arxiv.org/abs/1804.06539))
- Guaranteed Sequential Trajectory Optimization ([GuSTO](http://asl.stanford.edu/wp-content/papercite-data/pdf/Bonalli.Cauligi.Bylard.Pavone.ICRA19.pdf))
- Penalized trust region ([PTR](https://arxiv.org/abs/1811.10803))
- Lossless convexification ([LCvx](https://doi.org/10.2514/1.27553))

## Implemented examples

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

1. [Double integrator with friction](examples/src/double_integrator)
2. [Mars rocket landing](examples/src/rocket_landing)
3. [SpaceX Starship landing "flip" maneuver](examples/src/starship_flip)
1. [Double integrator with friction](test/examples/double_integrator)
2. [Mars rocket landing](test/examples/rocket_landing)
3. [SpaceX Starship landing "flip" maneuver](test/examples/starship_flip)
4. [Mass-spring-damper with an actuator deadband or
"sticking"](examples/src/oscillator)
5. [Quadrotor flight around obstacles](examples/src/quadrotor)
6. [Space station freeflyer robot](examples/src/freeflyer)
"sticking"](test/examples/oscillator)
5. [Quadrotor flight around obstacles](test/examples/quadrotor)
6. [Space station freeflyer robot](test/examples/freeflyer)
7. [Planar spacecraft rendezvous with discrete
logic](examples/src/rendezvous_planar)
logic](test/examples/rendezvous_planar)
8. [Apollo transposition and docking maneuver with discrete
logic](examples/src/rendezvous_3d)
logic](test/examples/rendezvous_3d)

## Citing

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

```
@article{SCPTrajOptCSM2021,
@article{SCPToolboxCSM2022,
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)},
journal = {{IEEE} Control Systems Magazine (accepted)},
pages = {arXiv:2106.09125}
}
```
2 changes: 1 addition & 1 deletion media/logo/about.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<img alt="SCP Toolbox"
title="SCP Toolbox"
src="./logo.png"
width="300px" />
width="400px" />
</p>

The SCP Toolbox logo is composed of the following elements:
Expand Down

0 comments on commit 41fefd9

Please sign in to comment.