Aligator is an efficient and versatile trajectory optimization library for robotics and beyond.
It can be used for motion generation and planning, optimal estimation, deployment of model-predictive control on complex systems, and much more.
Aligator is a C++ template library, which provides
- a modeling interface for optimal control problems, node-per-node
- a set of efficient solvers for constrained trajectory optimization
- support for the pinocchio rigid-body dynamics library and its analytical derivatives
- an interface to the Crocoddyl trajectory optimization library which can be used as an alternative frontend
- Python bindings leveraging eigenpy
Aligator provides efficient implementations of the following algorithms for (constrained) trajectory optimization:
- ProxDDP: Proximal Differentiable Dynamic Programming, detailed in this paper
- FeasibleDDP: Feasible Differentiable Dynamic Programming, detailed in this paper
From our channel.
conda install -c simple-robotics aligator
git clone https://github.com/Simple-Robotics/aligator --recursive
cmake -DCMAKE_INSTALL_PREFIX=your_install_folder -S . -B build/ && cd build/
cmake --build . -jNCPUS
Dependencies
- proxsuite-nlp
- Eigen3 >= 3.3.7
- Boost >= 1.71.0
- (optional) eigenpy>=3.1.0 | conda (Python bindings)
- (optional) Pinocchio | conda
- (optional) Crocoddyl | conda
- (optional) example-robot-data | conda (required for some examples and benchmarks)
- a C++14 compliant compiler
Python dependencies
- For developers, add the
-DCMAKE_EXPORT_COMPILE_COMMANDS=1
when working with language servers e.g. clangd. - To use the Crocoddyl interface, add
-DBUILD_CROCODDYL_COMPAT=ON
- By default, building the library will instantiate the templates for the
double
scalar type. - To build against a Conda environment, activate the environment and run
export CMAKE_PREFIX_PATH=$CONDA_PREFIX
before running CMake and use$CONDA_PREFIX
as your install folder.
We recommend using Flame Graphs to evaluate performance.
If you have the Rust toolchain and cargo
installed, we suggest you install cargo-flamegraph. Then, you can create a flame graph with the following command:
flamegraph -o my_flamegraph.svg -- ./build/examples/example-croc-talos-arm
- Antoine Bambade (Inria): mathematics and algorithms developer
- Justin Carpentier (Inria): project instructor
- Wilson Jallet (LAAS-CNRS/Inria): main developer and manager of the project
- Sarah Kazdadi: linear algebra czar
- Quentin Le Lidec (Inria): feature developer
- Joris Vaillant (Inria): core developer
- Nicolas Mansard (LAAS-CNRS): project coordinator
- Guilhem Saurel (LAAS-CNRS): core maintener
- Fabian Schramm (Inria): core developer
- Ludovic De Matteïs (LAAS-CNRS/Inria): feature developer
The development of Aligator is actively supported by the Willow team @INRIA and the Gepetto team @LAAS-CNRS.