Pinocchio
CommonAn open-source rigid-body dynamics library for fast robot kinematics, dynamics, and their derivatives.
Pinocchio is an open-source C++ library, with a Python interface, developed mainly by the LAAS-CNRS and INRIA teams in France. It loads a robot model such as a URDF and efficiently computes forward and inverse kinematics, Jacobians, the recursive Newton-Euler algorithm (for inverse dynamics), the articulated-body algorithm (for forward dynamics), the mass matrix, and more — and it can also produce analytical derivatives of these quantities with respect to joint state. Those derivatives matter a lot for trajectory optimization and model predictive control, which is why libraries such as Crocoddyl, TSID, and Pink are all built on top of it. It's close to a standard tool for humanoid and quadruped whole-body control and MPC research; researchers working on learning-based methods also often use it for forward kinematics or IK-based retargeting.
ExampleLoad a G1 humanoid's URDF with Pinocchio and call forwardKinematics to get the wrist end-effector's pose in the world frame.
- Also called
- pin
- Related
- Rigid-Body Dynamics · Recursive Newton-Euler Algorithm · Articulated Body Algorithm · Crocoddyl (Contact RObot COntrol by Differential DYnamic programming Library) · TSID (Task Space Inverse Dynamics) · Pink
- Sources
- stack-of-tasks/pinocchio - GitHub