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

sample4a 

11 月12、13日とKIT推薦試験の面接委員として静岡へいってまいりました。私が所属しているロボティクス学科は昨年、志願者71名だったのに 対し、今年は80名と増加していますので何よりです。KITの夢考房では学部1年生からロボット開発に参加できるので、ロボットマニアにはたまらないとこ ろ だと思います。

 さて、ODE (Open Dynamics Engine)講座の第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はここにあります。この例ではジョイントのずれを修正しないので図のようにバラバラ事件が発生します。

では、また次回。

コメントを残す

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