■はじめに

前回は、初心者向けに 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 を使った自律移動 に挑戦したいと思います。