notes
Tools

Isaac Sim のジョイントドライブ調整

振動・追従不良を damping/stiffness の試行錯誤でなく I_eq からの計算で解決する手順

要点#

ドライブゲインは調整せず計算で決める: K = I_eq·ω², D = 2ζ·I_eq·ω(ζ = 1.0)。

数字・コマンド#

PhysX の位置ドライブはバネダンパ: τ = K·(q_target − q) + D·(q̇_target − q̇)

  • 固有振動数 ω = √(K / I_eq) [rad/s]。必要帯域から選ぶ(アーム級で 100–200 rad/s)
  • 減衰比 ζ = D / (2√(K·I_eq))。ζ < 1 で振動、ζ = 1(臨界減衰)が振動しない最速
  • I_eq は PhysX の一般化質量行列の対角から実測する。USD の physics:JointEquivalentInertia 属性は実測と桁が違うことがあり使わない
  • I_eq は姿勢で変わるため、動作範囲を掃引して最大値で決める(小さい姿勢で決めると 他の姿勢で追従しない)
  • 減速機付きモータは armature(反射慣性)= ロータ慣性 × 減速比² を joint に設定する。 軽い軸ほど必須(慣性ほぼゼロの軸を強いバネで駆動するとジッタの典型源)
  • 数値安定条件の目安: ω·dt を小さく保つ。K を上げるなら物理レート(60→120–240 Hz) か solverPositionIterationCount(16–32)も上げる

症状からの切り分け#

症状原因対処
目標到達後にリンギングζ < 1D = 2√(K·I_eq) へ
静止時の微小ジッタω·dt 過大 / 慣性過小物理レート↑ / K↓ / armature 追加
目標に届かず遅れるmaxForce 飽和 / K 不足上限と K を実負荷から再計算
重力方向の定常偏差バネの静的たわみK↑ か重力補償トルクを feedforward
動き出しの段付き位置目標が階段状目標を毎物理ステップ供給 + 速度フィードフォワード

詳細な背景#

  • ゲイン以外に効くノブは 5 つ: 目標の与え方(速度 FF 込みの連続供給)、armature、 物理レートとソルバ反復、リンク慣性の正しさ(URDF のプレースホルダ慣性は I_eq を 狂わせる)、力上限。
  • 速度フィードフォワード: 位置目標だけだと D 項がブレーキとして働く。q̇_target を 与えると D 項が追従補助になり、同じゲインでも滑らかになる。
  • URDF インポータは全関節に一律の naturalFrequency/dampingRatio を付与することがある (例: ω=25, ζ=0.1 = 強い低減衰)。インポート後にゲインを上書きする工程を挟む。
  • mimic 関節(平行リンク等)はインポートで柔らかい拘束になりがちで、垂れ・振動源に なる。剛拘束化する。
  • 操舵軸(タイヤ接地)特有: 静止操舵はねじり摩擦(スクラブトルク)と戦うが、PhysX の 接触ねじり摩擦は既定 0(torsionalPatchRadius で有効化)。実機より軽く回る/ maxForce 不足で途中停止、の両方向のずれが出る。ホイールコライダはメッシュ凸包でなく 円筒/カプセルにする(多角形の角で引っかかる)。

関連#

  • /docs/control/pid — 減衰比・固有振動数の一般論
最終更新:

On this page