こんにちは。二足歩行ロボット研修中のshota(@マウス、@ヒューマノイド)です。
この研修では、ROBOTIS社のロボットキットMAX-E1を動かし、競技会HACの走破を目指しています。
今回の記事はHAC競技フィールドをGazeboで再現した話です。
前回の記事はこちら
シミュレーション環境が必要な理由
HACの競技フィールドは90 cm x 540 cmという大きなサイズで、一般的な家には設置できないということを前回の記事で説明しました。

HAC競技フィールド(引用元:https://docs.google.com/presentation/d/1vuwCjDXx6wnafV10Z6lkyb3-dfEbjgk4IX_BUWnp6jI/htmlpresent)
会社に行けば競技フィールドを設置できますが、設置するのも重労働なので、できれば大会直前までは控えたいです。
どうにかして、自宅に居ながら競技フィールドを用意できないかと考えた結果が・・・
こちらです!!!
HACのGazeboシミュレーション環境 hac_gazeboについて
ということで、HACの競技フィールドをGazeboというシミュレーション環境で再現してみました。
Gazeboとは
GazeboはROSやROS 2と相性の良い(ある意味ROS / ROS 2専用の)シミュレーション環境です。
ROS / ROS 2でロボットのモデルを作成していれば、簡単にシミュレーション環境で動かせます。
アールティのロボットもGazeboに対応しています。
rt-net/raspimouse_sim @ GitHub
hac_gazeboの特長
私が作成したHACのGazebo競技フィールドは、hac_gazeboという名前でGitHubに公開しています。
hac_gazeboの特長は以下の4つです。
- ROS 2 Foxyに対応
- HACの競技ルールに書かれたフィールドを再現(※フィールドの材質は再現できていません)
- 競技フィールドを7パターン作成済み
- ボール付きの競技フィールドを8パターン作成済み
それではhac_gazeboの使い方を紹介します。
hac_gazeboを使ってみた
hac_gazeboのREADMEに従って、hac_gazeboパッケージをセットアップして起動します。
使用するPCには、あらかじめROS 2 Foxyをインストールしています。
パッケージのセットアップ
次のコマンドを実行します。
# ワークスペースにパッケージをダウンロード $ cd ~/ros2_ws/src $ git clone https://github.com/ShotaAk/hac_gazebo.git # 依存パッケージをインストール $ rosdep install -r -y -i --from-paths . # パッケージのビルド & インストール $ cd ~/ros2_ws $ colcon build --symlink-install # 環境変数の読み込み $ source ~/ros2_ws/install/setup.bash
フィールドの起動
パッケージのセットアップが完了したら、HAC競技フィールドを起動します。
次のコマンドを実行します。
$ ros2 launch hac_gazebo field.launch.py world:=field01

field01を起動
コマンドの引数を変えることで、別の競技フィールドを起動できます。
$ ros2 launch hac_gazebo field.launch.py world:=field04

field04を起動
用意している競技フィールドの一覧はhac_gazebo/worlds/README.mdにまとめています。
チャレンジの起動
実際の競技では、フィールドにオレンジ色のボールが設置されます。
ボール付きのフィールドをhac_gazeboで起動する場合は、次のコマンドを実行します。
$ ros2 launch hac_gazebo challenge01.launch.py

challenge01を起動
challenge01は、filed01の競技フィールド上にボールが1つ置かれたものです。
続いて、challenge04を起動してみます。
$ ros2 launch hac_gazebo challenge04.launch.py

challenge04を起動
challenge04はの競技フィールドはL字に曲がっています。このコースを2足歩行ロボットに歩かせるだけでも難しそうです。
加えて、フィールドにはボールが2つあります。ロボットは全てのボールに触れてスタートエリアに戻らなければなりません。大変。。。
さらに、2つ目のボールは、高さ30cmのテーブルの上に置かれています。ボールへの接触の仕方も工夫しなければなりません。。。難易度高い!
用意しているチャレンジの一覧はhac_gazebo/launch/README.mdにまとめています。
どうやって開発しよう?
ということで、自宅(自宅にあるPC)にHAC競技フィールドを設置できました。
次はフィールド上でロボットを動かします。
HACへ出場するためには、2足歩行ロボットの歩行制御と、競技プログラム(画像処理や経路生成等)の両方を開発しなければなりません。
歩行制御と競技プログラムを同時に開発すると、おそらく失敗します。(二兎を追う者は一兎をも得ず)
まずは競技プログラムの開発に専念したいので、簡単なロボットをフィールド上で動かしたいです。
簡単なロボット・・・
そんなロボットが果たして身近にあるのでしょうか・・・

これはいったい・・・!?
このロボットは何者なんだ!?
次回の記事
ということで次回、「GazeboでROS 2ロボットを動かしてみた」、お楽しみに。