aligator

A versatile and efficient C++ library for real-time constrained trajectory optimization

https://github.com/simple-robotics/aligator

Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 7 DOI reference(s) in README
  • Academic publication links
  • Committers with academic emails
    8 of 20 committers (40.0%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (17.2%) to scientific vocabulary

Keywords from Contributors

nonlinear-optimization eigen3 proximal-algorithms quadratic-programming code-generation mathematics modular octave energy-system-model
Last synced: 6 months ago · JSON representation ·

Repository

A versatile and efficient C++ library for real-time constrained trajectory optimization

Basic Info
Statistics
  • Stars: 245
  • Watchers: 9
  • Forks: 29
  • Open Issues: 14
  • Releases: 16
Created over 3 years ago · Last pushed 7 months ago
Metadata Files
Readme Changelog License Citation

README.md

Aligator

Documentation Conda Version Ask DeepWiki

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

bash 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:

bash 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

bash 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 developer's guide.

Benchmarking

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

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

Citing Aligator

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

bibtex @misc{aligatorweb, author = {Jallet, Wilson and Bambade, Antoine and El Kazdadi, Sarah and Justin, Carpentier and Nicolas, Mansard}, title = {aligator}, url = {https://github.com/Simple-Robotics/aligator} } Please also consider citing the reference paper for the ProxDDP algorithm:

bibtex @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

Owner

  • Name: SimpleRobotics
  • Login: Simple-Robotics
  • Kind: organization

Open Source Software for Efficient, Frugal and Reliable Robotics

Citation (CITATION.cff)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: aligator, a versatile and efficient framework for constrained trajectory optimization
message: 'If you use this software, please cite it as below.'
type: software
authors:
  - given-names: Wilson
    family-names: Jallet
    email: wilson.jallet@polytechnique.org
    orcid: 'https://orcid.org/0000-0001-8222-2739'
    affiliation: INRIA
  - given-names: Ewen
    family-names: Dantec
    email: ewen.dantec@inria.fr
    affiliation: INRIA
    orcid: 'https://orcid.org/0000-0001-7059-894X'
  - given-names: Antoine
    family-names: Bambade
    affiliation: INRIA
    email: antoine.bambade@inria.fr
  - given-names: Sarah
    family-names: El Kazdadi
    email: sarahelkazdadi@gmail.com
  - given-names: Justin
    family-names: Carpentier
    email: justin.carpentier@inria.fr
    affiliation: INRIA
    orcid: 'https://orcid.org/0000-0001-6585-2894'
  - given-names: Nicolas
    family-names: Mansard
    email: nmansard@laas.fr
    affiliation: LAAS-CNRS
    orcid: 'https://orcid.org/0000-0002-8090-0601'
repository-code: 'https://github.com/Simple-Robotics/aligator'
version: 0.15.0
date-released: "2025-05-23"
license: BSD-2-Clause

GitHub Events

Total
  • Create event: 52
  • Release event: 7
  • Issues event: 27
  • Watch event: 117
  • Delete event: 46
  • Issue comment event: 108
  • Push event: 616
  • Pull request review comment event: 47
  • Pull request review event: 76
  • Pull request event: 114
  • Fork event: 16
Last Year
  • Create event: 52
  • Release event: 7
  • Issues event: 27
  • Watch event: 117
  • Delete event: 46
  • Issue comment event: 108
  • Push event: 616
  • Pull request review comment event: 47
  • Pull request review event: 76
  • Pull request event: 114
  • Fork event: 16

Committers

Last synced: 10 months ago

All Time
  • Total Commits: 3,073
  • Total Committers: 20
  • Avg Commits per committer: 153.65
  • Development Distribution Score (DDS): 0.124
Past Year
  • Commits: 802
  • Committers: 12
  • Avg Commits per committer: 66.833
  • Development Distribution Score (DDS): 0.19
Top Committers
Name Email Commits
ManifoldFR w****t@p****g 2,691
Ewen Dantec e****c@p****r 97
Joris Vaillant j****t@i****r 90
quentinldc q****c@i****r 56
fabinsch f****m@g****m 34
Ewen Dantec e****c@i****r 28
pre-commit-ci[bot] 6****] 25
Guilhem Saurel g****l@l****r 10
Ludovic De Matteis l****s@l****r 10
Stéphane Caron s****n@n****g 8
Antoine Bussy a****y@a****m 8
Justin Carpentier j****r@i****r 3
nmansard n****d@l****r 3
kzorina e****5@g****m 3
earlaud e****d@i****r 2
Bruce Wingo w****7@g****m 1
EtienneAr e****d@g****m 1
Mathis SCHEFFLER 9****h 1
SCHRAMM Fabian f****m@i****r 1
update-pixi-lockfile[bot] 1****] 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 92
  • Total pull requests: 233
  • Average time to close issues: about 2 months
  • Average time to close pull requests: 6 days
  • Total issue authors: 19
  • Total pull request authors: 17
  • Average comments per issue: 1.39
  • Average comments per pull request: 1.15
  • Merged pull requests: 198
  • Bot issues: 0
  • Bot pull requests: 34
Past Year
  • Issues: 31
  • Pull requests: 132
  • Average time to close issues: 7 days
  • Average time to close pull requests: 5 days
  • Issue authors: 10
  • Pull request authors: 13
  • Average comments per issue: 1.35
  • Average comments per pull request: 1.02
  • Merged pull requests: 110
  • Bot issues: 0
  • Bot pull requests: 20
Top Authors
Issue Authors
  • ManifoldFR (43)
  • edantec (11)
  • stephane-caron (8)
  • quentinll (6)
  • fabinsch (4)
  • Zionshang (4)
  • jorisv (4)
  • LudovicDeMatteis (2)
  • Cfather (2)
  • TheotimeLH (1)
  • oumayb (1)
  • costashatz (1)
  • oomcth (1)
  • beamiter (1)
  • lbt0116 (1)
Pull Request Authors
  • ManifoldFR (151)
  • pre-commit-ci[bot] (35)
  • jorisv (30)
  • edantec (22)
  • update-pixi-lockfile[bot] (15)
  • fabinsch (14)
  • abussy-aldebaran (12)
  • stephane-caron (5)
  • quentinll (4)
  • LudovicDeMatteis (4)
  • kzorina (2)
  • nim65s (2)
  • oomcth (2)
  • Tordjx (2)
  • EtienneAr (1)
Top Labels
Issue Labels
api (7) bug (6) enhancement (6) proposal (3) critical (2) no changelog (1) question (1) packaging (1) help wanted (1)
Pull Request Labels
no changelog (71) pixi (15) api (13) pr status ready (4) documentation (2) pr status wip (2) enhancement (2)

Dependencies

.github/workflows/check-changelog.yml actions
  • tarides/changelog-check-action v2 composite
.github/workflows/ci.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v3 composite
  • pre-commit/action v3.0.0 composite
.github/workflows/conda/conda-env.yml actions
.github/workflows/macos-linux-conda.yml actions
  • actions/cache v3 composite
  • actions/checkout v4 composite
  • conda-incubator/setup-miniconda v3 composite
  • re-actors/alls-green release/v1 composite
.github/workflows/publish.yml actions
  • actions/checkout v4 composite
  • conda-incubator/setup-miniconda v3 composite
  • re-actors/alls-green release/v1 composite
pyproject.toml pypi
  • numpy *