Windows で ROS のシミュレーションを行う (5)
TurtleBot3 で地図を作成する

ここからは、TurtleBot3 で部屋の地図を描くシミュレーションを行う。

TurtleBot3 には 360 Laser Distance Sensor LDS-01 という LiDAR が搭載されている。
LiDAR は測域センサーやレーザースキャナーなどとも呼ばれ、レーザーを照射してセンサ周囲の物体までの距離を測定するセンサーである。
LiDAR の出力とロボットのオドメトリ (タイヤの回転角度に基づく位置推定) をもとに地図作成を行う演習を解説する。

ここで行われる位置推定と地図作成を同時に行う技術を SLAM (Simultaneous Localization and Mapping) という。

本ページの内容は以下の通りである。

TurtleBot3 での地図作成

仮想空間内の TurtleBot3 を用いて、地図作成の演習を行おう。

ターミナルの一つ目のタブで以下のコマンドを実行し、仮想空間上の TurtleBot3 のシミュレーションを開始しよう。
 roslaunch turtlebot3_gazebo turtlebot3_world.launch
これまでと同じく Gazebo によるシミュレーション画面が現れる。

次に、ターミナルの二つ目のタブで地図作成を行う以下のコマンドを実行しよう。
 roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping
すると、下図のように作成途中の地図が RViz というアプリケーション上に表示される。
このうち、緑色の点は TurtleBot3 上の LiDAR が得た周囲の物体までの距離をもとにプロットされた点である。
そして、黒い点が作成途中の地図である。



ここで、ターミナルの新しいタブでキー操作用のノードを実行しよう。
 rosrun teleop_twist_keyboard teleop_twist_keyboard.py  _speed:=1.0 _turn:=1.0
そして、さきほど体験したように TurtleBot3 をこの空間内で操作してみよう。
コマンドに含まれる二つの「1.0」は、先程と同様それぞれ直進速度と回転速度である。
地図作成の処理が重いので、1.0 でも操作しやすい速度であるかもしれない。
ただし、この命令を TurtleBot3 実機で行うときは、1.0 では動作が速すぎるので、0.1 や 0.2 など、まずは小さい値から試すべきである。

動作が重いのでかなりの根気が必要となるが、空間内を移動すると、下図のように地図が完成していく。



ある程度地図が描けたと思ったら、ターミナルの新しいタブで以下のコマンドを実行しよう。
rosrun map_server map_saver -f ~/map
このコマンドにより、ユーザのホームディレクトリに二つのファイル map.pgm と map.yaml が保存される。
ファイルマネージャ (左上から2つめのアイコン) から map.pgm をダブルクリックして表示してみると下図のようになり、
確かに地図が保存されていることがわかる。



これまで通り、ノード間の関係を下記コマンドで表示することができる。
 rosrun rqt_graph rqt_graph
「Nodes only」の場合はこちら。



トピックも表示させた場合はこちら。LiDAR による計測結果が scan であり、オドメトリから推定された自己位置の座標が tf に含まれている。
それを統合して地図 map が作らる。



以上が終ったら、全てのタブで Ctrl-c を実行し、全てのプログラムを終了しよう。



前のページ「Windows で ROS のシミュレーションを行う (4) TurtleBot3 をプログラムで制御する」/
次のページ「Windows で ROS のシミュレーションを行う (6) TurtleBot3 でナビゲーションを行う

トップページに戻る