Pinocchio
A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
Install / Use
/learn @stack-of-tasks/PinocchioREADME
Pinocchio instantiates the state-of-the-art Rigid Body Algorithms for poly-articulated systems based on revisited Roy Featherstone's algorithms. Besides, Pinocchio provides the analytical derivatives of the main Rigid-Body Algorithms, such as the Recursive Newton-Euler Algorithm or the Articulated-Body Algorithm.
Pinocchio was originally designed for robotics applications, but it can be used in other contexts (biomechanics, computer graphics, vision, etc.). It is built upon Eigen for linear algebra and FCL for collision detection. Pinocchio includes a Python interface for fast code prototyping, directly accessible through Conda.
Pinocchio is now at the heart of various robotics software as Crocoddyl, an open-source and efficient Differential Dynamic Programming solver for robotics, the Stack-of-Tasks, an open-source and versatile hierarchical controller framework, or the Humanoid Path Planner, open-source software for Motion and Manipulation Planning.
If you want to learn more about Pinocchio internal behaviors and main features, we invite you to read the related paper and the online documentation or DeepWiki.
If you want to dive into Pinocchio directly, only one single line is sufficient (assuming you have Conda):
<p align="center"> <strong> conda install pinocchio -c conda-forge </strong> </p>or via pip (currently only available on Linux):
<p align="center"> <strong> pip install pin </strong> </p>Table of contents
- Table of contents
- Pinocchio main features
- Documentation
- Examples
- Tutorials
- Pinocchio continuous integrations
- Performances
- Ongoing developments
- Installation
- Visualization
- Citing Pinocchio
- Questions and Issues
- Core-dev team
- Credits
- Open-source projects relying on Pinocchio
- Acknowledgments
Pinocchio main features
Pinocchio is fast:
- C++ template library,
- cache friendly,
- support custom scalar type.
Pinocchio is versatile, implementing basic and more advanced rigid body dynamics algorithms:
- forward kinematics and its analytical derivatives,
- forward/inverse dynamics and their analytical derivatives,
- centroidal dynamics and its analytical derivatives,
- computations of kinematic and dynamic regressors for system identification and more,
- full support of closed-loop mechanisms,
- state-of-the-art frictional contact solvers,
- low-complexity constrained articulated body algorithms,
- sparse constrained dynamics and its analytical derivatives,
- full support of multiple-precision floating-point (MPFR) in Python and C++,
- support of modern and open-source Automatic Differentiation frameworks like CppAD or CasADi,
- automatic code generation support is available via CppADCodeGen.
Pinocchio can support description formats:
- URDF format,
- SDF format,
- MJCF format,
- SRDF format,
- programmatically.
Pinocchio is flexible:
- header only,
- template instantiation,
- C++ 11/14/17/20/23 compliant.
Pinocchio is extensible. Pinocchio is multi-thread friendly. Pinocchio is reliable and extensively tested (unit tests, simulations, and real-world robotics applications). Pinocchio is supported and tested on Windows, Mac OS X, Unix, and Linux (see build status here).
Documentation
The online Pinocchio documentation of the last release is available here. A cheat sheet pdf with the main functions and algorithms can be found here.
Examples
In the examples directory, we provide some basic examples of using Pinocchio in Python. Additional examples introducing Pinocchio are also available in the documentation.
Tutorials
Pinocchio comes with a large bunch of tutorials aiming at introducing the basic tools for robot control. Tutorial and training documents are listed here. You can also consider the interactive Jupyter notebook set of tutorials developed by Nicolas Mansard and Yann de Mont-Marin.
Pinocchio continuous integrations
Pinocchio is constantly tested for several platforms and distributions, as reported below:
<p align="center"> <table class="center"> <!-- <tr> <td> Continuous Integration </td></tr>--> <tr><td> CI on ROS </td> <td><a href="https://github.com/stack-of-tasks/pinocchio/actions/workflows/ros_ci.yml"><img alt="ROS" src="https://github.com/stack-of-tasks/pinocchio/actions/workflows/ros_ci.yml/badge.svg?branch=devel" /></a></td> </tr><tr><td> CI on Linux via APT </td> <td><a href="https://github.com/stack-of-tasks/pinocchio/actions/workflows/linux.yml"><img alt="linux" src="https://github.com/stack-of-tasks/pinocchio/actions/workflows/linux.yml/badge.svg?branch=devel" /></a></td> </tr><tr><td> CI on macOS and Windows via Pixi </td> <td><a href="https://github.com/stack-of-tasks/pinocchio/actions/workflows/macos-linux-windows-pixi.yml"><img alt="mac" src="https://github.com/stack-of-tasks/pinocchio/actions/workflows/macos-linux-windows-pixi.yml/badge.svg?branch=devel" /></a></td> </tr><tr><td> CI on Linux via Robotpkg </td> <td><img src="https://gitlab.laas.fr/stack-of-tasks/pinocchio/badges/devel/pipeline.svg" alt="Pipeline Status"></td> </tr> </table> </p>Performances
Pinocchio exploits, at best, the sparsity induced by the kinematic tree of robotics systems. Thanks to modern programming language paradigms, Pinocchio can unroll most of the computations directly at compile time, allowing to achieve impressive performances for an extensive range of robots, as illustrated by the plot below, obtained on a standard laptop equipped with an Intel Core i7 CPU @ 2.4 GHz.
<p align="center"> <img src="https://raw.githubusercontent.com/stack-of-tasks/pinocchio/devel/doc/images/pinocchio-performances.png" width="600" alt="Pinocchio Logo" align="center"/> </p>For other benchmarks, and mainly the capacity of Pinocchio to exploit, at best, your CPU capacities using advanced code generation techniques, we refer to the technical paper. In addition, the introspection may also help you to understand and compare the performances of the modern rigid body dynamics libraries.
Ongoing developments
If you want to follow the current developments, you can refer to the devel branch. The [devel
Related Skills
node-connect
331.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
claude-opus-4-5-migration
81.5kMigrate prompts and code from Claude Sonnet 4.0, Sonnet 4.5, or Opus 4.1 to Opus 4.5
frontend-design
81.5kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
model-usage
331.2kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
