LoginSignup
1
0

WSL2環境下で構築したOpen-RMFのRMF Demosにおいて、tinyRobotに配送させるものを検討してみた

Last updated at Posted at 2024-03-23

1. はじめに

[1]で公開されているRMF DemosのOffice Worldというシミュレーション環境ではtinyRobotというロボットがコーラ缶をピックアップして配送するということが以下の手順でできます。

terminal(1)
cd ~/rmf_ws
source ~/rmf_ws/install/setup.bash
ros2 launch rmf_demos_gz_classic office.launch.xml
terminal(2)
ros2 run rmf_demos_tasks dispatch_delivery -p pantry -ph coke_dispenser -d hardware_2 -dh coke_ingestor --use_sim_time

コーラの缶をピックアップして配送する様子をシミュレーションした際の動画を以下に示します。
(この機能の設定方法などは[2]の「Workcells」の項目に詳細に書かれておりますので、そちらをご参照ください。)

しかし配送シミュレーションをするのであれば、コーラの缶だけでなく他のものも運ばせたいなと考え、そのことに取り組んだことが本記事になります。

2. 実行環境

3. 方針

[3]のサイトで公開されているモデルをダウンロードして、RMF DemosのOffice Worldのコーラの缶と入れ替えます。そしてそのモデルをtinyRobotが問題なく搬送できるか、Office Worldのシミュレーション環境を使って試行します。

4. モデルをOffice Worldに反映する手順

モデルをシミュレーション環境に反映した手順は以下です。

  • [3]のサイトで適切なモデルを選んだら、以下の図で赤枠で囲んだボタンをクリックして、モデルをダウンロードします。(画面はCardboard box)
    スクリーンショット 2024-03-23 143903.png

  • ダウンロードしたファイルを解凍します。そのしてそのファイルをそのまま.gazebo\models(Open-RMFの環境構築したときにrmf_wsと同じ階層に.gazeboというファイルができていました。)の中にコピーします。

  • ~/rmf_demos_maps/maps/officeの中にある、office.building.yamlの以下の部分の「model_name」(デフォルトではOpenRobotics/Coke)と「name」(デフォルトではCoke)をダウンロードしてきたモデルの名前に変更します。

    office.building.yaml
     - {dispensable: false, model_name: OpenRobotics/Coke, name: Coke, static: false, x: 2098.6509999999998, y: 650.52300000000002, yaw: 1.5708, z: 1.0800000000000001}
    

5. 各モデルの検討

5.1 段ボールの場合(Cardboard box)

段ボールモデルのリンクから段ボールのモデルをダウンロードして、.gazeboの中に保存した後に、office.building.yamlの以下の部分をこのように修正しました。

office.building.yaml(修正前)
- {dispensable: false, model_name: OpenRobotics/Coke, name: Coke, static: false, x: 2098.6509999999998, y: 650.52300000000002, yaw: 1.5708, z: 1.0800000000000001}
office.building.yaml(修正後)
- {dispensable: false, model_name: cardboard_box, name: cardboard_box, static: false, x: 2098.6509999999998, y: 650.52300000000002, yaw: 1.5708, z: 1.0800000000000001}

そして、以下のコマンドを実行して、段ボールをピックアップして配送をしようとした結果を以下の動画に示します。(モデル以外は変えてませんので、指示はコーラ缶の時と同じで動きます。)

terminal(1)
cd ~/rmf_ws
source ~/rmf_ws/install/setup.bash
ros2 launch rmf_demos_gz_classic office.launch.xml
terminal(2)
ros2 run rmf_demos_tasks dispatch_delivery -p pantry -ph coke_dispenser -d hardware_2 -dh coke_ingestor --use_sim_time
👆をみるとピックアップはできるのですが、すぐに段ボールを落としてしまう挙動が見られました。

5.2 小包の場合(Google_Cardboard_Original_package)

小包のモデルのリンクから小包のモデルをダウンロードして、.gazeboの中に保存した後に、office.building.yamlの以下の部分をこのように修正しました。

office.building.yaml(修正前)
- {dispensable: false, model_name: OpenRobotics/Coke, name: Coke, static: false, x: 2098.6509999999998, y: 650.52300000000002, yaw: 1.5708, z: 1.0800000000000001}
office.building.yaml(修正後)
- {dispensable: false, model_name: Google_Cardboard_Original_package, name: Google_Cardboard_Original_package, static: false, x: 2098.6509999999998, y: 650.52300000000002, yaw: 1.5708, z: 1.0800000000000001}

そして、以下のコマンドを実行して、小包をピックアップして配送をしようとした結果を以下の動画に示します。(モデル以外は変えてませんので、指示はコーラ缶の時と同じで動きます。)

terminal(1)
cd ~/rmf_ws
source ~/rmf_ws/install/setup.bash
ros2 launch rmf_demos_gz_classic office.launch.xml
terminal(2)
ros2 run rmf_demos_tasks dispatch_delivery -p pantry -ph coke_dispenser -d hardware_2 -dh coke_ingestor --use_sim_time
👆をみるとピックアップは成功し途中までは運べるのですが、途中で小包を落とした上に、落とした小包を障害物として検知して、スタックしてしまいました。

5.3 その他

その他、以下のモデルの配送も試してみましたが、いずれもtinyRobotが途中で落としてしまい、問題なく運べるものはありませんでした。

6. まとめ

私が追加したモデルでtinyRobotにて運ぶものとしてしっくりくるものはありませんでした。そのためtinyRobotを用いた配送シミュレーションはコーラ缶を第1の配送対象物として今後環境構築に取り組んでいきたいと思います。またtinyRobotよりも大きいDeliveryRobotとかであれば今回追加したモデルを問題なく配送できるのかもしれません。この点についても今後取り組んでいきたいと思います。

参考記事やサイト

[1]open-rmf/rmf_demos
[2]Programming Multiple Robots with ROS 2
[3]Gazebo

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0