ROS2 Humble 下基于 slam_toolbox 与 RPLidar 建图实战
本文基于 Ubuntu 22.04 系统,使用 ROS2 Humble 版本配合 RPLidar A1 雷达,演示如何利用 slam_toolbox 完成机器人自主建图。整个过程涵盖环境搭建、硬件驱动配置、自定义启动文件编写以及 RViz 可视化调试。
环境准备与依赖安装
首先确保系统更新,然后安装必要的 ROS2 功能包。这里需要用到 slam_toolbox 进行建图,以及 rplidar_ros 驱动雷达,同时为了后续导航扩展,建议一并安装 navigation2 相关包。
sudo apt update
sudo apt install ros-humble-slam-toolbox
sudo apt install ros-humble-rplidar-ros
sudo apt install ros-humble-navigation2 ros-humble-nav2-bringup
硬件连接与权限配置
RPLidar A1 通过 USB 连接后,系统默认可能无法直接访问设备节点,需要配置 udev 规则赋予权限。这步很关键,否则后续节点会报错无权限。
创建规则文件:
echo 'KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0666", GROUP:="dialout", SYMLINK+="rplidar"' | sudo tee /etc/udev/rules.d/rplidar.rules
重载规则并重新插拔 USB 线:
sudo udevadm control --reload-rules
sudo udevadm trigger
ls -l /dev | grep ttyUSB
确认输出中包含类似 lrwxrwxrwx ... rplidar -> ttyUSB0 的链接,说明识别成功。
启动雷达与验证数据
在终端中启动雷达节点,并在另一个终端查看激光扫描话题是否正常发布。
# 终端 1
ros2 launch rplidar_ros rplidar_a1_launch.py
# 终端 2
ros2 topic echo /scan --no-arr | head -5
如果能看到点云数据(即使有少量报错也属正常),说明驱动工作正常。
构建自定义 SLAM 启动文件
虽然可以直接调用现成 launch 文件,但为了灵活控制参数(如 TF 变换、帧 ID 等),建议在工作空间中创建自定义启动文件。
创建工作空间结构:
mkdir -p ~/slam_ws/src
cd ~/slam_ws/src
ros2 pkg create my_slam --build-type ament_cmake --dependencies rclcpp slam_toolbox nav2_msgs
mkdir -p ~/slam_ws/src/my_slam/launch

