Handymanは,RoboCup Japan@Home League Simulation Open Platform Leagueでの競技の1つです.Handyman競技とは,ロボットによる家庭内での運搬タスクの能力を評価する競技です.この競技では,ロボットが自律的に家庭内でのタスクを実行する様子を,仮想現実空間でシミュレーションして評価します.具体的には,ロボットが部屋の中を自律的に移動し,物を探して取りに行ったり,目的地に運搬したりする様子が評価されます.また,人間の命令文の間違いを指摘する能力も評価されます.Handyman競技は,家庭内でのロボットの活用に向けた技術開発を促進することを目的としています.
※目次はこちらをクリック
Handymanを実行するためには,ROSの環境とSIGVerseの環境の2つの環境を整える必要があります.
- SIGVerseのバージョンやセットアップは以下のサイトを参考にしてください.
- ROSの環境では
- OS : Ubuntu20.04
- ROS version : Noetic Ninjemys
- CUDAバージョン:11.7(現在はyolov5_rosを使用しているため)
- Pytorch : 1.13.1
- 関連パッケージも含めます.
# catkin_ws/srcに移動します
$ cd ~/catkin_ws/src
# 本パッケージをgit cloneします
$ git clone https://github.com/TeamSOBITS/robocup_simopl_handyman.git
# robocup_simopl_handymanに移動します
$ cd robocup_simopl_handyman
# 環境を簡単に構築するため(非公開のパッケージが含まれているため,setup.shファイルの中身にパッケージ名は自分のチームで使用している名前に変更する必要があります.)
$ bash setup.sh
# パッケージのbuildをします
$ cd ~/catkin_ws && catkin_make
- sigverse_ros_package (branch: master)
- 用途:SIGVerseとROS通信を行うための共通パッケージ
- 外部のGitHubページへ移動します.
- SOBITS_hsr_commmon_sim(公開) (branch: noetic-devel)
- 用途:SIGVerse上でHSRを利用するための共通パッケージ
- sobit_common(非公開) (branch: noetic-devel)
- 実際に必要なパッケージはcv_bridge,geometry,geometry2,image_geometry
- cv_bridgeの用途:OpenCVとROSの間で画像データを変換するため
- geometryの用途:ロボットの動きやセンサー情報を表現するための幾何学的なデータ構造を提供するため(ポイントクラウド,ポーズ,トランスフォーム等)
- geometry2の用途:「geometry」の改良版
- image_geometryの用途:カメラ画像に対するジオメトリ学的な操作を提供するため
- 実際に必要なパッケージはcv_bridge,geometry,geometry2,image_geometry
- SOBIT Navigation Stack(非公開) (branch: main)
- 用途:自律移動用
- Navigationを元に作成したパッケージ
- HSR Navigation Stack(非公開) (branch: noetic_sigverse_2022)
- 用途:HSR用にSOBIT_Navigation_Stackのパラメータを調整した自律移動用
- standing_position_estimator(非公開) (branch: noetic_sigverse_2022)
- 用途:ロボットの立ち位置推定
- placeable_position_estimator(非公開) (branch: noetic_sigverse_2022)
- 用途:物体を配置することが出来る家具の平面を推定
- box_entry_gate_detection(非公開) (branch: noetic_sigverse_2022)
- 用途:ゴミ箱の投入口検出
- ssd_node(非公開) (branch: noetic_sigverse_2022)
- 用途:Handymanでは,把持した物体をアバターに渡す場合,アバターを検出
- 参考パッケージ:ssd.pytorch
- yolov5_ros(公開) (branch: handyman_2023)
- 用途:物体検出と物体認識
- 参考パッケージ:yolov5_ros
- 2つの方法があります.
- 方法①-Aと①-B 各launchをまとめずにそれぞれ別端末で起動する方法
- 方法② まとめて起動する方法
複数の端末で起動する方法
Launch order(以下のコマンドを別々の端末で起動)
- yolov5_ros
$ roslaunch yolov5_ros yolov5_with_tf.launch
- placeable_position_estimator
$ roslaunch placeable_position_estimator placeable_position_estimator_hsr.launch
- box_entry_gate_detection
$ roslaunch box_entry_gate_detection box_detection.launch
- ssd_node
$ roslaunch ssd_node object_detect_with_tf_wrs.launch
- hsr_ros
$ rosrun hsr_ros sub_obj_depth
Method①-Aを起動後,以下のlaunchを順に起動
- hsr_rosのminimal
$ roslaunch hsr_ros minimal.launch
- robocup_simopl_handymanのhandyman
$ roslaunch robocup_simopl_handyman handyman.launch
まとめて起動する方法
$ roslaunch robocup_simopl_handyman handyman_all.launch
- 本パッケージは、公開用のパッケージとなっております。各チームが各自Git Cloneし、パッケージ名を「robocup_simopl_handyman」に変更して使用してください.
- handyman.launchの起動後,準備完了時に端末に"Wait_command"と出るので,その後SIGVerseを起動してください.
- handyman.launchを終了する場合はSIGVerseを停止してからにしてください(逆にするとSIGVerseが再通信できるようになるまで時間がかかります).
- 全launch起動後,handyman.launch以外のlaunchは起動しなおさなくても動作しています(練習のときとかには便利かも,本番には非推奨).
このウェブサイトのソースコードは,MITライセンスに基づいてライセンスされており,LICENSEファイルに記載されています.