Gmappingを使って地図を生成する¶
このページではTurtlebotとgmappingを用いてGazeboシミュレーション内の地図を生成する方法について扱います。
Worldファイルを作る¶
Gazeboを起動してWorldファイルを作ります。 すでにあるWorldファイルを使う場合はこの手順は必要ありません。
今回はGazeboモデルデータベース(http://models.gazebosim.org/)にあるWillow Garageモデルを利用します。 Willow GarageモデルはInsertタブから追加することができます。 モデルはデータベースから自動でダウンロードされますが、ダウンロードされるまでにしばらく時間がかかります。
以下のようなワールドを作り、Worldファイルとして保存します。
地図を作る¶
SLAM Map Building with TurtleBot を参考にして地図の作成を行います。
必要なパッケージをインストールする¶
sudo apt install ros-kinetic-turtlebot-teleop \
ros-kinetic-turtlebot-gazebo \
ros-kinetic-turtlebot-bringup
必要なノードを起動する¶
今回はGazebo内のモデルの地図を作成するので、シミュレータを起動します.
roslaunch turtlebot_gazebo turtlebot_world.launch world_file:=$HOME/catkin_ws/src/px4_sim_pkg/worlds/willow_garage.world
Teleopノードを起動します。 使用するコントローラに適したLaunchファイルを使ってください。 キーボードを使うときはkeyboard_teleop.launchファイルを使います。
roslaunch turtlebot_teleop logitech.launch
地図作成用のノードを起動します。 今回は gmapping を使って地図を作成します。
roslaunch turtlebot_navigation gmapping_demo.launch
地図を保存する¶
Rvizで作成される地図を確認しながら作業を行うと良いでしょう。
roslaunch turtlebot_rviz_launchers view_navigation.launch
Turtlebotを走らせて一通り地図ができたら、map_server を使って地図を保存します。 以下のコマンドを実行するとホームディレクトリ以下に次の2つのファイルが生成されます。
- my_map.pgm
グリッドの占有状態を示す画像ファイル
- my_map.yaml
マップのメタデータが記述されているファイル
rosrun map_server map_saver -f ~/my_map
マップファイルのフォーマットについては Map Format を参照してください。
参考¶
- How to Build a Map Using Logged Data - ROS Wiki
gmappingを使って自己位置推定用の地図を作る