Crocoddyl is an optimal control library for robot control under contact sequence. Its solver is based on various efficient Differential Dynamic Programming (DDP)-like algorithms
C++
1,320
4,338 commits
updated Oct 13, 2026
Crocoddyl is an optimal control library for robot control under contact sequence. Its solvers are based on novel and efficient differential dynamic programming (DDP) algorithms. Crocoddyl computes optimal trajectories and feedback gains. It uses Pinocchio for fast computation of robot dynamics and analytical derivatives.
If you want to learn more about Crocoddyl and its solvers, we suggest reading [1] [2] [3] and visiting PUBLICATIONS.md. If you want to follow the current developments and contribute, please directly refer to the devel branch.
![]() | ![]() |
Crocoddyl is versatile:
Crocoddyl is efficient and flexible:
Crocoddyl can be easily installed on various Linux (Ubuntu, Fedora, etc.) and Unix distributions (Mac OS X, BSD, etc.). Below, there are different ways to install Crocoddyl.
With your favorite AUR helper, eg. paru:
paru -Syu crocoddyl
Just run the following command in the terminal:
conda install crocoddyl -c conda-forge
crocoddyl & python3Packages.crocoddyl are available in nixpkgs.
This repository is also a flake, so you may:
nix run github:loco-3d/crocoddylcrocoddyl.url = "github:loco-3d/crocoddyl";The build cache use by CI and developers is gepetto.cachix.org
Just run the following command in the terminal:
pip install --user crocoddyl
Just clone it (with --recursive) into a catkin workspace and compile it.
sudo tee /etc/apt/sources.list.d/robotpkg.list <<EOF
deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -sc) robotpkg
EOF
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add -
sudo apt update
sudo apt install robotpkg-py3\*-crocoddyl
export PATH=/opt/openrobots/bin:$PATH
export PKG_CONFIG_PATH=/opt/openrobots/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=/opt/openrobots/lib:$LD_LIBRARY_PATH
export PYTHONPATH=/opt/openrobots/lib/python3.10/site-packages:$PYTHONPATH
GepettoDisplay)MeshcatDisplay)RvizDisplay)RvizDisplay)RvizDisplay)cmake .. && make && make install
You can disable the tests, examples, and benchmarks using the following CMake options: BUILD_TESTING, BUILD_EXAMPLES, and BUILD_BENCHMARK. Note that the tests, examples or benchmarks require example-robot-data.
Crocoddyl's Doxygen documentation is available here. Alternatively, you can also check out the Jupyter notebooks. We suggest to explore at least these notebooks:
Moreover, after installation, you could run the examples as follows:
python -m crocoddyl.examples.quadrupedal_gaits "display" "plot" # enable display and plot
or run examples, unit tests and benchmarks from your build directory as
cd build
make test
make -s examples-quadrupedal_gaits INPUT="display plot" # enable display and plot
make -s benchmarks-cpp-quadrupedal_gaits INPUT="100 walk" # number of trials ; type of gait
where it is possible to enable display and/or plots generated by our examples using the environment variables:
export CROCODDYL_DISPLAY=1
export CROCODDYL_PLOT=1
To cite Crocoddyl in your academic research, please use the following BibTeX lines:
@inproceedings{mastalli20crocoddyl,
author={Mastalli, Carlos and Budhiraja, Rohan and Merkt, Wolfgang and Saurel, Guilhem and Hammoud, Bilal
and Naveau, Maximilien and Carpentier, Justin and Righetti, Ludovic and Vijayakumar, Sethu and Mansard, Nicolas},
title={{Crocoddyl: An Efficient and Versatile Framework for Multi-Contact Optimal Control}},
booktitle = {IEEE International Conference on Robotics and Automation (ICRA)},
year={2020}
}
Please consider citing our selected publications and contributions described in PUBLICATIONS.md.
Crocoddyl's contributions extend beyond efficient software development. Please also consider citing the algorithm contributions of our different solvers and formulations:
Finally, please also consider citing Pinocchio, which contributes to the efficient implementation of rigid body algorithms and their derivatives. For more details on how to cite Pinocchio visit: https://github.com/stack-of-tasks/pinocchio.
[1] C. Mastalli, R. Budhiraja, W. Merkt, G. Saurel, B. Hammoud, M. Naveau, J. Carpentier, L. Righetti, S. Vijayakumar and N. Mansard. Crocoddyl: An Efficient and Versatile Framework for Multi-Contact Optimal Control, IEEE International Conference on Robotics and Automation (ICRA), 2020.
[2] C. Mastalli, W. Merkt, J. Marti-Saumell, H. Ferrolho, J. Sola, N. Mansard and S. Vijayakumar. A Feasibility-Driven Approach to Control-Limited DDP, Autonomous Robots, 2022.
[3] C. Mastalli, S. P. Chhatoi, T. Corbères, S. Tonneau and S. Vijayakumar. Inverse-Dynamics MPC via Nullspace Resolution, IEEE Transactions on Robotics, 2023.
[4] M. Parilli, S. Martinez, and C.Mastall. Endpoint-Explicit Differential Dynamic Programming via Exact Resolution, IEEE International Conference on Robotics and Automation (ICRA), 2025.
[5] S. Martinez, R. Griffin, and C.Mastalli. Multi-Contact Inertial Parameters Estimation and Localization in Legged Robots, IEEE Robotics and Automation Letters (RAL), 2025.
You have a question or an issue? Please open a new issue or a discussion.
Crocoddyl development was supported by the EU MEMMO project and the EU RoboCom++ project. It is maintained by the Robot Motor Intelligence (RoMI) Lab @ Heriot-Watt University, the Gepetto team @ LAAS-CNRS, and the Willow team @ INRIA.
Overall
Maintained
Code review
PyPI
Latest release
Releases this year
91 followers · starred Sep 2026
696 followers · starred Sep 2026
723 followers · starred Jan 2020
54 followers · starred Mar 2020
Crocoddyl is an optimal control library for robot control under contact sequence. Its solver is based on various efficient Differential Dynamic Programming (DDP)-like algorithms
C++
1,320
4,338 commits
updated Oct 13, 2026
Crocoddyl is an optimal control library for robot control under contact sequence. Its solvers are based on novel and efficient differential dynamic programming (DDP) algorithms. Crocoddyl computes optimal trajectories and feedback gains. It uses Pinocchio for fast computation of robot dynamics and analytical derivatives.
If you want to learn more about Crocoddyl and its solvers, we suggest reading [1] [2] [3] and visiting PUBLICATIONS.md. If you want to follow the current developments and contribute, please directly refer to the devel branch.
![]() | ![]() |
Crocoddyl is versatile:
Crocoddyl is efficient and flexible:
Crocoddyl can be easily installed on various Linux (Ubuntu, Fedora, etc.) and Unix distributions (Mac OS X, BSD, etc.). Below, there are different ways to install Crocoddyl.
With your favorite AUR helper, eg. paru:
paru -Syu crocoddyl
Just run the following command in the terminal:
conda install crocoddyl -c conda-forge
crocoddyl & python3Packages.crocoddyl are available in nixpkgs.
This repository is also a flake, so you may:
nix run github:loco-3d/crocoddylcrocoddyl.url = "github:loco-3d/crocoddyl";The build cache use by CI and developers is gepetto.cachix.org
Just run the following command in the terminal:
pip install --user crocoddyl
Just clone it (with --recursive) into a catkin workspace and compile it.
sudo tee /etc/apt/sources.list.d/robotpkg.list <<EOF
deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -sc) robotpkg
EOF
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add -
sudo apt update
sudo apt install robotpkg-py3\*-crocoddyl
export PATH=/opt/openrobots/bin:$PATH
export PKG_CONFIG_PATH=/opt/openrobots/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=/opt/openrobots/lib:$LD_LIBRARY_PATH
export PYTHONPATH=/opt/openrobots/lib/python3.10/site-packages:$PYTHONPATH
GepettoDisplay)MeshcatDisplay)RvizDisplay)RvizDisplay)RvizDisplay)cmake .. && make && make install
You can disable the tests, examples, and benchmarks using the following CMake options: BUILD_TESTING, BUILD_EXAMPLES, and BUILD_BENCHMARK. Note that the tests, examples or benchmarks require example-robot-data.
Crocoddyl's Doxygen documentation is available here. Alternatively, you can also check out the Jupyter notebooks. We suggest to explore at least these notebooks:
Moreover, after installation, you could run the examples as follows:
python -m crocoddyl.examples.quadrupedal_gaits "display" "plot" # enable display and plot
or run examples, unit tests and benchmarks from your build directory as
cd build
make test
make -s examples-quadrupedal_gaits INPUT="display plot" # enable display and plot
make -s benchmarks-cpp-quadrupedal_gaits INPUT="100 walk" # number of trials ; type of gait
where it is possible to enable display and/or plots generated by our examples using the environment variables:
export CROCODDYL_DISPLAY=1
export CROCODDYL_PLOT=1
To cite Crocoddyl in your academic research, please use the following BibTeX lines:
@inproceedings{mastalli20crocoddyl,
author={Mastalli, Carlos and Budhiraja, Rohan and Merkt, Wolfgang and Saurel, Guilhem and Hammoud, Bilal
and Naveau, Maximilien and Carpentier, Justin and Righetti, Ludovic and Vijayakumar, Sethu and Mansard, Nicolas},
title={{Crocoddyl: An Efficient and Versatile Framework for Multi-Contact Optimal Control}},
booktitle = {IEEE International Conference on Robotics and Automation (ICRA)},
year={2020}
}
Please consider citing our selected publications and contributions described in PUBLICATIONS.md.
Crocoddyl's contributions extend beyond efficient software development. Please also consider citing the algorithm contributions of our different solvers and formulations:
Finally, please also consider citing Pinocchio, which contributes to the efficient implementation of rigid body algorithms and their derivatives. For more details on how to cite Pinocchio visit: https://github.com/stack-of-tasks/pinocchio.
[1] C. Mastalli, R. Budhiraja, W. Merkt, G. Saurel, B. Hammoud, M. Naveau, J. Carpentier, L. Righetti, S. Vijayakumar and N. Mansard. Crocoddyl: An Efficient and Versatile Framework for Multi-Contact Optimal Control, IEEE International Conference on Robotics and Automation (ICRA), 2020.
[2] C. Mastalli, W. Merkt, J. Marti-Saumell, H. Ferrolho, J. Sola, N. Mansard and S. Vijayakumar. A Feasibility-Driven Approach to Control-Limited DDP, Autonomous Robots, 2022.
[3] C. Mastalli, S. P. Chhatoi, T. Corbères, S. Tonneau and S. Vijayakumar. Inverse-Dynamics MPC via Nullspace Resolution, IEEE Transactions on Robotics, 2023.
[4] M. Parilli, S. Martinez, and C.Mastall. Endpoint-Explicit Differential Dynamic Programming via Exact Resolution, IEEE International Conference on Robotics and Automation (ICRA), 2025.
[5] S. Martinez, R. Griffin, and C.Mastalli. Multi-Contact Inertial Parameters Estimation and Localization in Legged Robots, IEEE Robotics and Automation Letters (RAL), 2025.
You have a question or an issue? Please open a new issue or a discussion.
Crocoddyl development was supported by the EU MEMMO project and the EU RoboCom++ project. It is maintained by the Robot Motor Intelligence (RoMI) Lab @ Heriot-Watt University, the Gepetto team @ LAAS-CNRS, and the Willow team @ INRIA.
Overall
Maintained
Code review
PyPI
Latest release
Releases this year
91 followers · starred Sep 2026
696 followers · starred Sep 2026
723 followers · starred Jan 2020
54 followers · starred Mar 2020