Highly-Dynamic Movements of a Humanoid Robot Using Whole-Body Trajectory Optimization
Open-source contributions (Contact Stability Constrained DDP) to the Crocoddyl library for whole-body trajectory optimization.
The results of the thesis are organized in several repositories:
- ma-thesis: Thesis and final presentation
- crocoddyl: Open-source contributions (Contact Stability Constrained DDP)
- ma-thesis-simulation-results: Optimization-based whole-body motions for the RH5 Humanoid robot.
- ma-thesis-experimental-results: Online stabilization of the planned motions on the RH5 Humanoid robot.
Contact RObot COntrol by Differential DYnamic programming Library (crocoddyl)
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
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 via Pinocchio
- Euclidian and non-Euclidian geometry friendly via Pinocchio
- handle autonomous and nonautomous dynamical systems
- numerical differentiation support
- automatic 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
- automatic code generation support
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.
- Add robotpkg as source repository to apt:
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
- Register the authentication certificate of robotpkg:
- You need to run at least once apt update to fetch the package descriptions:
- The installation of Crocoddyl:
sudo apt install robotpkg-py35-crocoddyl # for Python 3
Finally you will need to configure your environment variables, e.g.:
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:
- pinocchio
- example-robot-data (optional for examples, install Python loaders)
- gepetto-viewer-corba (optional for display)
- jupyter (optional for notebooks)
- matplotlib (optional for examples)
You can run examples, unit-tests and benchmarks from your build dir:
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_PLOT=1
After installation, you could run the examples as follows:
If you want to learn about Crocoddyl, take a look at the Jupyter notebooks. Start in the following order.
- examples/notebooks/unicycle_towards_origin.ipynb
- examples/notebooks/cartpole_swing_up.ipynb
- examples/notebooks/arm_manipulation.ipynb
- examples/notebooks/whole_body_manipulation.ipynb
- examples/notebooks/bipedal_walking.ipynb
- examples/notebooks/introduction_to_crocoddyl.ipynb
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, 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:
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}
}
The rest of the publications describes different component of Crocoddyl:
Publications
- C. Mastalli et al. Crocoddyl: An Efficient and Versatile Framework for Multi-Contact Optimal Control, IEEE International Conference on Robotics and Automation (ICRA), 2020
- R. Budhiraja, J. Carpentier, C. Mastalli and N. Mansard. Differential Dynamic Programming for Multi-Phase Rigid Contact Dynamics, IEEE RAS International Conference on Humanoid Robots (ICHR), 2018
- Y. Tassa, N. Mansard, E. Todorov. Control-Limited Differential Dynamic Programming, IEEE International Conference on Automation and Robotics (ICRA), 2014
- R. Budhiraja, J. Carpentier and N. Mansard. Dynamics Consensus between Centroidal and Whole-Body Models for Locomotion of Legged Robots, IEEE International Conference on Automation and Robotics (ICRA), 2019
- T. G. Lembono, C. Mastalli, P. Fernbach, N. Mansard and S. Calinon. Learning How to Walk: Warm-starting Optimal Control Solver with Memory of Motion, IEEE International Conference on Robotics and Automation (ICRA), 2020
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.
Credits
The following people have been involved in the development of Crocoddyl:
- Carlos Mastalli (University of Edinburgh): main developer and manager of the project
- Nicolas Mansard (LAAS-CNRS): project instructor
- Rohan Budhiraja (LAAS-CNRS): core development and features extension
- Justin Carpentier (INRIA): efficient analytical rigid-body dynamics derivatives
- Maximilien Naveau (MPI): unit-test support
- Guilhem Saurel (LAAS-CNRS): continuous integration and deployment
- Wolfgang Merkt (University of Oxford): feature extension and debugging
- Josep Marti Saumell (IRI: CSIC-UPC): feature extension
- Bilal Hammoud (MPI): features extension
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.