【ROS2】 Jazzy TurtleBot3 自动建图完整指南这篇指南将带你从零开始在 ROS2 Jazzy 环境下使用 TurtleBot3 完成自动探索建图。我们将从源码编译explore_lite包开始解决常见的依赖和编译问题并最终实现机器人的全自动建图。️ 第一步获取源码并清理环境首先我们需要获取专为 ROS2 适配的explore_lite源码并清理掉任何可能引起冲突的旧文件。# 1. 进入工作空间的 src 目录cd~/turtlebot3_ws/src# 2. 删除旧的或错误的包确保环境干净rm-rfm-explore m-explore-ros2 explore_lite# 3. 使用国内镜像加速克隆 ROS2 版本的 explore_litegitclone https://ghfast.top/https://github.com/robo-friends/m-explore-ros2.git 第二步安装依赖并重新编译这是解决“找不到包”或“消息包丢失”等报错的核心步骤。我们将彻底清理缓存安装依赖并正确编译。# 1. 返回工作空间根目录cd~/turtlebot3_ws# 2. 强制删除旧的构建产物和日志防止缓存干扰rm-rfbuild/explore_lite build/explore_lite_msgs\install/explore_lite install/explore_lite_msgs\log# 3. 安装系统依赖 (如果提示 rosdep 未找到请先运行: sudo apt install python3-rosdep)rosdepinstall--from-paths src --ignore-src-r-y# 4. 编译 explore_lite 及其消息包colcon build --packages-select explore_lite_msgs explore_lite# 5. 编译成功后刷新当前终端的环境变量sourceinstall/setup.bash 第三步启动自动建图四终端法现在环境已经准备就绪。请打开4个新的终端并按顺序执行以下命令。终端 1启动 Gazebo 仿真环境exportTURTLEBOT3_MODELwaffle_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-pcostmap_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.sh2. 粘贴脚本内容将以下内容复制并粘贴到文件中然后按CtrlO保存再按CtrlX退出。#!/bin/bash# 脚本功能一键启动 TurtleBot3 自动建图所需的所有节点# 使用方法在终端中运行 source ~/start_auto_mapping.shecho----------------------------------------echo正在启动 TurtleBot3 自动建图环境...echo请确保你已经在 ~/turtlebot3_ws 中编译并 source 过环境。echo----------------------------------------# 设置模型exportTURTLEBOT3_MODELwaffle_pi# 启动 Gazebo 仿真 (终端 1)gnome-terminal--tab--titleGazebo Sim--commandbash -c source /opt/ros/jazzy/setup.bash; source ~/turtlebot3_ws/install/setup.bash; ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py; exec bash# 等待几秒让 Gazebo 有时间初始化sleep5# 启动 SLAM (终端 2)gnome-terminal--tab--titleSLAM Toolbox--commandbash -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--titleNav2 Stack--commandbash -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--titleExplore Lite--commandbash -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 bashecho----------------------------------------echo所有节点已启动echo现在请手动打开一个新的终端并运行 rviz2 来查看效果。echo----------------------------------------3. 赋予脚本执行权限chmodx ~/start_auto_mapping.sh4. 如何使用以后你只需要在任意终端中运行以下命令所有四个终端就会自动弹出并启动相应程序source~/start_auto_mapping.sh注意这个脚本假设你使用的是gnome-terminal。如果你使用的是其他终端如konsole或xterm需要相应地修改脚本中的命令。