mc_rtc::Configuration
設定本ガイドでは、mc_rtcその他のJRL/LIRMMソフトウェアに対応した環境を作成する方法について説明します。
本ガイド内のスクリーンショットは、Blender 2.78から取り込んだものですが、最近のバージョンのBlenderでも内容は同じです。
BlenderをUbuntuシステムにインストールする場合、Blenderの機能をフル活用できるように、Thomas SchiexのPPA を使用することを推奨します。特に、リポジトリ版のBlenderでは、COLLADA形式ファイル(.dae
ファイル)のインポートはサポートされていません。
robot_script
は、Blenderスクリプトとシェルスクリプトの集まりです。本ガイドでは、これを使用して、完全に機能するmc_rtc環境をBlenderファイルから作成します。
mkdir -p $HOME/.config/blender/$(blender -v|awk '{print $2}')/scripts/addons
robot_script
をコピーしてrobot_script
フォルダーに移動します。cp -r blender_addons/io_qconvex/ $HOME/.config/blender/$(blender -v|awk '{print $2}')/scripts/addons
手順1で、アドオンを格納する空のフォルダーが作成され、手順3で、アドオンがそのフォルダーにコピーされます。
ここでは、3次元環境のモデリングについて詳しく説明します。このページの残りの部分では、こちらで用意されているモデルを使用して作業します。このモデルをBlenderで開くと、”ground”(地面)という名前の大きな平面が表示され、その中央に”pole”(柱)という名前の円筒が垂直に立っているのが見えます。
モデルのメッシュに単一変数のスケールが設定されていることを確認してください。これを設定するには、シーン内の各オブジェクトにスケールパラメーターを適用します。
このセクションでは、2つの面を作成します。まず、面を作成する基本について説明し、次に、向きに関する重要な問題について説明します。
はじめに、地面に相当する面を作成します。
お疲れ様でした。これで、最初の面が作成されました。
この手順については、こちらの動画を参照してください。
mc_rtc内のほとんどの環境では、以下の命名規則に基づいて名前が付けられています。ユーザーが名前を付ける場合もこの規則に従うことを推奨します。
2番目の面として、地面のいずれかの側面に対応する面を作成します。これは実用的な意味はありませんが、この手順を通じて、向きの重要性と向きの変更方法について説明します。まず、前述の手順を再度実行しますが、今度は、地面メッシュの側面を使用して”GroundSide”面を作成します。
環境を作成したとき、この側面が期待した方向を向いていないことに気付くと思います。これは、オブジェクトのローカルフレームが正しくないためです。Z軸(Blenderでは青で表示)を面の法線と一致させる必要があります。
お疲れ様でした。これで、向きに関する問題が解決されました。
この手順については、こちらの動画 を参照してください。
平面の作成に関する注意事項
自分が設計した面と他の面との間に接触面を作成すると、自分が設計した面上の点に接触力が発生します。これは、面に含まれる点の数が多いほど、より多くの変数が問題に追加されることを意味します。そのため、面をできるだけシンプルに設計するように(すなわち、単一の四角形で構成するように)してください。特に、ロボットの表面を設計する際は、この点に注意してください。
また、面を構成する点は、同一平面上になければなりません。そうでない場合、環境を正しく生成できません。
このセクションでは、単一の円筒面を作成します。この場合も、平面の場合と同じく向きの問題が発生します。ここでは、Z軸を円筒の円筒軸とし、X軸を円筒の極軸とします。
お疲れ様でした。これで、最初の円筒面が作成されました。
この手順については、こちらの動画を参照してください。
デフォルトでは、Blenderのカスタムプロパティの値は[0, 1]の範囲に制限されています。円筒の”width”プロパティを正しく設定しないと問題が発生する可能性があるため、このプロパティを設定する際は注意してください。
衝突メッシュを追加するには、新しいメッシュを追加し、”hull”という名前の空のプロパティを追加します。
モデル内の各ボディについては、生成スクリプトによって凸メッシュが作成されるため、それらについてはメッシュを作成する必要はありません。
次の手順に移る前に、こちらからチュートリアルの結果を入手できます。
robot_scriptフォルダーに移動し、以下のようにdo_all.shスクリプトを実行します。
./do_all.sh my_file.blend /path/to/ros/package env_name package_name
mc_env_description
パッケージに環境を追加する場合は、package_name(パッケージ名)を省略しても構いません。
表面の可視化に関するチュートリアルを参照してください。
Blenderプロジェクト内で、面オブジェクトの原点が意図したとおりに設定されているか確認してください。
Blenderプロジェクト内で、面の法線が正しい方向を向いているか確認してください。オブジェクトのローカルフレームが表示されているか確認してください。
ロボットに面を追加するには、環境作成時と同じ手順を実行します。ただし、この場合は面を追加したいロボットのボディが環境モデルとなります。さらに、一時ディレクトリ内に「環境」を作成し、生成されたRSDFファイルを元のロボット記述フォルダーで使用します。