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

質量行列

別名:Mass matrix、inertia matrix、factorisation、factorization、Cholesky、LDL、慣性行列、行列分解、コレスキー分解、LDL分解

各関節を加速させるのが、それにつながったものすべてを含めてどれだけ大変かを表す表です。物理計算では毎ステップこれを分解する必要があります。

1つの物体なら、ニュートンの第2法則は「力 = 質量 × 加速度」です。つながった部品でできた体では、1つの関節を押すとそれにつながったものすべてが動くので、「質量」は表になります。これが質量行列 MM で、自由度ごとに1行1列を持ちます。

M(q) q¨=τ+other forcesM(q)\,\ddot q = \tau + \text{other forces}

ここで qq は関節角、q¨\ddot q はその加速度、τ\tau は関節トルクです。要素 MijM_{ij} は、関節 jj を押したときに関節 ii がどれだけ抵抗するか、あるいは動かされるかを表します。これは姿勢によって変わります。腕を伸ばしているときは、たたんでいるときより肩で回しにくくなります。

加速度を求めるには、シミュレータは物理ステップごとにこの方程式を解かなければなりません。そのために MM を、解くのが速い単純な三角形の表に分解します(M=L⊤DLM = L^\top D L)。木の形をした体では、ほとんどの要素がゼロなので、分解は木の先端から根元へ向かって、1段ずつ進められます。

このプロジェクトでは

筋肉の体は、1本の木の中に89の自由度を持っています。骨盤、背骨、首、腕、脚、そして指の関節すべてです。GPU上のMuJoCo Warpには、64までのブロック向けの速い分解がありますが、筋肉の体はそれより遅い汎用の分解に回され、GPUの時間の53%を占めていました。レンタルGPUで学習するでは、これを世界のコピー1つにつき1回の起動に置き換えました(8,192コピーで1ステップあたり38.6 msから8.9 msへ、物理全体で+28%)。シンプルな体は自由度が43なので、速い経路に収まります。

関連用語

この用語が出てくる記事

← すべての用語