• Stars
    star
    329
  • Rank 128,030 (Top 3 %)
  • Language
    Julia
  • License
    MIT License
  • Created over 6 years ago
  • Updated 8 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A fast trajectory optimization library written in Julia

TrajectoryOptimization

Build Status Documentation
Build Status CI codecov

This package is built for the express purpose of defining and evaluating trajectory optimization problems. Although early versions (pre v0.3) also included methods to solve these problems, this is now left to separate packages that implement the interface defined in TrajectoryOptimization.jl. For example, Altro.jl implements the ALTRO solver that used to be included in TrajectoryOptimization.jl. This change was done to make this package lighter and allow more abstraction in how solvers set up and solve the problems defined by this package.

TrajectoryOptimization.jl aims to provide both a convenient API for setting up and defining trajectory optimization problem and extremely efficient methods for evaluating them. Nearly all of the methods implemented have zero memory allocations and have been highly optimized for speed. Since trajectory optimization problem have a unique structure that set them apart from generic NLPs (nonlinear programs), use of the specialized methods in TrajectoryOptimization.jl can provide dramatic improvements in the computational efficiency of the solvers that implement the API.

All methods utilize Julia's extensive autodifferentiation capabilities via ForwardDiff.jl so that the user does not need to specify derivatives of dynamics, cost, or constraint functions.

Installation

To install TrajectoryOptimization.jl, run the following from the Julia REPL:

Pkg.add("TrajectoryOptimization")

What's New

TrajectoryOptimization.jl underwent significant changes between versions v0.1 and v0.2. The new code is significantly faster (up to 100x faster). The core part of the ALTRO solver (everything except the projected newton phase) is completely allocation-free once the solver has been initialized. Most of the API has changed significantly. See the documentation for more information on the new API.

In v0.3 the package was split into several different packages for increased modularity. These include RobotDynamics.jl, Altro.jl, RobotZoo.jl, and TrajOptPlots.jl.

Quick Start

To run a simple example of a constrained 1D block move see script in /examples/quickstart.jl.

Examples

Notebooks with more detailed examples can be found here

Related Papers

More Repositories

1

Altro.jl

Julia
141
star
2

Algames.jl

ALGAMES: Game Theoretic Solver for Trajectory Optimization
Julia
105
star
3

ReLUQP-py

A GPU-Accelerated Quadratic Programming Solver for Model-Predictive Control
Python
76
star
4

ALTRO

C++ implementation of ALTRO (Augmented Lagrangian TRajectory Optimizer)
C++
48
star
5

legged_mpc_control

A legged robot controller for Unitree A1 and Go1 robot using different MPC algorithms
C++
42
star
6

RobotDynamics.jl

Julia
41
star
7

ReLUQP.jl

A GPU Accelerated Quadratic Programming Solver for Model-Predictive Control
Julia
37
star
8

LUCIDGames.jl

Jupyter Notebook
33
star
9

RobotZoo.jl

Julia
26
star
10

TinyMPC-AL

Model-predictive control based on augmented Lagrangian
C
25
star
11

Aquarium.jl

A differentiable fluid-structure interaction (FSI) solver for robotics applications.
Julia
11
star
12

mcu-solver-benchmarks

Benchmarking solvers on microcontrollers (MCU), within TinyMPC project
C
11
star
13

AltroTutorials.jl

Jupyter Notebook
10
star
14

L1CostOptimizer.jl

Fast Solution of Optimal Control Problems With L1 Cost
Jupyter Notebook
10
star
15

tinympc-crazyflie-firmware

TinyMPC-integrated firmware for the Crazyflie Nano Quadcopter
C
9
star
16

EntryGuidance.jl

Julia
8
star
17

FlexibleSpacecraftMPC

Repository accompanying the paper "Model-Predictive Attitude Control for Flexible Spacecraft During Thruster Firings"
MATLAB
8
star
18

TrajOptPlots.jl

Jupyter Notebook
7
star
19

MaximalCoordinateDynamics.jl

Julia
7
star
20

RExHopper

Hardware control and simulation of a monopodal hopping robot with reaction wheels.
C++
7
star
21

PlanningWithAttitude

TeX
7
star
22

sprite

KickSat Sprite (2019) running Circuitpython
HTML
7
star
23

roboticexplorationlab.github.io

Lab Website
HTML
7
star
24

TinyMPC-ADMM

C++
6
star
25

EarthAlbedo.jl

Julia
5
star
26

odrive-communication-speed

C++
5
star
27

CGAC

Python
5
star
28

Deep-ILC

Python
5
star
29

TortoiseSat.jl

Under-actuated control of satellite attitude using magnetorquers and trajectory optimization
Julia
5
star
30

KSRelativeOrbits

Implementation of results in the 2023 IEEE Aerospace Paper "Convex Optimization of Relative Orbit Maneuvers Using the Kustaanheimo-Stiefel Transformation"
Julia
5
star
31

altro-mpc-icra2021

Julia
4
star
32

RExQuadruped

Control system for quadruped written in Julia
Julia
4
star
33

tinympc-dev-julia

TinyMPC prototype and experiment development in Julia (unofficial)
C
4
star
34

DifferentialRotations.jl

Package for doing optimization on the space of rotations
Julia
4
star
35

PDAL-CPP

C++
4
star
36

JuliaiLQR

Jupyter Notebook
4
star
37

rex-hopper-python

Control and simulation of a monopodal hopping robot with reaction wheels in PyBullet.
Jupyter Notebook
4
star
38

KSLowThrust

Julia
4
star
39

sprite-decoder

MATLAB
3
star
40

Mercury.jl

A fleet-footed asynchronous messaging system, designed specifically for robotics applications
Julia
3
star
41

EntryVehicle.jl

Julia
3
star
42

SpacecraftSimulator

Julia based spacecraft simulator
Julia
2
star
43

SensorCalibration

Julia
2
star
44

EmbeddedLciMpc.jl

Julia
2
star
45

MaximalCoordinates_WAFR2020_Experiments

Julia
2
star
46

EntryVehicleModel.jl

Spacecraft entry vehicle dynamic model.
Julia
2
star
47

Distributed-Low-Communication-State-Estimation-Procedure-for-Cubesat-Formations

Julia
2
star
48

RExVicon

A simple interface to the Vicon SDK to relay data over ZMQ or serial
C++
1
star
49

IGRF

Low-fidelity Magnetic Field for Simulation Purposes
Julia
1
star
50

SatProp.jl

Satellite Propagator
Julia
1
star
51

JuliaIntro

Contains code and presentations for getting started with Julia (and other things)
Jupyter Notebook
1
star
52

DroneCad

Cad models for REx Lab drone
1
star
53

Lab-Logos

1
star
54

RosDockerWorkspace

Shell
1
star
55

Acrobot

Acrobot hardware design
1
star
56

SphereConeEntryVehicle.jl

Entry Vehicle Dynamics Model. We develop a 6D-model parametric for the dynamics of a sphere-cone entry vehicle.
Jupyter Notebook
1
star
57

TrackingControl.jl

Easily develop and test controllers for nonlinear dynamical systems
Julia
1
star
58

Px4MPC

C++
1
star
59

TrajOptCore.jl

Julia
1
star