【ROS2】 Jazzy 实战 TurtleBot3 仿真与 SLAM 建图全流程指南(含避坑详解)
·
【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 中将小车移至中间空旷处 |
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)