ロボットシミュレーションの環境設定

ロボットシミュレーションの環境設定

 ODEシミュレーションの基本的な環境は、「重力」「物体間の衝突状態」「刻み時間(ステップタイム)」となります。

 「重力」の設定はMainサブルーチン内にあるdWorldSetGravity (world,0,0,-0.5)で行います。もし現実世界の重力と同じ状態にしたいのならば、Z軸の負の方向に+9.8[m/s2]となりますので、dWorldSetGravity (world,0,0,-9.8)と設定してください。

 ここで、dWorldSetGravity (world,0,0,+9.8)と設定する(Z軸の正の方向に+9.8[m/s2])と物体が浮き上がりますし、dWorldSetGravity (world,+9.8,0,0)と設定する(X軸の正の方向に+9.8[m/s2])と物体が横に飛んでいきます。

 「物体間の衝突状態」は、「nearCallback」内で設定を行います。「demo_buggy.cpp」における衝突する物体とは、平らな地面である「static dGeomID ground」、障害物である「static dGeomID ground_box」、「static dSpaceID」で宣言されている物体の集合体「car_space」となります。なお、物体の集合体に関する説明は次節を参照してください。これら3者の衝突状態の設定は下記のようになっています。

contact[i].surface.mode = dContactSlip1 | dContactSlip2 |
dContactSoftERP | dContactSoftCFM | dContactApprox1;
contact[i].surface.mu = dInfinity;
contact[i].surface.slip1 = 0.1;
contact[i].surface.slip2 = 0.1;
contact[i].surface.soft_erp = 0.5;
contact[i].surface.soft_cfm = 0.3;

ロボットシミュレーションの肝!地面との接触設定

 上記の1~2行目にある「surface.mode」の設定は、値を指定する衝突状態の宣言をしています。ここに示されている以外にも多くありますので、詳しくはODEのユーザーガイドサイト(http://www.ode.org/ode-latest-userguide.html)の「7.3.7. Contact」にある表を参考にしてください。3~7行目では実際に値を指定します。

 「surface.mu」は摩擦係数、「surface.slip1」「surface.slip2」はFDS摩擦係数、「surface.soft_erp」と「surface.soft_cfm」は粘弾性質を示しています。

 ロボットシミュレーションをつくる上で最も重要な設定パラメータは、地面とロボットの衝突です。一般に地面は摩擦、粘弾性質で表現されるので、「surface.mu」「surface.soft_erp」「surface.soft_cfm」の3種類についての詳細を説明します。

 摩擦係数の値は0~∞で設定します。値が0だと全く摩擦のないすべり状態になります。∞(ODEでは「dInfinity」)だと全くすべりを生じない状態です。物理学などで一般の摩擦係数は1として扱われていますが、摩擦係数はロボットの行動に大きな影響を与えますので、試行錯誤しながら設定してみるとよいでしょう。

 粘弾性質はERP(Joint error and the error reduction parameterの略)、CFM(Soft constraint and constraint force mixingの略)で表現されています。これらパラメータは粘性係数と弾性係数から算出可能であり、Kを弾性係数・Cを粘性係数・DTを刻み時間とすると、ERPの算出式は以下の式(1)となり、CFMの算出式は以下の式(2)となります。

(1)ERPの算出式
   ERP=DT*K/(DT*K+C)

(2)CFMの算出式
   CFM=1/(DT*K+C)

 私の場合、Kは5000-10000(N/m)、Cは5000-10000(Ns/m)と比較的硬めの地面となるように設定しています。

この記事のキーワード :

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30