libpinocchio
A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
What it is and what it does
libpinocchio is a Python-wrapped C++ library for computing rigid body dynamics efficiently. It implements state-of-the-art algorithms for forward and inverse kinematics, forward and inverse dynamics, centroidal dynamics, and their analytical derivatives. The library handles complex scenarios like closed-loop mechanisms and frictional contact problems, making it suitable for robot control, trajectory optimization, and physics-based simulation.
The package is built on Eigen for linear algebra and coal for collision detection. It supports multiple robot model formats (URDF, SDF, MJCF, SRDF) and can be used across robotics, biomechanics, computer graphics, and vision applications. Analytical derivatives enable gradient-based optimization and learning. The library is actively developed and powers several robotics frameworks.
Use it for:
- Compute forward and inverse kinematics for robot manipulators to plan and execute motion.
- Solve trajectory optimization problems for robot control using analytical derivatives of dynamics.
- Simulate contact-rich manipulation tasks with frictional contact solvers.
- Perform system identification and parameter estimation using kinematic and dynamic regressors.
- Prototype robot learning algorithms in Python before deploying to production systems.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
libpinocchio provides efficient rigid body dynamics algorithms and their analytical derivatives for robotics, biomechanics, and physics simulation, with support for closed-loop mechanisms, contact solving, and multiple model formats.
Yes, with conditions. libpinocchio is actively maintained, permissively licensed (BSD-3-Clause), and widely used in robotics research. Install if you need rigid body dynamics computation for robotics or physics simulation. Caveat: medium install friction from compiled dependencies; on non-Linux, use conda instead of pip. No known security vulnerabilities.
Install
libpinocchio on PyPI
pip
pip install libpinocchiouv
uv add libpinocchiopoetry
poetry add libpinocchioInstalling libpinocchio
Before you install
Medium install friction due to compiled C++ dependencies (cmeel, cmeel-boost, cmeel-urdfdom, libcoal). Pre-built wheels available for macOS (Intel and ARM) and Linux x86_64/aarch64. Actively maintained with recent releases.
License in practice
BSD-3-Clause permissive license allows use in commercial and proprietary projects with minimal restrictions, requiring only license and copyright notice retention.
Quickstart
pip install libpinocchio
import libpinocchio
model = buildModelFromUrdf('robot.urdf')
data = model.createData()
forwardKinematics(model, data, q)
Requires Python >=3.9. On non-Linux platforms, installation via conda is recommended; pip currently supports Linux only.
Verify before relying
- Whether the Python interface fully exposes all C++ algorithms mentioned in the description or if some features require direct C++ usage.
- Performance characteristics and scalability limits for systems with many degrees of freedom.
- Availability and maturity of automatic differentiation support via CppAD or CasADi integration.
- Exact API and usage patterns for the Python interface to libpinocchio.
Package facts
| License | BSD-3-Clause (permissive) |
| Python support | supports the current Python release (>=3.9) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | 4 — cmeel, cmeel-boost, cmeel-urdfdom, libcoal |
| Maintenance | actively maintained — 37 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 589,544/month — #5,860 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: libpinocchio-4.1.0-0-py3-none-macosx_10_9_x86_64.whl; libpinocchio-4.1.0-0-py3-none-macosx_11_0_arm64.whl; libpinocchio-4.1.0-0-py3-none-manylinux_2_28_aarch64.whl; libpinocchio-4.1.0-0-py3-none-manylinux_2_28_x86_64.whl
Tags
More Scientific/Engineering packages
NumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
pandaspandas provides fast, flexible data structures…
permissive · top 100 on PyPI
scipyscipy provides numerical algorithms for…
permissive · top 100 on PyPI
scikit-learnscikit-learn provides a comprehensive Python…
permissive · top 1,000 on PyPI
dilldill extends Python's pickle module to…
permissive · top 1,000 on PyPI
multiprocessMultiprocess is an enhanced fork of Python's…
permissive · top 1,000 on PyPI
pinPython interface to a C++ rigid-body dynamics…
permissive · top 5,000 on PyPI
pybulletPyBullet provides physics simulation, robotics…
permissive · top 15,000 on PyPI
drakeDrake is a robotics toolbox for analyzing robot…
permissive · top 15,000 on PyPI
dynamixel-sdkProvides Python bindings for ROBOTIS Dynamixel…
permissive · top 15,000 on PyPI
pymunkPymunk is a 2D rigid body physics simulation…
permissive · top 15,000 on PyPI
robot_descriptionsDownloads and caches open-source robot…
permissive · top 15,000 on PyPI
mplibMPlib provides motion planning algorithms for…
permissive · top 15,000 on PyPI
pin-pinkPink solves differential inverse kinematics for…
permissive · top 15,000 on PyPI
coal-libraryCoal provides collision detection, distance…
permissive · top 15,000 on PyPI
toppraComputes time-optimal path parameterization for…
permissive · top 15,000 on PyPI