【ROS2】 Jazzy + TurtleBot3 自动建图完整指南
【ROS2】 Jazzy + TurtleBot3 自动建图完整指南
这篇指南将带你从零开始,在 ROS2 Jazzy 环境下,使用 TurtleBot3 完成自动探索建图。我们将从源码编译 explore_lite 包开始,解决常见的依赖和编译问题,并最终实现机器人的全自动建图。
🛠️ 第一步:获取源码并清理环境
首先,我们需要获取专为 ROS2 适配的 explore_lite 源码,并清理掉任何可能引起冲突的旧文件。
# 1. 进入工作空间的 src 目录
cd ~/turtlebot3_ws/src
# 2. 删除旧的或错误的包,确保环境干净
rm -rf m-explore m-explore-ros2 explore_lite
# 3. 使用国内镜像加速,克隆 ROS2 版本的 explore_lite
git clone https://ghfast.top/https://github.com/robo-friends/m-explore-ros2.git
🔨 第二步:安装依赖并重新编译
这是解决“找不到包”或“消息包丢失”等报错的核心步骤。我们将彻底清理缓存,安装依赖,并正确编译。
# 1. 返回工作空间根目录
cd ~/turtlebot3_ws
# 2. 强制删除旧的构建产物和日志,防止缓存干扰
rm -rf build/explore_lite build/explore_lite_msgs \
install/explore_lite install/explore_lite_msgs \
log
# 3. 安装系统依赖 (如果提示 rosdep 未找到,请先运行: sudo apt install python3-rosdep)
rosdep install --from-paths src --ignore-src -r -y
# 4. 编译 explore_lite 及其消息包
colcon build --packages-select explore_lite_msgs explore_lite
# 5. 编译成功后,刷新当前终端的环境变量
source install/setup.bash
🚀 第三步:启动自动建图(四终端法)
现在,环境已经准备就绪。请打开 4个 新的终端,并按顺序执行以下命令。
终端 1:启动 Gazebo 仿真环境
export TURTLEBOT3_MODEL=waffle_pi
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
终端 2:启动 SLAM 建图
# 修正点:直接使用 slam_toolbox 的原生启动文件,更稳定
ros2 launch slam_toolbox online_async_launch.py use_sim_time:=true
终端 3:启动 Nav2 导航栈
作用:提供代价地图 (
/global_costmap/costmap),这是explore_lite能够工作的先决条件。
ros2 launch nav2_bringup navigation_launch.py use_sim_time:=true
终端 4:启动自动探索节点
ros2 run explore_lite explore --ros-args -p costmap_topic:=/global_costmap/costmap
📊 第四步:启动 RViz 进行监控
最后,打开第五个终端,启动 RViz 来可视化整个过程。
rviz2
在 RViz 中,你需要手动添加以下显示项来观察效果:
- Map: 话题为
/map,查看 SLAM 构建的地图。 - LaserScan: 话题为
/scan,查看雷达数据。 - Map: 话题为
/global_costmap/costmap,查看导航用的代价地图。 - RobotModel: 显示机器人模型。
💡 一键启动脚本
每次手动打开四个终端确实很麻烦。下面是一个 Bash 脚本,可以帮你一键启动所有节点。
1. 创建脚本文件
在你的主目录下创建一个名为 start_auto_mapping.sh 的文件。
nano ~/start_auto_mapping.sh
2. 粘贴脚本内容
将以下内容复制并粘贴到文件中,然后按 Ctrl+O 保存,再按 Ctrl+X 退出。
#!/bin/bash
# 脚本功能:一键启动 TurtleBot3 自动建图所需的所有节点
# 使用方法:在终端中运行 source ~/start_auto_mapping.sh
echo "----------------------------------------"
echo "正在启动 TurtleBot3 自动建图环境..."
echo "请确保你已经在 ~/turtlebot3_ws 中编译并 source 过环境。"
echo "----------------------------------------"
# 设置模型
export TURTLEBOT3_MODEL=waffle_pi
# 启动 Gazebo 仿真 (终端 1)
gnome-terminal --tab --title="Gazebo Sim" --command="bash -c 'source /opt/ros/jazzy/setup.bash; source ~/turtlebot3_ws/install/setup.bash; ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py; exec bash'"
# 等待几秒,让 Gazebo 有时间初始化
sleep 5
# 启动 SLAM (终端 2)
gnome-terminal --tab --title="SLAM Toolbox" --command="bash -c 'source /opt/ros/jazzy/setup.bash; source ~/turtlebot3_ws/install/setup.bash; ros2 launch slam_toolbox online_async_launch.py use_sim_time:=true; exec bash'"
# 启动 Nav2 (终端 3)
gnome-terminal --tab --title="Nav2 Stack" --command="bash -c 'source /opt/ros/jazzy/setup.bash; source ~/turtlebot3_ws/install/setup.bash; ros2 launch nav2_bringup navigation_launch.py use_sim_time:=true; exec bash'"
# 启动 Explore Lite (终端 4)
gnome-terminal --tab --title="Explore Lite" --command="bash -c 'source /opt/ros/jazzy/setup.bash; source ~/turtlebot3_ws/install/setup.bash; ros2 run explore_lite explore --ros-args -p costmap_topic:=/global_costmap/costmap; exec bash'"
echo "----------------------------------------"
echo "所有节点已启动!"
echo "现在,请手动打开一个新的终端并运行 'rviz2' 来查看效果。"
echo "----------------------------------------"
3. 赋予脚本执行权限
chmod +x ~/start_auto_mapping.sh
4. 如何使用
以后,你只需要在任意终端中运行以下命令,所有四个终端就会自动弹出并启动相应程序:
source ~/start_auto_mapping.sh
注意:这个脚本假设你使用的是
gnome-terminal。如果你使用的是其他终端(如konsole或xterm),需要相应地修改脚本中的命令。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)