stack-of-tasks/pinocchio
A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
解决的问题
Pinocchio 是一个高性能的 C++ 库,专为处理多关节系统(如机器人)中刚体多体动力学所需的复杂数学计算而设计。它提供了计算机器人运动(运动学)和引起运动的力(动力学)所需的工具,同时保持足够的效率以进行实时控制和仿真。
运作方式
此库构建于 Eigen(用于线性代数)和 coal(用于碰撞检测)之上,实现了最先进的算法(如递归牛顿-欧拉算法和关节体算法)。它利用 C++ 模板和缓存友好的设计来最大化 CPU 性能。Pinocchio 也提供这些算法的解析导数,让开发者能够使用基于梯度的优化和学习技术。它支持多种机器人描述格式,包括 URDF、SDF、MJCF 和 SRDF。
适用对象
此库适用于从事运动规划、控制和基于物理的仿真的机器人研究人员和工程师。它也适用于需要刚体动力学的生物力学、计算机图形学和计算机视觉等领域。
重点特色
- 高性能:一个针对速度和缓存效率优化的 C++ 模板库。
- 解析导数:提供动力学算法的梯度,实现高级的优化和学习。
- 多样化动力学:支持正向/逆向动力学、质心动力学和闭环运动学机制。
- 高级接触求解:包含最先进的摩擦接触求解器和约束关节体算法。
- 广泛兼容性:提供 Python 接口用于原型开发,并集成 ROS、Conda 以及 Meshcat 和 RViz 等各种可视化工具。
相关
- 项目
- 项目
- 项目
- 项目
- 项目