Pinocchio is a C++ library for efficient rigid body dynamics computation and analytical differentiation of dynamics algorithms.
The library solves the problem of computing dynamics, kinematics, and their derivatives for articulated mechanical systems. It implements state-of-the-art rigid body algorithms including the Recursive Newton-Euler Algorithm and the Articulated-Body Algorithm, with analytical derivatives built in rather than computed numerically. The tool handles closed-loop kinematic mechanisms and frictional contact problems, and enables gradient-based optimization and learning by providing exact derivatives of physics computations.
Pinocchio suits researchers and practitioners working on robot control, motion planning, and physics-based simulation who need both forward dynamics computations and their gradients. While originally designed for robotics, it applies to biomechanics, computer graphics, and vision applications. The library builds on Eigen for linear algebra and coal for collision detection, and provides a Python interface alongside its C++ core, making it accessible for rapid prototyping through standard package managers.
The project maintains active development with comprehensive documentation and online resources. Test coverage is tracked and reported publicly. The codebase uses pre-commit checks to maintain code quality standards across contributions.