Coder Social home page Coder Social logo

rocketchris4710 / scptoolbox.jl Goto Github PK

View Code? Open in Web Editor NEW

This project forked from uw-acl/scptoolbox.jl

0.0 0.0 0.0 1.49 MB

Sequential Convex Programming Toolbox for nonconvex trajectory optimization.

License: GNU General Public License v3.0

C++ 0.37% Python 0.50% Julia 93.53% TeX 5.60%

scptoolbox.jl's Introduction

ℹ️ 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}
}

scptoolbox.jl's People

Contributors

dmalyuta avatar abhikamath avatar purnanandelango avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.