TrajectoryOptimization.jl Documentation

Documentation for TrajectoryOptimization.jl

Overview

This package is a testbed for state-of-the-art trajectory optimization algorithms. Trajectory optimization problems are of the form,

\[\begin{aligned} \min_{x_{0:N},u_{0:N-1}} \quad & \ell_f(x_N) + \sum_{k=0}^{N-1} \ell_k(x_k, u_k, dt) \\ \textrm{s.t.} \quad & x_{k+1} = f(x_k, u_k), \\ & g_k(x_k,u_k) \leq 0, \\ & h_k(x_k,u_k) = 0. \end{aligned}\]

This package currently implements the following methods for solving trajectory optimization problems:

  • Iterative LQR (iLQR): indirect method based on Differential Dynamic Programming
  • AL-iLQR: iLQR within an Augmented Lagrangian framework
  • Direct Collocation: direct method that formulates the problem as an NLP and passes the problem off to a commercial NLP solver
  • ALTRO (Augmented Lagrangian Trajectory Optimizer): A novel algorithm developed by the Robotic Exploration Lab at Stanford University, which uses iLQR within an augmented Lagrangian framework combined with a "Projected Newton" direct method for solution polishing and enforcement of feasibility.

Key features include:

  • Support for general, per-timestep constraints
  • ForwardDiff for fast auto-differentiation of dynamics, cost functions, and constraints

Getting Started

To set up and solve a trajectory optimization problem with TrajectoryOptimization.jl, the user will go through the following steps:

  1. Create a Model
  2. Create an Objective
  3. (Optionally) Add constraints
  4. Instantiate a Problem
  5. Solve the problem