notes
Tools

Pinocchio (剛体動力学ライブラリ)

URDF を読んで RNEA・重力項・慣性行列・同定用回帰行列・解析的微分を計算する C++/Python ライブラリ

要点#

Pinocchio は URDF から逆動力学・重力項・同定用回帰行列を直接計算できる剛体動力学ライブラリ。接触シミュレータではなく計算カーネル。

C++ 製 + Python バインディング。INRIA/LAAS 開発、BSD ライセンス。 Featherstone の spatial algebra ベースで同種ライブラリ中最速級。

数字 / コマンド#

pip install pin
import pinocchio as pin
model = pin.buildModelFromUrdf("robot.urdf")
data = model.createData()

tau_g = pin.computeGeneralizedGravity(model, data, q)   # 重力補償
tau   = pin.rnea(model, data, q, v, a)                  # 逆動力学 (FF)
M     = pin.crba(model, data, q)                        # 慣性行列
Y     = pin.computeJointTorqueRegressor(model, data, q, v, a)  # 同定用回帰行列

同定は τ = Y(q,q̇,q̈)·θ (θ: リンクごと 10 個の慣性パラメータ) の形にして 最小二乗で θ を推定する。

主な機能#

  • モデル読み込み: URDF。v3 から MJCF・SDF も対応
  • 運動学: FK、フレーム配置、ヤコビアン、重心、centroidal dynamics
  • 動力学: RNEA (逆動力学)、ABA (順動力学)、CRBA (慣性行列)、 nonLinearEffects (C(q,q̇)q̇ + g)
  • 同定: computeJointTorqueRegressor、computeStaticRegressor
  • 解析的微分: ∂τ/∂q 等を数値微分なしで計算。MPC・軌道最適化向けの看板機能。 CasADi / CppAD 連携、コード生成
  • 衝突・距離: hpp-fcl (現 coal) 連携

やらないこと#

  • 接触解決・積分ループ主体のシミュレーション (MuJoCo の領分)
  • センサ・アクチュエータのモデル化

エコシステム#

  • Crocoddyl: Pinocchio ベースの最適制御・MPC ソルバ
  • TSID: タスク空間逆動力学
  • meshcat によるブラウザ可視化

関連#

最終更新:

On this page