Skip to main content

Versatile and efficient framework for constrained trajectory optimization

Project description

Aligator

Documentation Conda Version Ask DeepWiki License

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.

Developing advanced, open-source, and versatile robotics software such as aligator takes time and energy while requiring a lot of engineering support. In recognition of our commitment, we would be grateful if you would quote our papers and software in your publications, software, and research articles. Please refer to the Citation section for further details.

Features

Aligator is a C++ library, which provides

  • a modelling interface for optimal control problems, node-per-node
  • a set of efficient solvers for constrained trajectory optimization
  • multiple routines for factorization of linear problems arising in numerical OC
  • 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
  • a Python API which can be used for prototyping formulations or even deployment.

Aligator provides efficient implementations of the following algorithms for (constrained) trajectory optimization:

  • ProxDDP: Proximal Differential Dynamic Programming, detailed in this paper
  • FeasibleDDP: Feasible Differential Dynamic Programming, detailed in this paper

Installation

From Conda

From either conda-forge or our channel.

conda install -c conda-forge aligator

From source with Pixi

To build aligator from source the easiest way is to use Pixi.

Pixi is a cross-platform package management tool for developers that will install all required dependencies in .pixi directory. It's used by our CI agent so you have the guarantee to get the right dependencies.

Run the following command to install dependencies, configure, build and test the project:

pixi run test

The project will be built in the build directory. You can run pixi shell and build the project with cmake and ninja manually.

Build from source

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

Python dependencies

Notes on building

  • 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.

Usage

aligator can be used in both C++ (with CMake to create builds) and Python.

Users can refer to examples in either language to see how to build a trajectory optimization problem, create a solver instance (with parameters), and solve their problem.

For how to use aligator in CMake, including creation of a Python extension module in C++, please refer to the advanced user's guide.

Aligator parallel & CPU optimizations

Please see the advanced user's guide

Benchmarking

The repo aligator-bench provides a comparison of aligator against other solvers.

For developer info on benchmarking, see doc/advanced-user-guide.md.

Citing aligator

To cite aligator in your academic research, please use the following bibtex entry:

@misc{aligatorweb,
  author = {Jallet, Wilson and Bambade, Antoine and El Kazdadi, Sarah and Carpentier, Justin and Mansard, Nicolas},
  title = {aligator},
  url = {https://github.com/Simple-Robotics/aligator}
}

Please also consider citing the reference paper for the ProxDDP algorithm:

@article{jalletPROXDDPProximalConstrained2025,
  title = {PROXDDP: Proximal Constrained Trajectory Optimization},
  shorttitle = {PROXDDP},
  author = {Jallet, Wilson and Bambade, Antoine and Arlaud, Etienne and {El-Kazdadi}, Sarah and Mansard, Nicolas and Carpentier, Justin},
  year = {2025},
  month = mar,
  journal = {IEEE Transactions on Robotics},
  volume = {41},
  pages = {2605--2624},
  issn = {1941-0468},
  doi = {10.1109/TRO.2025.3554437},
  urldate = {2025-04-04}
}

Contributors

Acknowledgments

The development of aligator is actively supported by the Willow team @INRIA and the Gepetto team @LAAS-CNRS.

Associated scientific and technical publications

  • E. Ménager, A. Bilger, W. Jallet, J. Carpentier, and C. Duriez, ‘Condensed semi-implicit dynamics for trajectory optimization in soft robotics’, in IEEE International Conference on Soft Robotics (RoboSoft), San Diego (CA), United States: IEEE, Apr. 2024. doi: 10.1109/RoboSoft60065.2024.10521997.
  • W. Jallet, N. Mansard, and J. Carpentier, ‘Implicit Differential Dynamic Programming’, in 2022 International Conference on Robotics and Automation (ICRA), Philadelphia, United States: IEEE Robotics and Automation Society, May 2022. doi: 10.1109/ICRA46639.2022.9811647.
  • W. Jallet, A. Bambade, N. Mansard, and J. Carpentier, ‘Constrained Differential Dynamic Programming: A primal-dual augmented Lagrangian approach’, in 2022 IEEE/RSJ International Conference on Intelligent Robots and Systems, Kyoto, Japan, Oct. 2022. doi: 10.1109/IROS47612.2022.9981586.
  • W. Jallet, A. Bambade, N. Mansard, and J. Carpentier, ‘ProxNLP: a primal-dual augmented Lagrangian solver for nonlinear programming in Robotics and beyond’, in 6th Legged Robots Workshop, Philadelphia, Pennsylvania, United States, May 2022. Accessed: Oct. 10, 2022. [Online]. Available: https://hal.archives-ouvertes.fr/hal-03680510
  • W. Jallet, A. Bambade, E. Arlaud, S. El-Kazdadi, N. Mansard, and J. Carpentier, ‘PROXDDP: Proximal Constrained Trajectory Optimization’, IEEE Transactions on Robotics, vol. 41, pp. 2605–2624, Mar. 2025, doi: 10.1109/TRO.2025.3554437.
  • S. Kazdadi, J. Carpentier, and J. Ponce, ‘Equality Constrained Differential Dynamic Programming’, presented at the ICRA 2021 - IEEE International Conference on Robotics and Automation, May 2021. Accessed: Sep. 07, 2021. [Online]. Available: https://hal.inria.fr/hal-03184203
  • A. Bambade, S. El-Kazdadi, A. Taylor, and J. Carpentier, ‘PROX-QP: Yet another Quadratic Programming Solver for Robotics and beyond’, in Robotics: Science and Systems XVIII, Robotics: Science and Systems Foundation, Jun. 2022. doi: 10.15607/RSS.2022.XVIII.040.
  • W. Jallet, E. Dantec, E. Arlaud, N. Mansard, and J. Carpentier, ‘Parallel and Proximal Constrained Linear-Quadratic Methods for Real-Time Nonlinear MPC’, in Proceedings of Robotics: Science and Systems, Delft, Netherlands, Jul. 2024. doi: 10.15607/RSS.2024.XX.002.
  • E. Dantec, W. Jallet, and J. Carpentier, ‘From centroidal to whole-body models for legged locomotion: a comparative analysis’, presented at the 2024 IEEE-RAS International Conference on Humanoid Robots, Nancy, France: IEEE, Jul. 2024. [Online]. Available: https://inria.hal.science/hal-04647996

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

libaligator-0.18.0.tar.gz (13.0 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

libaligator-0.18.0-0-py3-none-manylinux_2_28_x86_64.whl (3.1 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ x86-64

libaligator-0.18.0-0-py3-none-manylinux_2_28_aarch64.whl (2.8 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

libaligator-0.18.0-0-py3-none-macosx_11_0_arm64.whl (1.8 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

libaligator-0.18.0-0-py3-none-macosx_10_9_x86_64.whl (2.1 MB view details)

Uploaded Python 3macOS 10.9+ x86-64

File details

Details for the file libaligator-0.18.0.tar.gz.

File metadata

  • Download URL: libaligator-0.18.0.tar.gz
  • Upload date:
  • Size: 13.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for libaligator-0.18.0.tar.gz
Algorithm Hash digest
SHA256 d7179a1c03736325184cb39c80265cbca8e1b59a1c57959ea194f2317e4bbc6f
MD5 e7a614913aa2ac673c3e772e37e8a8e4
BLAKE2b-256 e1f6c5721718fae6b86c11cc24797ba0de619ad90554d1d665fa49c483df49b7

See more details on using hashes here.

Provenance

The following attestation bundles were made for libaligator-0.18.0.tar.gz:

Publisher: release.yml on cmake-wheel/libaligator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file libaligator-0.18.0-0-py3-none-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for libaligator-0.18.0-0-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 eb2f2781aef369d5d019603a5408190aabbf1a3b55df145ae8944074f020914b
MD5 43030a2cf785e25ecbfed6de25f809cd
BLAKE2b-256 1436ecc17d33efaa538c7645c07b496e59a15be2396a232546ae131fa92e45cf

See more details on using hashes here.

Provenance

The following attestation bundles were made for libaligator-0.18.0-0-py3-none-manylinux_2_28_x86_64.whl:

Publisher: release.yml on cmake-wheel/libaligator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file libaligator-0.18.0-0-py3-none-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for libaligator-0.18.0-0-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c36499a996947504066c4b5f5c9230fcbf75c0f452c656d0f781c5ba559f9ba7
MD5 0f066b1eb48b30631a3eec1aeb176963
BLAKE2b-256 a0df04ce7cca7bf69c924802c8420d13304b5cc9e1314e775b3c0d286e93c15d

See more details on using hashes here.

Provenance

The following attestation bundles were made for libaligator-0.18.0-0-py3-none-manylinux_2_28_aarch64.whl:

Publisher: release.yml on cmake-wheel/libaligator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file libaligator-0.18.0-0-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for libaligator-0.18.0-0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8bce1e7758bc4fac4cb03e4e2b6d3eab3c4538cbd97cf1c6320e6d1d6253ad45
MD5 8a3856d7cadec2d64cea2b54ae4d7aaf
BLAKE2b-256 585da4d991899a62d68835b407a0e4f11e92891b6f0aa5d72f6cc045c37cc334

See more details on using hashes here.

Provenance

The following attestation bundles were made for libaligator-0.18.0-0-py3-none-macosx_11_0_arm64.whl:

Publisher: release.yml on cmake-wheel/libaligator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file libaligator-0.18.0-0-py3-none-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for libaligator-0.18.0-0-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 15274c4aec297ec7047412f2839f23ab747f143f401504a316a061cd0a901ee1
MD5 b56902e5ce733853feca5fb0371ce222
BLAKE2b-256 fce562c57864bb9054e213624e6eb8a840fb1b3c2752653daf90200d63f89f3f

See more details on using hashes here.

Provenance

The following attestation bundles were made for libaligator-0.18.0-0-py3-none-macosx_10_9_x86_64.whl:

Publisher: release.yml on cmake-wheel/libaligator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page