• Stars
    star
    302
  • Rank 134,034 (Top 3 %)
  • Language
    Julia
  • License
    MIT License
  • Created almost 6 years ago
  • Updated 2 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
130
star
2

Algames.jl

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

legged_mpc_control

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

RobotDynamics.jl

Julia
40
star
5

ALTRO

C++ implementation of ALTRO (Augmented Lagrangian TRajectory Optimizer)
C++
39
star
6

LUCIDGames.jl

Jupyter Notebook
31
star
7

ReLUQP-py

A GPU-Accelerated Quadratic Programming Solver for Model-Predictive Control
Python
31
star
8

RobotZoo.jl

Julia
26
star
9

TinyMPC-AL

Model-predictive control based on augmented Lagrangian
C
22
star
10

ReLUQP.jl

A GPU Accelerated Quadratic Programming Solver for Model-Predictive Control
Julia
13
star
11

AltroTutorials.jl

Jupyter Notebook
10
star
12

Aquarium.jl

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

L1CostOptimizer.jl

Fast Solution of Optimal Control Problems With L1 Cost
Jupyter Notebook
9
star
14

TrajOptPlots.jl

Jupyter Notebook
7
star
15

MaximalCoordinateDynamics.jl

Julia
7
star
16

sprite

KickSat Sprite (2019) running Circuitpython
HTML
7
star
17

EntryGuidance.jl

Julia
7
star
18

roboticexplorationlab.github.io

Lab Website
HTML
7
star
19

mcu-solver-benchmarks

Benchmarking solvers on microcontrollers (MCU), within TinyMPC project
C
7
star
20

RExHopper

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

PlanningWithAttitude

TeX
6
star
22

FlexibleSpacecraftMPC

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

EarthAlbedo.jl

Julia
5
star
24

odrive-communication-speed

C++
5
star
25

CGAC

Python
5
star
26

Deep-ILC

Python
5
star
27

TortoiseSat.jl

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

TinyMPC-ADMM

C++
5
star
29

tinympc-crazyflie-firmware

TinyMPC-integrated firmware for the Crazyflie Nano Quadcopter
C
5
star
30

DifferentialRotations.jl

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

PDAL-CPP

C++
4
star
32

KSRelativeOrbits

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

JuliaiLQR

Jupyter Notebook
4
star
34

rex-hopper-python

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

tinympc-dev-julia

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

sprite-decoder

MATLAB
3
star
37

altro-mpc-icra2021

Julia
3
star
38

RExQuadruped

Control system for quadruped written in Julia
Julia
3
star
39

Mercury.jl

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

EntryVehicle.jl

Julia
3
star
41

SpacecraftSimulator

Julia based spacecraft simulator
Julia
2
star
42

EmbeddedLciMpc.jl

Julia
2
star
43

SensorCalibration

Julia
2
star
44

EntryVehicleModel.jl

Spacecraft entry vehicle dynamic model.
Julia
2
star
45

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

Julia
2
star
46

RExVicon

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

IGRF

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

SatProp.jl

Satellite Propagator
Julia
1
star
49

JuliaIntro

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

MaximalCoordinates_WAFR2020_Experiments

Julia
1
star
51

DroneCad

Cad models for REx Lab drone
1
star
52

Lab-Logos

1
star
53

RosDockerWorkspace

Shell
1
star
54

Acrobot

Acrobot hardware design
1
star
55

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
56

TrackingControl.jl

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

Px4MPC

C++
1
star
58

TrajOptCore.jl

Julia
1
star
59

KSLowThrust

Julia
1
star