■はじめに
前回は、初心者向けに ROS 2 Jazzy + TurtleBot3 シミュレーション環境 をインストールしました。
今回は、その環境を使って SLAM で地図を作成し、作った地図上をキー入力で走らせる ところまで解説します。
ただし、やっぱりシミュレーションにはトラブルがつきもの…。
この記事では エラー解決の流れも含めて まとめました。
■環境
Ubuntu 24.04
ROS 2 Jazzy
Gazebo Classic
PC:NECのLL750/L(ノートパソコン)
■シミュレーションでエラー発生
まず Gazebo を起動しようとしたら、いきなりエラーが発生しました。
Package 'turtlebot3_gazebo' not found
Gazebo用の TurtleBot3 パッケージが Jazzy 環境に入ってないことが理由らしいです。
原因は、TurtleBot3 関連をソースからビルドした際に一部が失敗し、
応急処置で dynamixel_sdk を apt インストールしていたこと。
👉 対策として、apt版の TurtleBot3 パッケージ を利用して環境を整え直します。
sudo apt update
sudo apt install ros-jazzy-turtlebot3-gazebo
■SLAMで地図を作成
地図作成には 4つのターミナル を使います。
ターミナル1:シミュレーション起動
source /opt/ros/jazzy/setup.bash
export TURTLEBOT3_MODEL=burger
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
ターミナル2:SLAMノード起動(Cartographer)
source ~/turtlebot3_jazzy_ws/install/setup.bash
export TURTLEBOT3_MODEL=burger
ros2 launch turtlebot3_cartographer cartographer.launch.py use_sim_time:=True
👉 RViz2 が立ち上がり、探索に応じて地図が描かれていきます。
ターミナル3:ロボット操作(teleop)
source ~/turtlebot3_jazzy_ws/install/setup.bash
export TURTLEBOT3_MODEL=burger
ros2 run turtlebot3_teleop teleop_keyboard
👉 矢印キー(または WASD) で操作。
💡 ポイント:壁に沿ってゆっくり動かすと地図がきれいに生成されます。
ターミナル4:地図を保存
source /opt/ros/jazzy/setup.bash
ros2 run nav2_map_server map_saver_cli -f ~/map
👉 ~/map.pgm と ~/map.yaml が保存されます。
■作成した地図上を走らせる(Navigation2)
保存した地図を使い、Nav2 で地図上をキー入力で走らせます。
ターミナル1:シミュレーション起動
source /opt/ros/jazzy/setup.bash
export TURTLEBOT3_MODEL=burger
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
ターミナル2:Nav2 起動
source ~/turtlebot3_jazzy_ws/install/setup.bash
export TURTLEBOT3_MODEL=burger
ros2 launch turtlebot3_navigation2 navigation2.launch.py \
use_sim_time:=True map:=$HOME/map.yaml
👉 RViz2 が立ち上がり、保存した地図が表示されます。
ターミナル3:キー操作
source ~/turtlebot3_jazzy_ws/install/setup.bash
export TURTLEBOT3_MODEL=burger
ros2 run turtlebot3_teleop teleop_keyboard
■まとめ
今回できたこと
1. Gazebo 上の TurtleBot3 をキー入力で動かし、SLAM で地図を作成
2. RViz 上に保存した地図を表示し、その地図上をキー入力で走行
本来は自律走行(ゴール指定)まで行きたかったのですが、地図精度や初期ポーズ設定がうまくいかず断念…。
次回は Nav2 を使った自律移動 に挑戦したいと思います。


