stack-of-tasks/pinocchio

A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives

解决的问题

Pinocchio 是一个高性能的 C++ 库,专为处理刚体多体动力学所需的复杂数学计算而设计。它提供了模拟和控制多关节系统(如机械臂或人形机器人)所需的工具,解决了正向与逆向动力学、运动学以及摩擦接触问题等方面的挑战。

工作原理

基于 Eigen 进行线性代数运算,并使用 coal 进行碰撞检测,Pinocchio 实现了最先进的刚体算法(如递归牛顿-欧拉算法和关节体算法)。通过利用 C++ 模板和缓存友好的设计,最大化 CPU 性能。该库还提供了这些算法的解析导数,使开发者能够使用基于梯度的优化和学习技术。支持多种机器人描述格式,包括 URDF、SDF、MJCF 和 SRDF。

适用人群

主要面向从事仿真、控制和运动规划的机器人研究人员和工程师。也适用于生物力学、计算机图形学和计算机视觉等领域,这些领域需要多体物理模拟。

主要亮点

  • 高性能:一个经过速度和缓存效率优化的 C++ 模板库。
  • 解析导数:提供主要算法的导数,支持基于梯度的控制与学习。
  • 多功能动力学:支持闭环机构、质心动力学以及最先进的摩擦接触求解器。
  • 广泛兼容性:包含 Python 绑定以用于原型设计,并与 ROS、Conda 以及 Meshcat、RViz 等多种可视化工具集成。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目