用語集 · 物理シミュレーション

物理シミュレーション

別名:Physics simulation、physics engine、simulator、rigid-body dynamics、sim-to-real、物理エンジン、シミュレータ、剛体力学、Sim2Real、シムトゥリアル

物体が力を受けてどう動くかを、小さな時間刻みで1ステップずつ計算し、仮想の体を本物のように振る舞わせることです。

物理エンジンは、世界の状態(そこにあるすべてのものの位置と速度)を保持し、それを小さな時間刻みで何度も進めていきます。各ステップでは次のことをします。

  1. 衝突検出:どの形どうしが触れているかを見つけます(衝突形状を参照)。
  2. 力:重力、モーターのトルク、ばね、外からの押しを集めます。
  3. 接触:物体どうしがすり抜けないように、各接触点での力を求めます(ソフトコンタクトを参照)。
  4. 積分:合力を使って速度を、続いて位置を更新します。

積分のステップでは、ニュートンの第2法則 F=maF = m a を使います。関節でつながった体では、これは行列の形になります。qq はすべての関節角です。

M(q) q¨+c(q,q˙)=τ+J⊤fM(q)\,\ddot{q} + c(q, \dot{q}) = \tau + J^\top f

MM は質量行列、cc は重力と運動から生じる力をまとめたもの、τ\tau はモーターのトルク、J⊤fJ^\top f は接触力を関節に写したものです。最も単純な積分法では、時間刻み hh で次のように進めます。

q˙t+h=q˙t+h q¨t,qt+h=qt+h q˙t+h\dot{q}_{t+h} = \dot{q}_t + h\,\ddot{q}_t, \qquad q_{t+h} = q_t + h\,\dot{q}_{t+h}

なぜシミュレーションで学習するのか

  • 安全:シミュレーションのファイターなら何千回倒れてもかまいません。
  • 速い:たくさんのコピーを並列に、実時間よりずっと速く走らせられます。
  • 測れる:あらゆる力と位置が正確に分かります。

Sim-to-real

落とし穴は、シミュレーションが現実とまったく同じにはならないことです。方策は、現実には存在しないシミュレータのクセを悪用することがあります。方策を実際のロボットに移すsim-to-real転移には、ふつう追加の工夫が必要です。たとえば、方策が正確な値に頼れないように、学習中に質量や摩擦をランダムに変えます。

このプロジェクトでは

私たちはMuJoCoを使っています。このファイターは実際のロボットを目指してはいないので、sim-to-realは目標ではありません。大事なのは、コーチが動きを評価できるくらい、物理が人間に近いことです。

関連用語

この用語が出てくる記事

← すべての用語