Tools
Pinocchio (剛体動力学ライブラリ)
URDF を読んで RNEA・重力項・慣性行列・同定用回帰行列・解析的微分を計算する C++/Python ライブラリ
要点
Pinocchio は URDF から逆動力学・重力項・同定用回帰行列を直接計算できる剛体動力学ライブラリ。接触シミュレータではなく計算カーネル。
C++ 製 + Python バインディング。INRIA/LAAS 開発、BSD ライセンス。 Featherstone の spatial algebra ベースで同種ライブラリ中最速級。
数字 / コマンド
pip install pinimport 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 によるブラウザ可視化
関連
最終更新: