Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/loco-3d/crocoddyl
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
https://github.com/loco-3d/crocoddyl
code-generation conda crocoddyl differential-dynamic-programming legged-robotics model-predictive-control motion-planning optimal-control robotics ros trajectory-optimization
Last synced: 2 months ago
JSON representation
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
- Host: GitHub
- URL: https://github.com/loco-3d/crocoddyl
- Owner: loco-3d
- License: bsd-3-clause
- Created: 2019-06-04T11:46:13.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-10-29T07:08:03.000Z (3 months ago)
- Last Synced: 2024-10-29T08:18:30.823Z (3 months ago)
- Topics: code-generation, conda, crocoddyl, differential-dynamic-programming, legged-robotics, model-predictive-control, motion-planning, optimal-control, robotics, ros, trajectory-optimization
- Language: C++
- Homepage:
- Size: 21.6 MB
- Stars: 831
- Watchers: 27
- Forks: 170
- Open Issues: 21
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
## 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 (DDP, FDDP, BoxFDDP, 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++14/17/20 compliant
* Extensively tested
* Automatic code generation support via **[CppADCodeGen](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.
### :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).### :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
## :computer: Questions and Issues
You have a question or an issue? Please open a [new issue](https://github.com/loco-3d/crocoddyl/issues).
## :mag: Steering Committee
**Crocoddyl** is managed by a steering committee which meets every two weeks to discuss ongoing developments. The committee is led by [Carlos Mastalli](https://cmastalli.github.io/), [Nicolas Mansard](http://projects.laas.fr/gepetto/index.php/Members/NicolasMansard), [Guilhem Saurel](http://projects.laas.fr/gepetto/index.php/Members/GuilhemSaurel) and [Justin Carpentier](https://jcarpent.github.io/) are other members of the committee.
## :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).