跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C++AI算法

ROS2 Humble + slam_toolbox 激光雷达建图实战指南

基于 Ubuntu 22.04 与 ROS2 Humble 环境,演示如何使用 slam_toolbox 配合 RPLidar A1 完成机器人建图。涵盖依赖安装、udev 规则配置、自定义 launch 文件编写、TF 变换设置及 RViz 可视化调试。重点解析雷达参数映射与建图模式选择,提供从编译到地图保存的完整流程,适合初学者快速上手 SLAM 开发。

无尘发布于 2026/4/5更新于 2026/5/2113 浏览

环境说明

本教程基于 Ubuntu 22.04 操作系统,ROS2 Humble 发行版,搭配 RPLidar A1 激光雷达进行建图。

安装必要依赖

先更新系统源,确保能拉取到最新的 ROS2 包。

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

配置雷达驱动

为了让系统自动识别 USB 雷达,需要配置 udev 规则。将以下规则写入 /etc/udev/rules.d/rplidar.rules。

echo 'KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0666", GROUP:="dialout", SYMLINK+="rplidar"' | sudo tee /etc/udev/rules.d/rplidar.rules

加载规则并重新插拔雷达线。

sudo udevadm control --reload-rules
sudo udevadm trigger

验证设备节点是否生成。

ls -l /dev | grep ttyUSB

若看到类似 rplidar -> ttyUSB0 的链接,说明驱动已就绪。

启动雷达节点

单独启动雷达驱动,确认数据流正常。

ros2 launch rplidar_ros rplidar_a1_launch.py

新开终端检查扫描数据。

ros2 topic echo /scan --no-arr | head -5

此时若有数据回传,即可关闭该终端继续后续步骤。

创建 SLAM 启动文件

为了统一管理,建议在工作空间内创建自定义启动文件。

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

编辑 slam_with_rplidar.launch.py,配置雷达参数与 SLAM 模式。

import launch
 launch_ros.actions  Node
 launch.actions  DeclareLaunchArgument
 launch.substitutions  LaunchConfiguration

 ():
    use_sim_time = LaunchConfiguration(, default=)
    
    
    rplidar_node = Node(
        package=,
        executable=,
        name=,
        parameters=[{
            : ,
            : ,
            : ,
            : ,
            : ,
            : 
        }],
        output=
    )
    
    
    slam_toolbox_node = Node(
        package=,
        executable=,
        name=,
        output=,
        parameters=[{
            : use_sim_time,
            : ,
            : ,
            : ,
            : ,
            : ,
            : ,
            : 
        }]
    )
    
    
    static_tf_laser = Node(
        package=,
        executable=,
        arguments=[, , , , , , , ]
    )
    
    static_tf_odom = Node(
        package=,
        executable=,
        arguments=[, , , , , , , ]
    )
    
     launch.LaunchDescription([
        DeclareLaunchArgument(, default_value=),
        rplidar_node,
        static_tf_laser,
        static_tf_odom,
        slam_toolbox_node,
    ])
from
import
from
import
from
import
def
generate_launch_description
'use_sim_time'
'false'
# RPLidar A1 节点
'rplidar_ros'
'rplidar_node'
'rplidar_node'
'serial_port'
'/dev/rplidar'
'serial_baudrate'
115200
'frame_id'
'laser'
'inverted'
False
'angle_compensate'
True
'scan_mode'
'Standard'
'screen'
# slam_toolbox 节点
'slam_toolbox'
'async_slam_toolbox_node'
'slam_toolbox'
'screen'
'use_sim_time'
'map_frame'
'map'
'odom_frame'
'odom'
'base_frame'
'base_link'
'scan_topic'
'/scan'
'mode'
'mapping'
'resolution'
0.05
'max_laser_range'
12.0
# 静态 TF 发布
'tf2_ros'
'static_transform_publisher'
'0'
'0'
'0.1'
'0'
'0'
'0'
'base_link'
'laser'
'tf2_ros'
'static_transform_publisher'
'0'
'0'
'0'
'0'
'0'
'0'
'odom'
'base_link'
return
'use_sim_time'
'false'

修改 CMakeLists.txt,确保 launch 目录被正确安装。

install(DIRECTORY launch DESTINATION share/${PROJECT_NAME})

记得保留原有的 find_package 和 ament_package 部分。

构建工作空间

编译前别忘了 source 环境变量。

cd ~/slam_ws
colcon build
source install/setup.bash

启动 SLAM 与 RViz

两个终端分别执行。

# 终端 1
ros2 launch my_slam slam_with_rplidar.launch.py

# 终端 2
ros2 run rviz2 rviz2

配置 RViz 显示

在 RViz2 中设置 Fixed Frame 为 map。点击 Add 按钮添加三个关键项:

  1. LaserScan:Topic 选 /scan,颜色调成醒目色。
  2. Map:Topic 选 /map,开启 Draw Behind。
  3. TF:查看坐标框架关系是否正常。

保存配置方便下次加载。

建图与保存

推动机器人缓慢移动,覆盖目标区域。观察 RViz 中点云融合情况。

建图完成后,使用命令行保存地图文件。

ros2 run nav2_map_server map_saver_cli -f ~/my_first_map

生成的 .pgm 和 .yaml 文件即保存在当前目录下。

目录

  1. 环境说明
  2. 安装必要依赖
  3. 配置雷达驱动
  4. 启动雷达节点
  5. 创建 SLAM 启动文件
  6. 构建工作空间
  7. 启动 SLAM 与 RViz
  8. 终端 1
  9. 终端 2
  10. 配置 RViz 显示
  11. 建图与保存
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Stable Diffusion 入门教程:提示词与生成图片步骤详解
  • C++ 容器适配器与核心数据结构:栈、队列、Deque 底层实现与实战
  • Python 数据分析:分类算法原理与应用
  • GitHub Copilot 配置避坑与最佳实践指南
  • Stable Diffusion AI 绘画入门与使用指南
  • C++ 继承进阶:友元、静态成员与菱形继承底层逻辑
  • Google Antigravity AI 编程工具下载与安装指南
  • 大模型应用开发实战指南:基于 GPT-4 和 ChatGPT 的核心技术与实践
  • HCL 模拟器中 H3C 防火墙、AC 及交换机的 Web 登录配置
  • 开源数据同步中间件 Dbsyncer 使用指南
  • 小说推文全流程操作指南:从账号准备到变现
  • 基于机器学习的生态组合塘强化城市污水处理厂脱氮优化
  • 云环境训练 Stable Diffusion LoRA 模型教程
  • OpenClaw(原 Moltbot)底层架构解析
  • 基于 ResNet18 的轻量级 OCR WebUI 实战指南
  • Qclaw 使用指南:微信集成 AI 智能体实践
  • AI 产品经理转型指南:角色职责与学习路径
  • Nanbeige 4.1-3B Streamlit WebUI 添加对话评分与反馈功能
  • Spring Boot RESTful API 开发、测试与安全认证实战
  • OpenClaw 本地 AI 智能体:从部署到实战全解析

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online