ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Ubuntu20.04 ROS Noetic 下基于turtlebot3的gmapping仿真建图实战

2026/8/2 10:20:49 拓冰建站 浏览量
Ubuntu20.04 ROS Noetic 下基于turtlebot3的gmapping仿真建图实战

1. 环境准备与依赖安装

在开始之前,确保你的Ubuntu20.04系统已经安装了ROS Noetic完整版。如果还没安装,可以通过官方教程完成基础环境搭建。这里假设你已经完成了ROS的基础安装,接下来我们需要为TurtleBot3仿真和gmapping建图安装必要的依赖包。

打开终端,依次执行以下命令安装核心组件:

sudo apt update sudo apt install ros-noetic-gazebo-ros-pkgs ros-noetic-gazebo-ros-control sudo apt-get install ros-noetic-turtlebot3-* sudo apt install ros-noetic-gmapping

这些命令会安装Gazebo仿真环境、TurtleBot3的全套功能包以及gmapping建图算法。我建议一次性安装所有相关组件,避免后续操作时出现依赖缺失的问题。实测下来,完整安装大约需要占用2GB左右的磁盘空间,建议提前检查存储容量。

安装完成后,我们还需要一些辅助工具包:

sudo apt-get install ros-noetic-teleop-twist-keyboard \ ros-noetic-laser-proc ros-noetic-rgbd-launch \ ros-noetic-depthimage-to-laserscan

这些工具包包含了键盘控制、激光雷达数据处理等实用功能。记得在安装过程中如果遇到网络问题,可以尝试更换软件源或者使用代理加速下载。

2. 创建工作空间与源码配置

接下来我们需要创建一个专门的工作空间来管理TurtleBot3的相关代码。这个步骤很关键,因为官方提供的仿真环境需要特定的文件结构才能正常运行。

首先创建并初始化工作空间:

mkdir -p ~/catkin_turtlebot3/src cd ~/catkin_turtlebot3/src catkin_init_workspace

然后克隆必要的代码仓库。这里我推荐直接从官方仓库获取最新代码:

git clone https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone https://github.com/ROBOTIS-GIT/turtlebot3.git git clone https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git

如果遇到git克隆速度慢的问题,可以尝试在浏览器中打开这些链接,直接下载zip包然后解压到src目录下。我在实际使用中发现,有时候直接下载比git clone更稳定。

完成代码下载后,返回工作空间根目录编译:

cd ~/catkin_turtlebot3 catkin_make

编译过程可能需要几分钟时间,取决于你的电脑性能。如果编译报错,大概率是缺少某些依赖,可以根据错误提示安装相应的ROS包。

3. 环境变量配置与验证

为了让系统识别我们的TurtleBot3工作环境,需要设置几个关键的环境变量。这些设置会告诉ROS在哪里可以找到我们的功能包,以及使用哪种TurtleBot3模型(burger/waffle)。

将以下命令添加到你的~/.bashrc文件末尾:

echo "export TURTLEBOT3_MODEL=burger" >> ~/.bashrc echo "source ~/catkin_turtlebot3/devel/setup.bash" >> ~/.bashrc

然后立即生效:

source ~/.bashrc

这里我们选择burger模型进行演示,因为它对计算资源需求较低,适合在普通电脑上运行仿真。如果你有性能更强的机器,可以尝试waffle模型。

验证环境配置是否成功:

echo $ROS_PACKAGE_PATH env | grep TURTLEBOT3

如果看到输出中包含你的工作空间路径和TURTLEBOT3_MODEL=burger,说明环境配置正确。

4. 基础仿真测试

在进入正式的建图操作前,我们先进行简单的仿真测试,确保所有组件都能正常工作。

首先启动RViz可视化界面和虚拟机器人:

roslaunch turtlebot3_fake turtlebot3_fake.launch

这个命令会启动一个虚拟的TurtleBot3机器人,并在RViz中显示其状态。在新终端中启动键盘控制节点:

roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

现在你应该可以通过键盘控制虚拟机器人移动了。常用控制键位:

  • 前进: W
  • 左转: A
  • 停止: S
  • 右转: D
  • 后退: X

这个测试验证了ROS通信、机器人模型和控制系统是否正常工作。如果遇到RViz显示异常,检查是否所有依赖都已正确安装。

5. Gazebo仿真环境启动

接下来我们进入真正的物理仿真环节。Gazebo会提供一个带有物理引擎的3D环境,TurtleBot3将在其中模拟真实世界中的运动和行为。

启动Gazebo世界:

roslaunch turtlebot3_gazebo turtlebot3_world.launch

首次启动可能会比较慢,因为Gazebo需要下载模型资源。启动完成后,你会看到一个包含各种障碍物的仿真环境,以及一台TurtleBot3 burger机器人。

在这个仿真环境中,机器人配备了激光雷达、IMU等传感器,这些传感器数据将用于后续的建图任务。我建议先花点时间熟悉Gazebo界面,特别是查看激光雷达扫描数据的显示。

6. gmapping建图实战

现在来到最核心的部分 - 使用gmapping算法构建环境地图。gmapping是ROS中常用的SLAM算法,特别适合激光雷达建图场景。

我们需要同时运行三个关键节点:

  1. 在新终端中保持Gazebo运行:
roslaunch turtlebot3_gazebo turtlebot3_world.launch
  1. 在新终端中启动gmapping建图:
roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping
  1. 在新终端中启动键盘控制:
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

现在你可以在RViz中看到激光雷达的扫描数据(红色点)和逐渐生成的地图(灰色区域)。控制机器人尽可能覆盖整个环境,特别注意要回到起点形成闭环,这能显著提高地图质量。

在建图过程中有几个实用技巧:

  • 让机器人沿着墙壁移动有助于快速构建轮廓
  • 遇到复杂区域可以适当降低移动速度
  • 定期检查地图质量,发现问题区域可以重复扫描

7. 地图保存与应用

当你对地图质量满意后,就可以保存地图数据了。地图保存需要map_server功能包,我们之前已经安装过。

在新终端中执行:

rosrun map_server map_saver -f ~/map

这会在你的家目录下生成两个文件:map.pgm(地图图像)和map.yaml(地图元数据)。我建议创建一个专门目录存放不同环境的地图,方便后续管理。

保存好的地图可以用于自主导航。测试导航功能:

roslaunch turtlebot3_gazebo turtlebot3_world.launch roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/map.yaml

在RViz中使用"2D Pose Estimate"工具指定机器人初始位置,然后用"2D Nav Goal"设置目标点,机器人就会自动规划路径并移动。这个功能在实际机器人应用中非常实用,比如自动巡逻、物品搬运等场景。