シミュレータstageのセットアップ

シミュレータstageを使用するための準備と動作を確認します.

目的

本講義で使用するロシミュレータstageをインストールします. なお,既に他の講義にてROS2をインストールしていることを前提としています. インストールしていない場合には,こちらのページを参考にROS2をインストールしてください.

ロボットシミュレータSTAGE

ロボティクス演習では,ロボットシミュレータとしてturtlesimを使用しています. 本シミュレータはシンプルであるため,ROS2の勉強には最適ですが,センサーが搭載されていないことからセンシングを伴うロボットの制御には利用できません. そこで,本講義ではセンサが搭載されたstageを利用します. ROS2に対応したstageのオープンソースソフトウェアを利用させていただきます.

環境作成と動作確認

stageのセットアップ

stageを使用するためおワークスペースを作成し,そこにgithubよりリポジトリをクローンします. 下記の手順で環境を作成してください.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
$ sudo apt-get install git cmake g++ libjpeg8-dev libpng-dev libglu1-mesa-dev libltdl-dev libfltk1.1-dev
$ mkdir stage_ws
$ cd stage_ws
$ mkdir src
$ cd src
$ git clone --branch ros2 https://github.com/tuw-robotics/Stage.git
$ git clone --branch humble https://github.com/tuw-robotics/stage_ros2.git
$ cd ~/stage_ws
$ colcon build --symlink-install --cmake-args -DOpenGL_GL_PREFERENCE=LEGACY
$ colcon build --symlink-install --packages-select stage_ros2        

stageシミュレータ用ではありませんが,キーボード操作によりロボットを動かすパッケージもインストールしましょう.

1
$ sudo apt install ros-humble-teleop-tools

stageの動作確認

stageシミュレータの動作確認を行います. stageはアンダーレイ環境ではなく,オーバーレイ環境下で動作するため, ターミナルを起動するたびにsourceコマンドでsetup.bashを実行してください.

stageシミュレーターを起動するためには,引数でworldファイルを指定する必要があります. 今回はworldファイルとしてcaveを指定します.

1
2
3
$ cd ~/stage_ws
$ source install/setup.bash
$ ros2 launch stage_ros2 stage.launch.py world:=cave

正常に起動すると下記のような画面が表示されます.

シミュレータ画像

赤色の四角はロボット,緑色の四角は移動可能な障害物,黒色は固定された障害物です. また,ロボットの前方は,扇の形で色が濃くなっていますが,これはLiDARで測定している範囲を表しています.

worldファイルの種類

stageシミュレーターでは幾つかのworldファイルが用意されています. それぞれ,ロボットの台数やLiDAR,カメラの有無,環境マップが異なります.

ファイル名 ロボットの台数 LiDAR カメラ(カラー,距離) 環境マップ
cave.world 1 あり なし cave
cave_seven_robots.world 7 あり なし cave
cave_three_robots.world 3 あり 2台のみあり cave
hallway.world 3 あり なし hallway
lines.world 1 あり なし line
willow-four-erratics-multisensor.world 4 あり あり willow-full

先ほど起動したシミュレータを終了し,別のworldファイルを引数として指定してみましょう. ここではworldファイルにwillow-four-erratics-multisensorを指定して実行します.

1
$ ros2 launch stage_ros2 stage.launch.py world:=willow-four-erratics-multisensor

上記を実行すると下記のようなウィンドウが起動します.

willow-full1

ロボットが画面外にいるので,ドラッグして視点を移動し,ロボットを探しましょう. ロボットはcaveと少し違いがありますが,赤い矩形で表示されています.

willow-full2

rviz2によるデータの可視化

可視化ツールであるrvizにより,ロボットやセンサ情報を可視化しましょう. worldファイルにcaveを指定して改めてstageシミュレーターを起動します. stageの情報を読み込みながらrvizを起動する際には,下記のコマンドを実行します.

1
$ ros2 launch stage_ros2 rviz.launch.py config:=cave

上記を実行するとrvizが起動します. 初期の状態では,rvizの真ん中のエリアにロボットの3次元位置,姿勢を表す赤緑青色の軸, LiDARで取得した点群データが赤色の点で表示されます.

rviz2を実行した際の出力

シミュレータとrvizの視点を揃えると,LiDARで正確に点群データを取得できていることが確認できます.

設定や視点を変えた際の出力

キーボードによるロボットの操作

キーボードを用いてロボットを操作しましょう. stage用のパッケージが用意されている訳ではないため,汎用性の高いteleop_twist_keyboardパッケージを利用します. 下記のコマンドを実行しましょう.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$ ros2 run teleop_twist_keyboard  teleop_twist_keyboard

This node takes keypresses from the keyboard and publishes them
as Twist messages. It works best with a US keyboard layout.
---------------------------
Moving around:
   u    i    o
   j    k    l
   m    ,    .

For Holonomic mode (strafing), hold down the shift key:
---------------------------
   U    I    O
   J    K    L
   M    <    >

t : up (+z)
b : down (-z)

anything else : stop

q/z : increase/decrease max speeds by 10%
w/x : increase/decrease only linear speed by 10%
e/c : increase/decrease only angular speed by 10%

CTRL-C to quit

currently:	speed 0.5	turn 1.0 

表示のように,iで前進,kで後退,jlでそれぞれ左,右回転となります.