crocoddyl  by loco-3d

Optimal control library for robot control under contact sequence

created 6 years ago
1,032 stars

Top 37.0% on sourcepulse

GitHubView on GitHub
Project Summary

Crocoddyl is an open-source C++ library with Python bindings for optimal control of robotic systems, particularly those involving contact sequences. It targets researchers and engineers in robotics and control theory, offering efficient trajectory optimization and feedback gain computation.

How It Works

Crocoddyl leverages novel Differential Dynamic Programming (DDP) algorithms for efficient computation. It integrates tightly with the Pinocchio library for fast, analytical derivatives of robot dynamics, utilizing differential geometry concepts. The framework supports various integrators, dynamics models, cost functions, constraints, and offers both numerical and automatic differentiation (via CppAD).

Quick Start & Requirements

  • Installation:
    • Conda: conda install crocoddyl -c conda-forge
    • Pip: pip install --user crocoddyl
    • Nix: nix run github:loco-3d/crocoddyl or add to a flake.
    • ROS: Clone into a catkin workspace and compile.
    • Source: Requires Pinocchio, Eigen, eigenpy, Boost. Optional: OpenMP, CppADCodeGen, Ipopt, example-robot-data, visualization tools (Gepetto, Meshcat, RViz), jupyter, matplotlib.
  • Documentation: Doxygen docs available, with example Jupyter notebooks provided.

Highlighted Details

  • Supports multiple optimal control solvers including DDP, FDDP, BoxFDDP, and Ipopt.
  • Features analytical and sparse derivatives through Pinocchio.
  • Offers multi-threading support via OpenMP and automatic code generation via CppADCodeGen.
  • Includes various visualization options for ROS, Gepetto, and Meshcat.

Maintenance & Community

The project is managed by a steering committee including Carlos Mastalli and Nicolas Mansard. Development is supported by EU MEMMO and RoboCom++ projects, and maintained by teams at Heriot-Watt University, LAAS-CNRS, and INRIA.

Licensing & Compatibility

The library is distributed under a permissive license, allowing for commercial use and integration with closed-source projects.

Limitations & Caveats

The README mentions a devel branch for current developments, suggesting potential instability or breaking changes compared to a stable release. Specific installation instructions for Debian/Ubuntu via robotpkg require manual environment variable configuration.

Health Check
Last commit

5 days ago

Responsiveness

1 day

Pull Requests (30d)
6
Issues (30d)
1
Star History
80 stars in the last 90 days

Explore Similar Projects

Feedback? Help us improve.