Skip to content
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++ Python Other
Branch: devel
Clone or download
Latest commit 8532867 Dec 9, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.travis [CI] Fix yapf version to 0.28.0 Nov 30, 2019
benchmark [benchmark] Fixed problem producted by the new version of example-rob… Dec 2, 2019
bindings [python] Removed space in bp::args for autoindexing Dec 6, 2019
cmake @ 365af59 cmake: sync submodule Dec 6, 2019
doc [doc] Added the goldstein condition to the document. Apr 5, 2019
examples [example] Updated the log file for the quadrupedal_gait example Dec 2, 2019
include/crocoddyl Merge branch 'devel' into topic/vi-exceptions-fix Dec 9, 2019
src Merge branch 'devel' into topic/vi-exceptions-fix Dec 9, 2019
unittest [unittest] It is needed to increase the value in Ubuntu 16.04 Dec 7, 2019
.gitignore Merge branch 'devel' into 'mpi/crocoddyl-topic/kkt_solver' Nov 11, 2019
.gitlab-ci.yml [CI] include conf from rainboard May 2, 2019
.gitmodules [Packaging] setup CMake, fix #140 Mar 8, 2019
.travis.yml [CI] Add vanity env variable to easily see which distribution runs th… Dec 2, 2019
.yapfignore [Format] yapf -ri & isort -rc Mar 11, 2019
CMakeLists.txt cmake: numpy is not required by the C++ project Dec 5, 2019 [doc] Improved the explanation of the benchmark with CRTP Dec 5, 2019
LICENSE [LICENSE] Use the correct years, and use LAAS as the copyright holder Feb 12, 2019 Add Travis badge to README Dec 2, 2019
package.xml package.xml: Add Carlos as maintainer and add reference to … Oct 23, 2019
setup.cfg [cleanup] Removed unittest/sandbox + adapted flake8 ignore rules Oct 2, 2019

Contact RObot COntrol by Differential DYnamic programming Library (crocoddyl)


Crocoddyl is an optimal control library for robot control under contact sequence. Its solver is based on an efficient Differential Dynamic Programming (DDP) algorithm. Crocoddyl computes optimal trajectories along to optimal feedback gains. It uses Pinocchio for fast computation of robot dynamics and its analytical derivatives.

The source code is released under the BSD 3-Clause license.

Authors: Carlos Mastalli and Rohan Budhiraja
Instructors: Nicolas Mansard
With additional support from the Gepetto team at LAAS-CNRS and MEMMO project. For more details see Section Credits

License BSD-3-Clause CI build status pipeline status coverage report GitHub tag (latest by date) GitHub repo size contributors

GitHub Release Date GitHub last commit

If you want to follow the current developments, you can directly refer to the devel branch.


Crocoddyl can be easily installed on various Linux (Ubuntu, Fedora, etc.) and Unix distributions (Mac OS X, BSD, etc.).

Crocoddyl features

Crocoddyl is versatible:

  • various optimal control solvers (DDP, FDDP, BoxDDP, etc) - single and multi-shooting methods
  • analytical and sparse derivatives
  • geometrical systems friendly (with SE(3) manifold support)
  • handle autonomous and nonautomous dynamical systems
  • numerical differentiation support

Crocoddyl is efficient and flexible:

  • cache friendly,
  • multi-thread friendly
  • Python bindings (including models and solvers abstractions)
  • C++98/11/14/17/20 compliant
  • extensively tested

Installation through robotpkg

You can install this package through robotpkg. robotpkg is a package manager tailored for robotics softwares. It greatly simplifies the release of new versions along with the management of their dependencies. You just need to add the robotpkg apt repository to your sources.list and then use sudo apt install robotpkg-py27-crocoddyl (or py3X for python 3.X, depending on your system):

If you have never added robotpkg as a softwares repository, please follow first the instructions from 1 to 3; otherwise, go directly to instruction 4. Those instructions are similar to the installation procedures presented in

  1. Add robotpkg as source repository to apt:
sudo tee /etc/apt/sources.list.d/robotpkg.list <<EOF
deb [arch=amd64] $(lsb_release -sc) robotpkg
deb [arch=amd64] $(lsb_release -sc) robotpkg
  1. Register the authentication certificate of robotpkg:
curl | sudo apt-key add -
  1. You need to run at least once apt update to fetch the package descriptions:
sudo apt-get update
  1. The installation of Crocoddyl:
sudo apt install robotpkg-py27-crocoddyl # for Python 2

sudo apt install robotpkg-py35-crocoddyl # for Python 3

Finally you will need to configure your environment variables, e.g.:

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/python2.7/site-packages:$PYTHONPATH

Building from source

Crocoddyl is c++ library with Python bindings for versatile and fast prototyping. It has the following dependencies:

You can run examples, unit-tests and benchmarks from your build dir:

cd build
make test
make -s examples-quadrupedal_gaits INPUT="display plot" # enable display and plot
make -s benchmarks-quadrupedal_gaits INPUT="100 walk" # number of trials ; type of gait

Alternatively, you cansee the 3D result and/or graphs of your run examples, you can use


If you want to learn about Crocoddyl, take a look at the Jupyter notebooks. Start in the following order.

Citing Crocoddyl

To cite Crocoddyl in your academic research, please use the following bibtex lines:

  author={Mastalli, Carlos and Budhiraja, Rohan and Merkt, Wolfgang and Saurel, Guilhem and Hammoud, Bilal
  and Naveau, Maximilien and Carpentier, Justin and Vijayakumar, Sethu and Mansard, Nicolas},
  title={{Crocoddyl: An Efficient and Versatile Framework for Multi-Contact Optimal Control}},

and the following one to reference this website:

   author = {Carlos Mastalli, Rohan Budhiraja and Nicolas Mansard and others},
   title = {Crocoddyl: a fast and flexible optimal control library for robot control under contact sequence},
   howpublished = {},
   year = {2019}

The rest of the publications describes different component of Crocoddyl:


Questions and Issues

You have a question or an issue? You may either directly open a new issue or use the mailing list


The following people have been involved in the development of Crocoddyl:


The development of Pinocchio is supported by the EU MEMMO project, the Gepetto team @LAAS-CNRS, and the Statistical Machine Learning and Motor Control Group @University of Edinburgh.

You can’t perform that action at this time.