用語集 · 物理シミュレーション
物理シミュレーション
別名:Physics simulation、physics engine、simulator、rigid-body dynamics、sim-to-real、物理エンジン、シミュレータ、剛体力学、Sim2Real、シムトゥリアル
物体が力を受けてどう動くかを、小さな時間刻みで1ステップずつ計算し、仮想の体を本物のように振る舞わせることです。
物理エンジンは、世界の状態(そこにあるすべてのものの位置と速度)を保持し、それを小さな時間刻みで何度も進めていきます。各ステップでは次のことをします。
- 衝突検出:どの形どうしが触れているかを見つけます(衝突形状を参照)。
- 力:重力、モーターのトルク、ばね、外からの押しを集めます。
- 接触:物体どうしがすり抜けないように、各接触点での力を求めます(ソフトコンタクトを参照)。
- 積分:合力を使って速度を、続いて位置を更新します。
積分のステップでは、ニュートンの第2法則 を使います。関節でつながった体では、これは行列の形になります。 はすべての関節角です。
は質量行列、 は重力と運動から生じる力をまとめたもの、 はモーターのトルク、 は接触力を関節に写したものです。最も単純な積分法では、時間刻み で次のように進めます。
なぜシミュレーションで学習するのか
- 安全:シミュレーションのファイターなら何千回倒れてもかまいません。
- 速い:たくさんのコピーを並列に、実時間よりずっと速く走らせられます。
- 測れる:あらゆる力と位置が正確に分かります。
Sim-to-real
落とし穴は、シミュレーションが現実とまったく同じにはならないことです。方策は、現実には存在しないシミュレータのクセを悪用することがあります。方策を実際のロボットに移すsim-to-real転移には、ふつう追加の工夫が必要です。たとえば、方策が正確な値に頼れないように、学習中に質量や摩擦をランダムに変えます。
このプロジェクトでは
私たちはMuJoCoを使っています。このファイターは実際のロボットを目指してはいないので、sim-to-realは目標ではありません。大事なのは、コーチが動きを評価できるくらい、物理が人間に近いことです。