Crocoddyl Logo

Documentation AUR package nixpkgs stable 24.05 package nixpkgs unstable package Code style: black

## Introduction **[Crocoddyl](https://cmastalli.github.io/publications/crocoddyl20icra.html)** 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](https://github.com/stack-of-tasks/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]](#1) [[2]](#2) [[3]](#3) and visiting [PUBLICATIONS.md](https://github.com/loco-3d/crocoddyl/blob/master/PUBLICATIONS.md). If you want to follow the current developments and contribute, please directly refer to the [devel branch](https://github.com/loco-3d/cddp/tree/devel). ## :crocodile: Crocoddyl features
**Crocoddyl** is versatile: * Various optimal control solvers (FDDP, OdynSQP, Intro, Ipopt, etc) * Analytical and sparse derivatives via **[Pinocchio](https://github.com/stack-of-tasks/pinocchio)** * Differential geometry support leveraging **[Pinocchio](https://github.com/stack-of-tasks/pinocchio)** * Various integrators, dynamics, costs and constraints * Numerical differentiation support * Automatic differentiation support via **[CppAD](https://github.com/coin-or/CppAD)** **Crocoddyl** is efficient and flexible: * Cache friendly * Multi-threading support via **[OpenMP](https://www.openmp.org/)** * Python bindings (including abstractions) via **[Boost Python](https://wiki.python.org/moin/boost.python)** * C++11/14/17/20 compliant * Extensively tested * Code generation in both C++ and Python via **[CppADCoGen](https://github.com/joaoleal/CppADCodeGen)** ## :penguin: Installation **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. ### On ArchLinux With your favorite AUR helper, eg. paru: ```bash paru -Syu crocoddyl ``` ### :dragon: From Just run the following command in the terminal: ```bash conda install crocoddyl -c conda-forge ``` Conda installation supports [![conda install](https://anaconda.org/conda-forge/crocoddyl/badges/platforms.svg)](https://anaconda.org/conda-forge/crocoddyl). ### From Nix `crocoddyl` & `python3Packages.crocoddyl` are available in [nixpkgs](https://github.com/NixOS/nixpkgs/). This repository is also a flake, so you may: - run a python shell with crocoddyl: `nix run github:loco-3d/crocoddyl` - use it in your own flake: `crocoddyl.url = "github:loco-3d/crocoddyl";` The build cache use by CI and developers is [gepetto.cachix.org](https://app.cachix.org/cache/gepetto) ### :snake: From Just run the following command in the terminal: ```bash pip install --user crocoddyl ``` ### :turtle: With ROS Just clone it (with `--recursive`) into a catkin workspace and compile it. ### :package: From Debian / Ubuntu packages, with [robotpkg](http://robotpkg.openrobots.org) 1. If you have never added robotpkg's software repository, [do it now](http://robotpkg.openrobots.org/debian.html): ```bash sudo tee /etc/apt/sources.list.d/robotpkg.list <[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](https://cmastalli.github.io/publications/crocoddyl20icra.html), 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](https://arxiv.org/pdf/2010.00411.pdf), Autonomous Robots, 2022. [3] C. Mastalli, S. P. Chhatoi, T. Corbères, S. Tonneau and S. Vijayakumar. [Inverse-Dynamics MPC via Nullspace Resolution](https://arxiv.org/pdf/2209.05375.pdf), IEEE Transactions on Robotics, 2023. [4] M. Parilli, S. Martinez, and C.Mastall. [Endpoint-Explicit Differential Dynamic Programming via Exact Resolution](https://arxiv.org/pdf/2503.03897), 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](https://arxiv.org/pdf/2403.17161), IEEE Robotics and Automation Letters (RAL), 2025. ## :computer: Questions and Issues You have a question or an issue? Please open a [new issue](https://github.com/loco-3d/crocoddyl/issues) or a [discussion](https://github.com/loco-3d/crocoddyl/discussions). ## :copyright: Credits ### :writing_hand: Written by - [Carlos Mastalli](https://cmastalli.github.io/), Heriot-Watt University :uk: (project manager) - [Nicolas Mansard](http://projects.laas.fr/gepetto/index.php/Members/NicolasMansard), LAAS-CNRS :fr: - [Rohan Budhiraja](https://scholar.google.com/citations?user=NW9Io9AAAAAJ), LAAS-CNRS :fr: (alumnus) ### :construction_worker: With contributions from - [Guilhem Saurel](http://projects.laas.fr/gepetto/index.php/Members/GuilhemSaurel), LAAS-CNRS :fr: - [Wolfgang Merkt](http://www.wolfgangmerkt.com/research/), University of Oxford :uk: - [Justin Carpentier](https://jcarpent.github.io/), INRIA :fr: - [Andrea Del Prete](https://andreadelprete.github.io/), Università degli Studi di Trento :it: - [Wilson Jallet](https://manifoldfr.github.io), INRIA :fr: - [Maximilien Naveau](https://scholar.google.fr/citations?user=y_-cGlUAAAAJ&hl=fr), MPI :de: - [Josep Martí Saumell](https://www.iri.upc.edu/staff/jmarti), IRI: CSIC-UPC :es: - [Bilal Hammoud](https://scholar.google.com/citations?hl=en&user=h_4NKpsAAAAJ), MPI :de: - [Julian Eßer](https://github.com/julesser), Fraunhofer :de: ## :trophy: Acknowledgments **Crocoddyl** development was supported by the [EU MEMMO project](http://www.memmo-project.eu/) and the [EU RoboCom++ project](http://robocomplusplus.eu/). It is maintained by the [Robot Motor Intelligence (RoMI) Lab](https://www.romilab.org) [@ Heriot-Watt University](https://www.edinburgh-robotics.org/), the [Gepetto team](http://projects.laas.fr/gepetto/) [@ LAAS-CNRS](http://www.laas.fr), and the [Willow team](https://www.di.ens.fr/willow/) [@ INRIA](https://www.inria.fr/fr/centre-inria-de-paris).