All Projects → loco-3d → Crocoddyl

loco-3d / Crocoddyl

Licence: bsd-3-clause
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

Projects that are alternatives of or similar to Crocoddyl

Dynamicwindowapproach
The Dynamic Window Approach planning algorithm written in C with Python Bindings
Stars: ✭ 17 (-91.79%)
Mutual labels:  motion-planning
Rvo2 3d
Optimal Reciprocal Collision Avoidance in Three Dimensions (C++)
Stars: ✭ 108 (-47.83%)
Mutual labels:  motion-planning
Xpp
Visualization of Motions for Legged Robots in ros-rviz
Stars: ✭ 177 (-14.49%)
Mutual labels:  motion-planning
Awesome Decision Making Reinforcement Learning
A selection of state-of-the-art research materials on decision making and motion planning.
Stars: ✭ 68 (-67.15%)
Mutual labels:  motion-planning
Owl
motion planning algorithms with demos for various state-spaces
Stars: ✭ 84 (-59.42%)
Mutual labels:  motion-planning
Pick Place Robot
Object picking and stowing with a 6-DOF KUKA Robot using ROS
Stars: ✭ 126 (-39.13%)
Mutual labels:  motion-planning
Fast Planner
A Robust and Efficient Trajectory Planner for Quadrotors
Stars: ✭ 718 (+246.86%)
Mutual labels:  motion-planning
Rvo2 Cs
Optimal Reciprocal Collision Avoidance (C#)
Stars: ✭ 208 (+0.48%)
Mutual labels:  motion-planning
Pybullet Planning
PyBullet Planning
Stars: ✭ 89 (-57%)
Mutual labels:  motion-planning
Gpmp2
Gaussian Process Motion Planner 2
Stars: ✭ 161 (-22.22%)
Mutual labels:  motion-planning
Awesome Robotics Libraries
😎 A curated list of robotics libraries and software
Stars: ✭ 1,159 (+459.9%)
Mutual labels:  motion-planning
Omplapp
The Open Motion Planning Library (OMPL), GUI + FCL/Assimp integration
Stars: ✭ 83 (-59.9%)
Mutual labels:  motion-planning
Aikido
Artificial Intelligence for Kinematics, Dynamics, and Optimization
Stars: ✭ 133 (-35.75%)
Mutual labels:  motion-planning
Topotraj
A robust UAV local planner based on the ICRA2020 paper: Robust Real-time UAV Replanning Using Guided Gradient-based Optimization and Topological Paths
Stars: ✭ 50 (-75.85%)
Mutual labels:  motion-planning
Hybrid A Star Annotation
Hybrid A*路径规划器的代码注释
Stars: ✭ 188 (-9.18%)
Mutual labels:  motion-planning
Awesome Human Pose Estimation
Human Pose Estimation Related Publication
Stars: ✭ 828 (+300%)
Mutual labels:  motion-planning
Cleanit
Open-source Autonomy Software in Rust-lang with gRPC for the Roomba series robot vacuum cleaners. Under development.
Stars: ✭ 125 (-39.61%)
Mutual labels:  motion-planning
Ur5 ros Gazebo
Universal Robot (UR5) Pick and Place Simulation in ROS-Gazebo with a USB Cam and Vacuum Grippers
Stars: ✭ 211 (+1.93%)
Mutual labels:  motion-planning
Rrt Algorithms
n-dimensional RRT, RRT* (RRT-Star)
Stars: ✭ 195 (-5.8%)
Mutual labels:  motion-planning
Am traj
Alternating Minimization Based Trajectory Generation for Quadrotor Aggressive Flight
Stars: ✭ 142 (-31.4%)
Mutual labels:  motion-planning

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

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 [email protected].

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].