【ROS2】 Jazzy 实战 TurtleBot3 仿真与 SLAM 建图全流程指南(含避坑详解)

前言:ROS2 Jazzy (基于 Ubuntu 24.04) 对部分旧版功能包进行了重构。本指南基于最新环境,避开了已废弃的 turtlebot3_slam 包,采用更原生的 slam_toolbox 方案,并结合了实操中的防碰撞与可视化技巧,确保流程通畅。

🛠️ 第一阶段:环境准备与依赖安装

1. 更新源与安装依赖

在 ROS2 Jazzy 中,turtlebot3_slam 功能包已被移除,SLAM 功能直接由 slam_toolbox 提供。因此,我们不需要(也无法)安装那个不存在的包。

请执行以下命令安装核心依赖:

sudo apt update
sudo apt install ros-jazzy-turtlebot3-gazebo ros-jazzy-turtlebot3-teleop ros-jazzy-slam-toolbox ros-jazzy-nav2-map-server
2. 配置环境变量 (防坑关键)

为了避免每次打开终端都报 KeyError: 'TURTLEBOT3_MODEL',请将模型配置写入 .bashrc

echo "export TURTLEBOT3_MODEL=burger" >> ~/.bashrc
source ~/.bashrc

🎮 第二阶段:启动仿真与建图

我们需要打开四个终端窗口来分别运行仿真、建图算法、可视化和遥控节点。

终端 1:启动 Gazebo 仿真环境

负责加载物理世界和机器人模型,发布传感器数据。

ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
  • 关键操作:Gazebo 窗口弹出后,务必将小车移动到场地中间相对空旷的地方。避免一启动就贴着墙壁,这样可以有效避免无意义的碰撞,并为后续的回环闭合留出足够的扫描空间。
终端 2:启动 SLAM 建图算法

注意:这里不再使用 turtlebot3_slam,而是直接调用 slam_toolbox 的原生启动文件。

ros2 launch slam_toolbox online_async_launch.py use_sim_time:=true
  • 关键点use_sim_time:=true 必须添加,否则算法时间戳与仿真时间不同步,会导致建图失败。
终端 3:启动 RViz2 可视化

为了实时查看建图效果,我们需要启动 RViz 并加载 slam_toolbox 的预设配置。

ros2 run rviz2 rviz2 -d $(ros2 pkg prefix --share slam_toolbox)/rviz/slam_toolbox.rviz
  • 关键操作:如果 RViz 界面中没有显示地图,请点击左下角的 Add 按钮,在弹出的窗口中选择 By topic,找到 /map 并添加,这样就能实时看到建图过程了。
终端 4:键盘遥控小车

控制小车移动以扫描环境。

ros2 run turtlebot3_teleop teleop_keyboard
  • 按键说明
    • w:增加线速度,控制小车向前移动。
    • a / d:控制角速度,即向左或向右转向。
    • s:复位线速度和角速度(紧急停止)。
  • 技巧:尽量让小车在空旷处平稳移动,并在可扫范围内保持相对空旷的同时完成一圈扫描,这有助于算法闭合回环。

💾 第三阶段:保存地图

当你在 RViz2 中看到完整的地图且没有重影后,可以保存地图供后续导航使用。

在任意新终端执行:

ros2 run nav2_map_server map_saver_cli -f ~/my_map

成功后,你的主目录下会生成 my_map.pgm (图片) 和 my_map.yaml (配置) 两个文件。

💡 常见问题排查 (Troubleshooting)

报错现象 原因分析 解决方案
Package 'turtlebot3_slam' not found 该包在 Jazzy 中已废弃 改用 ros2 launch slam_toolbox online_async_launch.py
KeyError: 'TURTLEBOT3_MODEL' 环境变量未设置 执行 export TURTLEBOT3_MODEL=burger
SLAM 建图卡顿/不更新 时间不同步 确保启动 SLAM 时加了 use_sim_time:=true
RViz 中看不到地图 未添加 Map 显示项 点击 Add -> By topic -> /map 添加
小车一启动就撞墙 初始位置不佳 在 Gazebo 中将小车移至中间空旷处
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐