ODE講座9:ERP (ジョイント誤差修正パラメータ)

sample4a

ボジョレー・ヌーボーが11月16日に解禁になりましたが、金沢の人たちにとっては11月7日に解禁になったずわいガニや香箱ガニ解禁の方がうれしいニュースです。香箱ガニはずわいガニのメスで、大きさはオスの半分ほどしかありませんが、赤い卵やカニ味噌が超美味です。赤い宝石箱ともよばれています。それが近くのスーパーで数百円で購入できるのです。北陸は冬の間、天候に恵まれませんが、海からの贈り物がささやかな楽しみとなっています。

さて、 ゲーム開発やロボットの研究者にも使われているオープンソースの物理計算エンジンODE(Open Dynamics  Engine、オープン ダイナミクスエンジン)を学ぶODE講座の第9回目です。

今回はODEを使ううえで覚えておかなければならない パラメータERP (ジョイント誤差修正パラメータ、Error Reduction Parameter)について説明します。

ERPはジョイントの誤差を修正するパラメータです。シミュレーションを繰り返していくと、ジョイントの中心が計算誤差などでずれていきます。それを修正 するのがERPで0から1までの値をとります。0は誤差を全く修正しないのに対し、1は次のステップで誤差を0に修正します。推奨値は0.8から1となっ ていますが、規定値は0.2です。今までのサンプルプログラムでは設定していなかったのでERPは0.2として計算されています。ERPを1に設定するこ とはお勧めできません。ジョイントのずれは様々な近似計算のよる誤差のため完全に0にすることはできないのです。

ERPを設定する場合は以下のAPIを使います。なお、これはグローバルに働き全てのジョイントの誤差を修正します。

  • dWorldSetERP(dWorldID, dReal erp)
    ここで、dWorldIDはワールドのID番号、erpは0.0から1.0までの実数となります。

では、実習としてdWorldSetERP(world, 0.0);をsample4のdWorldSetGravityの下に挿入して実行してみてください。なお、dWorldSetERP(world,0.0)を追加し、 見やすいように視点を変更したsample4aはここにあります。この例ではジョイントのずれを修正しないので図のようにバラバラ事件が発生します。

では、また次回。

コメントを残す

メールアドレスが公開されることはありません。