Skip to main content

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

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.19.1.tar.gz (13.1 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.19.1-0-py3-none-manylinux_2_28_x86_64.whl (3.3 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ x86-64

libaligator-0.19.1-0-py3-none-manylinux_2_28_aarch64.whl (3.0 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

libaligator-0.19.1-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.19.1.tar.gz.

File metadata

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

File hashes

Hashes for libaligator-0.19.1.tar.gz
Algorithm Hash digest
SHA256 319aa2caba50ad4bde23e4c8399377210ec7ce3f5f3b503a457c78ce925d7682
MD5 cdcb361505bef00d297e18f762003e76
BLAKE2b-256 556764e8879adbb46f82dcabb4f23b54cd9e7761a9122f0bf33dfa582a8a60fe

See more details on using hashes here.

Provenance

The following attestation bundles were made for libaligator-0.19.1.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.19.1-0-py3-none-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for libaligator-0.19.1-0-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9fe1830b56eb5e56105514ed1f4c68526d5223211675d7b0ea1cd09ad1fe0248
MD5 8566d74841765d4918f6ce05c8d98585
BLAKE2b-256 16f394ecd53543964ece42d6d061ccbb7a6666c418b702e96461435a1c7e224e

See more details on using hashes here.

Provenance

The following attestation bundles were made for libaligator-0.19.1-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.19.1-0-py3-none-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for libaligator-0.19.1-0-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f16f8a233fc648a4dc0352e49ac8bcb45d9db07e372c587594d10ef9bc44e34d
MD5 dbce2c921130d9da83abb444c3b17add
BLAKE2b-256 8c774f975e544c8d41f5d2064fc3885cf5f0563808871af152202b2656a14105

See more details on using hashes here.

Provenance

The following attestation bundles were made for libaligator-0.19.1-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.19.1-0-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for libaligator-0.19.1-0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 efd9a28b20ccba6d2b322a844af4b5e675fe6b6cc828afe45b918b412759047d
MD5 2e70832af744e73e981a06db5445f7fa
BLAKE2b-256 ea845a9db48ec02be21014b1b622eebd0eb383ba8f59b0b8d9ac48288dfef7b8

See more details on using hashes here.

Provenance

The following attestation bundles were made for libaligator-0.19.1-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.19.1-0-py3-none-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for libaligator-0.19.1-0-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 07c05b16cd32495fd5345653108562bf05d922b3ca4d3b4ea3af173167a7eaed
MD5 5ddfeed45213a8365051cea6958e7afb
BLAKE2b-256 4d540a937e756ba02343ba7c2cdbf4201f1044f31945ae25a2b536b91189f406

See more details on using hashes here.

Provenance

The following attestation bundles were made for libaligator-0.19.1-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 Sentry Error logging StatusPage Status page