11 月 29
ゲーム開発やロボットの研究者にも使われているオープンソースの物理計算エンジンODE(Open Dynamics Engine、オープン ダイナミクスエンジン)を学ぶODE講座の第10回目です。
さて、今回もODEに特有なパラメータの説明をします。ODEではERPの他にCFM(Constraint Force Mixing)というパラメータがあります。日本語には訳しづらいですが直訳すると拘束力混合パラメータとなります。
拘束には 大きく分けてハード(hard)拘束とソフト(soft)拘束の2種類あります。ハード拘束では拘束条件を律儀に必ず守らなければいけません。一方、ソフト拘束は融通がきいて多少のずれはOKなのです。一般的にはハード拘束が多いのですが、ODEではCFMを導入することによりソフト拘束となります。CFMが0のときはハード拘束、大きくなるに従いソフト拘束になります。
また、ODEでは拘束とジョイントを同じ意味で使う場合が多いのでジョイントを例に挙げると、ハード拘束ではジョイントの拘束条件を一切破ってはいけません。 つまり、ジョイントの回転軸の位置や向きが結合されている2つのリンクが少しもずれてはいけません。一方、ソフト拘束では多少関節中心や軸の向きがずれてもよいので物理的には生物のように柔らかい関節をシミュレート可能です。
なお、前回のERPと今回のCFMを 使うことによってバネ・ダンパシステムのシミュレートも可能です。ヒューマノイドのシミュレーションで地面と足の接触をバネ・ダンパモデルとする場合が多いので、そういったシミュレーションもODEで十分可能です。詳しくはODEマニュアルをご覧ください。
次に、CFMの具体的な使い方を説明します。
CFMを設定する場合は以下のAPIを使います。なお、これはグローバルに働き全てのジョイントに作用します。単精度の場合のCFMのデフォルト値は10E-5、倍精度の場合は10E-10となります。
- dWorldSetCFM(dWorldID, dReal cfm) ここで、dWorldIDはワールドのID番号、cfmはCFMの値。
投稿:06年11月29日

