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 等多種視覺化工具整合。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案