ROS:自作のロボットを自作の仮想空間でナビゲーションしてみる(2/5)仮想空間作成


(1/5)ロボットを作成して動かしてみるに続いて、

Gazeboで仮想空間(World)を作成してみます。

といっても、SLAMを使った地図作成用なので単純な構造にします。

矩形を壁で囲って、まんなかに仕切りを入れたもの。

こんな感じです。1mの基準長を設定しておきます。

また、あまりに広くてレーザーレンジが届かないと地図作成が困難になるので、長辺は5〜6m以内にします。

机や椅子、キャビネットといった物品(アセット)は何も置きません。

ロボットのナビゲーション時に随時セットしたいので空けておきます。

また、物品(アセット)は自作もできますがデータセットとして用意されているものもあります、以下参照。

アセットの追加について

 


プラットフォームはJetson Nano(Jetpack 4.6)

ROSはMelodic Morenia

環境構築は以下を参照

Jetson Nano にROS1 (Melodic) をインストール(メモ)

 


Gazebo を起動

メニュー>EditからBuilding Edtor を選びます。

importをクリック

File をクリックして上記の間取り図…のようなものを読み込みます。

Next をクリック

設定しておいた1m基準の両端をクリックして基準長を取得してOKクリック。

Wall を選んで、壁をクリックしながら線をトレースします。とりあえずの終了は右クリック。

修正する場合は、線をクリックしてドラッグ。

終わったらメニュー>File −>Save As で名前をつけて保存しておきます(例:my_room、Location はデフォルトでいいです)。

再度、メニュー>File −>Exit Building Editoe で終了。

「一度抜けると、もう編集できないよ」というワーニングが出ますがかまわずExitします。

こんな感じです。

セルのサイズは1辺が1m。

これを仮想空間(World)として保存します。

この空間は、先に作成したmy_robotパッケージで使うので、保存先は作成済みの以下のフォルダーになります。

~/catkin_ws/src/my_robot/worlds

名前は my_room.world としておきます。

メニュー>File −>Save World As

 


World に手を加えてみる

上記のWorldの場合、ロボットが出現する原点が壁に近すぎるのでmy_roomの位置を変えてみます。

メニュの十字アイコンを選んで、roomオブジェクトをクリックすると座標軸が表示されます。これはオブジェクトを移動させる機能です。

緑の軸をドラッグするとy軸方向にroomが移動します。矢印は正の方向を示しているだけなので正負どっちにも移動できます。

こんな感じ。青いz軸に注目すると移動しているのが分かります。

その他、回転や拡大・縮小、アセットの追加などもできます。

終了したら再度保存しておきます。

 


Worldにmy_robotを表示

my_robotについては1/5をご参照ください。

 

launch フォルダーに移動してmy_robot.launchファイルを作ります。

1/5  を実行していた場合はもうすでにこのファイルは作成されているので、編集することになります。

以下を参照

4行目のworld_nameは、default ではなくvalue指定してmy_robotのパッケージ名でmy_room.worldをincludeしています。

 

起動してみます。

 

TELEOPERATIONで制御するとこんな感じ。

 

 

 

 

my_robotは衝突のパラメータも持っているので壁に接触すると衝撃で回転しています。

壁が十分に軽いか、車体が十分に重いなら、壁は固定していないので衝突時に動くと思います。

オブジェクトとして球や立方体、円柱がありますが、これらはある程度の質量を持っているようです。

車体(1.3kg)が衝突しても停止するわけではなく、押し相撲のように寄っていきます。おもしろいです。

 


Appendix

アセットを追加してみる

Gazebo のinsertで使うアセットは以下から追加できます。

3DGEMS

Gazebo Original

ダウンロードしたら解凍後、1個ずつ個別に以下に移動させておきます。modelsフォルダーが無ければ作っておきます。

~/.gazebo/models

 


 

Be the first to comment

Leave a Reply

Your email address will not be published.


*