Package: crocoddyl
IntroductionCrocoddylis an optimal control library for robot control under contact sequence. Its solvers are based on novel and efficient differential dynamic programming (DDP) algorithms.Crocoddylcomputes optimal trajectories and feedback gains. It usesPinocchiofor fast computation of robot dynamics and analytical derivatives.If you want to learn more aboutCrocoddyland its solvers, we suggest reading[1][2][3]and visitingPUBLICATIONS.md. If you want to follow the current developments and contribute, please directly refer to thedevel branch.:crocodile: Crocoddyl featuresCrocoddylis versatile:Various optimal control solvers (DDP, FDDP, BoxFDDP, Ipopt, etc)Analytical and sparse derivatives viaPinocchioDifferential geometry support leveragingPinocchioVarious integrators, dynamics, costs and constraintsNumerical differentiation supportAutomatic differentiation support viaCppADCrocoddylis efficient and flexible:Cache friendlyMulti-threading support viaOpenMPPython bindings (including abstractions) viaBoost PythonC++14/17/20 compliantExtensively testedAutomatic code generation support viaCppADCodeGen:penguin: InstallationCrocoddylcan 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: FromJust run the following command in the terminal:condainstallcrocoddyl-cconda-forgeConda installation supports.:snake: FromJust run the following command in the terminal:pipinstall--usercrocoddyl:turtle: With ROSJust clone it (with--recursive) into a catkin workspace and compile it.:package: From Debian / Ubuntu packages, withrobotpkgIf you have never added robotpkg's software repository,do it now:sudotee/etc/apt/sources.list.d/robotpkg.list<<EOFdeb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -sc) robotpkgEOFcurlhttp://robotpkg.openrobots.org/packages/debian/robotpkg.key|sudoapt-keyadd-
sudoaptupdateInstall Crocoddyl and its Python bindings:sudoaptinstallrobotpkg-py3\*-crocoddylConfigure your environment variables:exportPATH=/opt/openrobots/bin:$PATHexportPKG_CONFIG_PATH=/opt/openrobots/lib/pkgconfig:$PKG_CONFIG_PATHexportLD_LIBRARY_PATH=/opt/openrobots/lib:$LD_LIBRARY_PATHexportPYTHONPATH=/opt/openrobots/lib/python3.10/site-packages:$PYTHONPATH:file_folder: From sourceInstall Crocoddyl's mandatory dependencies:pinocchioEigeneigenpyBoost(optional) Install Crocoddyl's optional dependenciesOpenMP(for multi-threading support)CppADCogen(for code-generation support)Ipopt(for Ipopt support)example-robot-data(for robotic examples, install Python loaders)gepetto-viewer-corba(for display)meshcat-python(for display)jupyter(for notebooks)matplotlib(for plotting)Clone it (with --recursive), create a build directory inside, and:cmake..&&make&&makeinstall:mag: DocumentationCrocoddyl's Doxygen documentation is availablehere. Alternatively, you can also check out the Jupyter notebooks. Start in the following order.examples/notebooks/unicycle_towards_origin.ipynbexamples/notebooks/cartpole_swing_up.ipynbexamples/notebooks/arm_manipulation.ipynbexamples/notebooks/whole_body_manipulation.ipynbexamples/notebooks/bipedal_walking.ipynbexamples/notebooks/introduction_to_crocoddyl.ipynbMoreover, after installation, you could run the examples as follows:python-mcrocoddyl.examples.quadrupedal_gaits"display""plot"# enable display and plotor run examples, unit tests and benchmarks from your build directory ascdbuild
maketestmake-sexamples-quadrupedal_gaitsINPUT="display plot"# enable display and plotmake-sbenchmarks-cpp-quadrupedal_gaitsINPUT="100 walk"# number of trials ; type of gaitwhere it is possible to enable display and/or plots generated by our examples using the environment variables:exportCROCODDYL_DISPLAY=1exportCROCODDYL_PLOT=1:telescope: Citing CrocoddylTo citeCrocoddylin 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, Bilaland 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}}Please consider citing our selected publications and contributions described inPUBLICATIONS.md.Crocoddyl'scontributions extend beyond efficient software development. Please also consider citing the algorithm contributions of our different solvers and formulations:Feasibility-driven DDP (FDDP):[1]Control-limited feasibility-driven DDP (Box-FDDP):[2]Inverse-dynamics trajectory optimization and equality-constrained DDP solver (Intro solver):[3]Finally, please also consider citingPinocchio, which contributes to the efficient implementation of rigid body algorithms and their derivatives. For more details on how to cite Pinocchio visit:https://github.com/stack-of-tasks/pinocchio.:open_book:  Selected publications[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, 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, Autonomous Robots, 2022[3]C. Mastalli, S. P. Chhatoi, T. Corbères, S. Tonneau and S. Vijayakumar.Inverse-Dynamics MPC via Nullspace Resolution, IEEE Transactions on Robotics, 2023:computer:  Questions and IssuesYou have a question or an issue? Please open anew issue.:mag: Steering CommitteeCrocoddylis managed by a steering committee which meets every two weeks to discuss ongoing developments. The committee is led byCarlos Mastalli,Nicolas Mansard,Guilhem SaurelandJustin Carpentierare other members of the committee.:copyright: Credits:writing_hand: Written byCarlos Mastalli, Heriot-Watt University :uk: (project manager)Nicolas Mansard, LAAS-CNRS :fr:Rohan Budhiraja, LAAS-CNRS :fr: (alumnus):construction_worker: With contributions fromGuilhem Saurel, LAAS-CNRS :fr:Wolfgang Merkt, University of Oxford :uk:Justin Carpentier, INRIA :fr:Andrea Del Prete, Università degli Studi di Trento :it:Wilson Jallet, INRIA :fr:Maximilien Naveau, MPI :de:Josep Martí Saumell, IRI: CSIC-UPC :es:Bilal Hammoud, MPI :de:Julian Eßer, Fraunhofer :de::trophy: AcknowledgmentsCrocoddyldevelopment was supported by theEU MEMMO projectand theEU RoboCom++ project. It is maintained by theRobot Motor Intelligence (RoMI) Lab@ Heriot-Watt University, theGepetto team@ LAAS-CNRS, and theWillow team@ INRIA.