一步步教你掌握 Gmapping:ROS 里的 SLAM 神器

 Article hero image

一、Gmapping 简介

Gmapping 是一款基于 ROS 的开源 SLAM 算法,它采用激光雷达数据进行地图创建和机器人定位。Gmapping 使用格子贝叶斯滤波器 (Grid-based FastSLAM) 算法,具有较高的地图精度和实时性。通过使用 Gmapping,可以实现室内外环境的实时建图和定位。

二、环境配置

  1. 系统要求:本教程以 Ubuntu 18.04 为例,同时需要安装 ROS Melodic。如果你还没有安装 ROS,请参考 ROS 官方安装教程

  2. 安装依赖包:在安装 Gmapping 之前,需要先安装以下依赖包:

    sudo apt-get install ros-melodic-slam-gmapping
    sudo apt-get install ros-melodic-turtlebot3
    sudo apt-get install ros-melodic-turtlebot3-simulations
    sudo apt-get install ros-melodic-turtlebot3-navigation
    
  3. 创建工作空间:

    mkdir -p ~/catkin_ws/src
    cd ~/catkin_ws/src
    catkin_init_workspace
    cd ~/catkin_ws
    catkin_make
    

    然后将工作空间添加到 ~/.bashrc:

    echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
    source ~/.bashrc
    

三、运行 Gmapping 示例

  1. 首先,启动 TurtleBot3 模拟器:

    export TURTLEBOT3_MODEL=burger
    roslaunch turtlebot3_gazebo turtlebot3_world.launch
    

    这将在 Gazebo 模拟器中启动一个 TurtleBot3 机器人。

  2. 接下来,运行 Gmapping 算法:

    roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping
    

    这将启动 Gmapping 算法并开始接收激光雷达数据。

  3. 开始导航:

    roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
    

    这将启动一个键盘控制节点,通过按键 W/A/S/D 控制机器人移动。

  4. 查看地图:

    可以通过 Rviz 工具查看实时生成的地图:

    rosrun rviz rviz -d `rospack find turtlebot3_slam`/rviz/turtlebot3_gmapping.rviz
    

    在 Rviz 中,你可以看到机器人在环境中的位置以及正在生成的地图。随着机器人的移动,地图将逐渐变得更加完整。

  5. 保存地图:

    当地图建立完成时,可以使用以下命令将其保存为一个 .pgm 和 .yaml 文件:

    rosrun map_server map_saver -f ~/map
    

    这将在你的用户目录下生成一个名为 map 的文件夹,其中包含地图的 .pgm 和 .yaml 文件。

四、总结

通过本教程,你已经学会了如何在 Ubuntu 系统中安装和使用 Gmapping。Gmapping 是一款强大的 SLAM 工具,可以帮助你快速为机器人构建地图并进行定位。当然,你还可以将此教程中的方法应用于实际的机器人硬件,以实现室内外环境的实时建图和定位。希望这篇文章对你有所帮助,祝你在 ROS 世界中探索得愉快!