A differentiable rigid-body physics engine built on JAX for robot control, co-design and robot learning.
stack-of-tasks/pinocchio
A fast, header-only C++ library with Python bindings for rigid body dynamics, kinematics and their analytical derivatives, used in robotics.
- Stars
- 3,853
- Forks
- 591
- Open issues
- 104
- Last commit
- yesterday
What is it?
Pinocchio is a C++ library for rigid body dynamics of poly-articulated systems such as robot arms and humanoids. It implements forward and inverse kinematics and dynamics, centroidal dynamics, and the analytical derivatives of these algorithms, which are useful for gradient-based optimization, control and learning. It is built on Eigen for linear algebra and coal for collision detection, and it parses robot descriptions in URDF, SDF, MJCF and SRDF formats.
The library is header-only and implemented as a C++ template library, and it ships a Python interface that can be installed with Conda or pip. It also supports closed-loop mechanisms, frictional contact solvers, constrained dynamics, and multiple-precision arithmetic via MPFR. Automatic differentiation is available through CppAD and CasADi.
Pinocchio is developed by the Willow team at Inria and is used as a base by projects such as Crocoddyl, Aligator and the Humanoid Path Planner. It was designed for robotics but can also be applied in biomechanics, computer graphics and vision.
Key features
- 01Forward and inverse dynamics with analytical derivatives
- 02Centroidal dynamics and kinematic and dynamic regressors
- 03Closed-loop mechanism and frictional contact solvers
- 04Parses URDF, SDF, MJCF and SRDF robot descriptions
- 05Python bindings installable via Conda or pip
- 06Header-only C++ template library with Eigen and coal
Use cases
- Computing dynamics and gradients for robot control and trajectory optimization
- Prototyping robot algorithms in Python before moving to C++
- System identification using kinematic and dynamic regressors
- Building motion planning or whole-body control tools on top of a rigid body dynamics core
Quick start
- 1
Install Pinocchio via Conda from conda-forge
conda install pinocchio -c conda-forge - 2
Or install the Python bindings via pip (Linux only)
pip install pin - 3
Or run the Docker image
docker run --rm -it ghcr.io/stack-of-tasks/pinocchio:devel
Things to know
- The pip package is currently only available on Linux.
- The devel branch only contains the latest release and receives new pull requests, so it may change frequently.
In collections
Topics
FAQ
- What is pinocchio?
- A fast, header-only C++ library with Python bindings for rigid body dynamics, kinematics and their analytical derivatives, used in robotics. Pinocchio is a C++ library for rigid body dynamics of poly-articulated systems such as robot arms and humanoids. It implements forward and inverse kinematics and dynamics, centroidal dynamics, and the analytical derivatives of these algorithms, which are useful for gradient-based optimization, control and learning. It is built on Eigen for linear algebra and coal for collision detection, and it parses robot descriptions in URDF, SDF, MJCF and SRDF formats.
- Is pinocchio free to use? What license does it have?
- pinocchio is open source under the BSD-2-Clause license. Check the license terms before using it in commercial products.
- Is pinocchio still maintained?
- Actively maintained. The last commit to pinocchio was on Nov 6, 2026.
- What can I use pinocchio for?
- Computing dynamics and gradients for robot control and trajectory optimization Prototyping robot algorithms in Python before moving to C++ System identification using kinematic and dynamic regressors Building motion planning or whole-body control tools on top of a rigid body dynamics core
- How do I install pinocchio?
- Install Pinocchio via Conda from conda-forge: conda install pinocchio -c conda-forge Or install the Python bindings via pip (Linux only): pip install pin Or run the Docker image: docker run --rm -it ghcr.io/stack-of-tasks/pinocchio:devel
- Where can I get pinocchio?
- The source code and installation instructions are on GitHub: https://github.com/stack-of-tasks/pinocchio
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A plugin and skill set that lets AI coding agents generate, check and fabricate CAD models from plain-language requests.
A pure-Python library for robot kinematics and dynamics built on JAX, with JIT compilation and autodiff for fast controller design.
Bullet Physics SDK, a C++ library for real-time collision detection and multi-physics simulation used in games, VR, robotics and machine learning.
MindSpore is an open source deep learning training and inference framework for mobile, edge and cloud scenarios, with native support for Huawei Ascend AI processors.
A fast, ergonomic N-dimensional tensor library in Nim with CPU, CUDA and OpenCL backends, aimed at numerical computing and deep learning.