Skip to main content

Crocoddyl Logo

Introduction

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 along with optimal feedback gains. It uses Pinocchio for fast computation of robots dynamics and their 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 conde version conde install conde download contributors GitHub Release Date GitHub last commit

If you want to follow the current developments, you can directly refer to the devel branch. If you want to directly dive into Crocoddyl, only one single line is sufficient (assuming you have Conda):

conda install crocoddyl -c conda-forge <\p>

Installation

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 via Pinocchio
  • Euclidian and non-Euclidian geometry friendly via Pinocchio
  • handle autonomous and nonautomous dynamical systems
  • numerical differentiation support
  • automatic differentiation support via CppAD

Crocoddyl is efficient and flexible:

  • cache friendly,
  • multi-thread friendly
  • Python bindings (including models and solvers abstractions) via Boost Python
  • C++ 98/11/14/17/20 compliant
  • extensively tested
  • automatic code generation support via CppADCodeGen

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 http://robotpkg.openrobots.org/debian.html.

  1. Add robotpkg as source repository to apt:
sudo tee /etc/apt/sources.list.d/robotpkg.list <<EOF
deb [arch=amd64] http://robotpkg.openrobots.org/wip/packages/debian/pub $(lsb_release -sc) robotpkg
deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -sc) robotpkg
EOF
  1. Register the authentication certificate of robotpkg:
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | 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-cpp-quadrupedal_gaits INPUT="100 walk" # number of trials ; type of gait

Alternatively, you can see the 3D result and/or graphs of your run examples (through gepetto-viewer and matplotlib), you can use

export CROCODDYL_DISPLAY=1
export CROCODDYL_PLOT=1

After installation, you could run the examples as follows:

python -m crocoddyl.examples.quadrupedal_gaits "display" "plot" # enable display and plot

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

Documentation

The documentation of Crocoddyl of its last release is available here.

Citing Crocoddyl

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}
}

and the following one to reference this website:

@misc{crocoddylweb,
   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 = {https://github.com/loco-3d/crocoddyl/wikis/home},
   year = {2019}
}

Please also consider citing Pinocchio, which contributes to the efficient implementation of rigid body algorithms and their derivatives. For more details how to cite Pinocchio visit: https://github.com/stack-of-tasks/pinocchio.

The rest of the publications describes different components of Crocoddyl:

Publications

Questions and Issues

You have a question or an issue? You may either directly open a new issue or use the mailing list crocoddyl@laas.fr.

Steering Committee

Crocoddyl is being managed by a steering committee which meets every two weeks to discuss the ongoing developments.

The committee is being led by Carlos Mastalli (University of Edinburgh) and Rohan Budhiraja (LAAS-CNRS). Nicolas Mansard (LAAS-CNRS), Guilhem Saurel (LAAS-CNRS) and Justin Carpentier (INRIA) are other members of the committee.

Credits

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

Acknowledgments

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

Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

crocoddyl-1.6.0-cp39-cp39-manylinux_2_24_x86_64.whl (7.7 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.24+ x86-64

crocoddyl-1.6.0-cp38-cp38-manylinux_2_24_x86_64.whl (7.7 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.24+ x86-64

crocoddyl-1.6.0-cp37-cp37m-manylinux_2_24_x86_64.whl (7.7 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.24+ x86-64

crocoddyl-1.6.0-cp36-cp36m-manylinux_2_24_x86_64.whl (7.7 MB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.24+ x86-64

crocoddyl-1.6.0-cp35-cp35m-manylinux_2_24_x86_64.whl (7.7 MB view details)

Uploaded CPython 3.5mmanylinux: glibc 2.24+ x86-64

crocoddyl-1.6.0-cp27-cp27mu-manylinux_2_24_x86_64.whl (7.7 MB view details)

Uploaded CPython 2.7mumanylinux: glibc 2.24+ x86-64

crocoddyl-1.6.0-1-cp39-cp39-manylinux_2_24_x86_64.whl (4.6 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.24+ x86-64

crocoddyl-1.6.0-1-cp38-cp38-manylinux_2_24_x86_64.whl (4.6 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.24+ x86-64

crocoddyl-1.6.0-1-cp37-cp37m-manylinux_2_24_x86_64.whl (4.6 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.24+ x86-64

crocoddyl-1.6.0-1-cp36-cp36m-manylinux_2_24_x86_64.whl (4.6 MB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.24+ x86-64

crocoddyl-1.6.0-1-cp35-cp35m-manylinux_2_24_x86_64.whl (4.6 MB view details)

Uploaded CPython 3.5mmanylinux: glibc 2.24+ x86-64

crocoddyl-1.6.0-1-cp27-cp27mu-manylinux_2_24_x86_64.whl (4.6 MB view details)

Uploaded CPython 2.7mumanylinux: glibc 2.24+ x86-64

File details

Details for the file crocoddyl-1.6.0-cp39-cp39-manylinux_2_24_x86_64.whl.

File metadata

  • Download URL: crocoddyl-1.6.0-cp39-cp39-manylinux_2_24_x86_64.whl
  • Upload date:
  • Size: 7.7 MB
  • Tags: CPython 3.9, manylinux: glibc 2.24+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.54.0 CPython/3.9.3

File hashes

Hashes for crocoddyl-1.6.0-cp39-cp39-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 86a5cf26184b3ac13bba5041782875334d111cdabb51f61bfa85132d93e34ec0
MD5 32ed38e02d588b39c819bdef106dc60a
BLAKE2b-256 d374193d963ced94fd441f080edfa12f8b79b121d49df6672efecd33f9261632

See more details on using hashes here.

File details

Details for the file crocoddyl-1.6.0-cp38-cp38-manylinux_2_24_x86_64.whl.

File metadata

  • Download URL: crocoddyl-1.6.0-cp38-cp38-manylinux_2_24_x86_64.whl
  • Upload date:
  • Size: 7.7 MB
  • Tags: CPython 3.8, manylinux: glibc 2.24+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.54.0 CPython/3.9.3

File hashes

Hashes for crocoddyl-1.6.0-cp38-cp38-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 a9c9a99f2a54521a80186dfe021c8db2743596e8652b27235cbfa0d46d824448
MD5 559ffd3c0d5e970ec532b2f1038ed8c5
BLAKE2b-256 10b933a34b2ff192bbc8c5a310936f1cf358a9692b5737d151464594cbdb277e

See more details on using hashes here.

File details

Details for the file crocoddyl-1.6.0-cp37-cp37m-manylinux_2_24_x86_64.whl.

File metadata

  • Download URL: crocoddyl-1.6.0-cp37-cp37m-manylinux_2_24_x86_64.whl
  • Upload date:
  • Size: 7.7 MB
  • Tags: CPython 3.7m, manylinux: glibc 2.24+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.54.0 CPython/3.9.3

File hashes

Hashes for crocoddyl-1.6.0-cp37-cp37m-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 8781c460ea2b0066284d393a2579db92b516a4aa9fcee81b7590845bf30ef92f
MD5 46acbadbb561c191e26a4bbd4a4d4965
BLAKE2b-256 0dd369b504a0e993480f26f6f549d12079d4c0c61294d6356c5f4ed6ac1a4a0f

See more details on using hashes here.

File details

Details for the file crocoddyl-1.6.0-cp36-cp36m-manylinux_2_24_x86_64.whl.

File metadata

  • Download URL: crocoddyl-1.6.0-cp36-cp36m-manylinux_2_24_x86_64.whl
  • Upload date:
  • Size: 7.7 MB
  • Tags: CPython 3.6m, manylinux: glibc 2.24+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.54.0 CPython/3.9.3

File hashes

Hashes for crocoddyl-1.6.0-cp36-cp36m-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 e5594fbd57d698f14b60c0054900d7f1fe456db03e69cc85a27b68c990f06609
MD5 68b8afc90488ea3bce679c51d2e017ba
BLAKE2b-256 9b6b35d93930e432f405fb0616e6773a6940938fc075f565eef75084a5017397

See more details on using hashes here.

File details

Details for the file crocoddyl-1.6.0-cp35-cp35m-manylinux_2_24_x86_64.whl.

File metadata

  • Download URL: crocoddyl-1.6.0-cp35-cp35m-manylinux_2_24_x86_64.whl
  • Upload date:
  • Size: 7.7 MB
  • Tags: CPython 3.5m, manylinux: glibc 2.24+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.54.0 CPython/3.9.3

File hashes

Hashes for crocoddyl-1.6.0-cp35-cp35m-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 7c09aeb26c940052a9c634f3b8ae92f5ce1b6fde37557cb013449642c2442e5d
MD5 a9baabafeea99f518737fee74233f380
BLAKE2b-256 2bb4f6cdbdc1096ddfffcf4f28df0628ff3c2d6eae85c59de98d06b08a7888c0

See more details on using hashes here.

File details

Details for the file crocoddyl-1.6.0-cp27-cp27mu-manylinux_2_24_x86_64.whl.

File metadata

  • Download URL: crocoddyl-1.6.0-cp27-cp27mu-manylinux_2_24_x86_64.whl
  • Upload date:
  • Size: 7.7 MB
  • Tags: CPython 2.7mu, manylinux: glibc 2.24+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.54.0 CPython/3.9.3

File hashes

Hashes for crocoddyl-1.6.0-cp27-cp27mu-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 2023f8ec6433e6334a9b070cde28cf99404c8853b48c50c7b7683e977e3554e6
MD5 1d53ef042fb9c8da783df81e48636139
BLAKE2b-256 d55f1b3b494041f14dd0072be86e7ae43728ad3d762481dc1c7daf215e229aaf

See more details on using hashes here.

File details

Details for the file crocoddyl-1.6.0-1-cp39-cp39-manylinux_2_24_x86_64.whl.

File metadata

  • Download URL: crocoddyl-1.6.0-1-cp39-cp39-manylinux_2_24_x86_64.whl
  • Upload date:
  • Size: 4.6 MB
  • Tags: CPython 3.9, manylinux: glibc 2.24+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.54.0 CPython/3.9.3

File hashes

Hashes for crocoddyl-1.6.0-1-cp39-cp39-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 175d5e5821144dde3429022d2af87ab2ca7195ec95baaf3bf14e763a0c7032af
MD5 ca063bf8ab3b72d2065b6b19dd0c547b
BLAKE2b-256 2dfe8f47724166c7e165c95664c0abff029007d555621696de03a2c69dcb84c9

See more details on using hashes here.

File details

Details for the file crocoddyl-1.6.0-1-cp38-cp38-manylinux_2_24_x86_64.whl.

File metadata

  • Download URL: crocoddyl-1.6.0-1-cp38-cp38-manylinux_2_24_x86_64.whl
  • Upload date:
  • Size: 4.6 MB
  • Tags: CPython 3.8, manylinux: glibc 2.24+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.54.0 CPython/3.9.3

File hashes

Hashes for crocoddyl-1.6.0-1-cp38-cp38-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 6c573921008f5d7624f596ea70e418177612122ec8612561eb729faafe8a31d2
MD5 f77bb5fa6a83e07d73f8e0348c63cf01
BLAKE2b-256 c3bf00e0cf063fa09f0ff85f14d7cf4367d337563935fbb5f9cb39899f02f994

See more details on using hashes here.

File details

Details for the file crocoddyl-1.6.0-1-cp37-cp37m-manylinux_2_24_x86_64.whl.

File metadata

  • Download URL: crocoddyl-1.6.0-1-cp37-cp37m-manylinux_2_24_x86_64.whl
  • Upload date:
  • Size: 4.6 MB
  • Tags: CPython 3.7m, manylinux: glibc 2.24+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.54.0 CPython/3.9.3

File hashes

Hashes for crocoddyl-1.6.0-1-cp37-cp37m-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 8914e94a6dead4fc4f7f7b14fb9ab688ffa055dfd8c166b35e34ebfcd40cb7ba
MD5 4b1e96d17f3c131e550ff1e0f7ba8d1c
BLAKE2b-256 c5c7fb4b13e94171c442bd74e30989f2a77426f2883a9a266493dc22d8dbea69

See more details on using hashes here.

File details

Details for the file crocoddyl-1.6.0-1-cp36-cp36m-manylinux_2_24_x86_64.whl.

File metadata

  • Download URL: crocoddyl-1.6.0-1-cp36-cp36m-manylinux_2_24_x86_64.whl
  • Upload date:
  • Size: 4.6 MB
  • Tags: CPython 3.6m, manylinux: glibc 2.24+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.54.0 CPython/3.9.3

File hashes

Hashes for crocoddyl-1.6.0-1-cp36-cp36m-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 63a2d3559339d56199f8af364ee10359f08fa3c66a6a3e1b72c76a6f8a3d40f5
MD5 845d6b010eed8e167c2bb5925be8aeeb
BLAKE2b-256 374e85f7e319024a16219e21e7f8aec5b63acb3dfbde4ab4bbbac9b734c2e6eb

See more details on using hashes here.

File details

Details for the file crocoddyl-1.6.0-1-cp35-cp35m-manylinux_2_24_x86_64.whl.

File metadata

  • Download URL: crocoddyl-1.6.0-1-cp35-cp35m-manylinux_2_24_x86_64.whl
  • Upload date:
  • Size: 4.6 MB
  • Tags: CPython 3.5m, manylinux: glibc 2.24+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.54.0 CPython/3.9.3

File hashes

Hashes for crocoddyl-1.6.0-1-cp35-cp35m-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 1d7130970d83e0be17215892f8822ddf709c7676112507f2772cbb22836031f3
MD5 5b6cbc13efb153cf4e18560c509ef6fa
BLAKE2b-256 19a48dd91f802072e0f3468059a48e211c943a704d783d76ef0c8820ced34d98

See more details on using hashes here.

File details

Details for the file crocoddyl-1.6.0-1-cp27-cp27mu-manylinux_2_24_x86_64.whl.

File metadata

  • Download URL: crocoddyl-1.6.0-1-cp27-cp27mu-manylinux_2_24_x86_64.whl
  • Upload date:
  • Size: 4.6 MB
  • Tags: CPython 2.7mu, manylinux: glibc 2.24+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.54.0 CPython/3.9.3

File hashes

Hashes for crocoddyl-1.6.0-1-cp27-cp27mu-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 2853f29433686c626c24142704fc5106a522d74fe75d83b4a5406dfc32a6ef0e
MD5 11ed2d9572213518976376a6248767fa
BLAKE2b-256 7229a88e961a6b5366861eae861301f36a582b6153eab1c17c60c4c5c8d739a8

See more details on using hashes here.

Release history Release notifications | RSS feed

3.2.1

21 files

3.2.0

49 files

3.1.0

25 files

3.0.1.1

24 files

3.0.1

24 files

3.0.0

24 files

2.2.0

24 files

2.1.0

18 files

2.0.2

32 files

2.0.1

17 files

2.0.0

7 files

1.9.0.2

10 files

1.9.0

40 files

1.8.1

15 files

1.8.0

5 files

1.7.0

10 files

This release

1.6.0 This release

12 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page