跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表

目录

  1. 一、安装必要的软件包
  2. 更新系统
  3. 安装 slam_toolbox
  4. 安装 RPLidar 驱动
  5. 安装导航相关包
  6. 二、配置 RPLidar_A1
  7. 创建 udev 规则
  8. 重新加载 udev 规则
  9. 查看雷达是否被识别
  10. 应该看到类似:lrwxrwxrwx 1 root root 7 Nov 6 10:20 rplidar -> ttyUSB0
  11. 三、启动雷达
  12. 启动 RPLidar A1
  13. 在另一个终端检查激光数据
  14. 这一步有报错很正常,因为我们只看前 5 行的数据
  15. 四、创建 SLAM 启动文件
  16. 创建工作空间目录(如果还没有)
  17. 创建功能包(如果需要)
  18. 创建 launch 目录
  19. find dependencies
  20. 添加这行:安装 launch 目录
  21. the following line skips the linter which checks for copyrights
  22. comment the line when a copyright and license is added to all source files
  23. the following line skips cpplint (only works in a git repo)
  24. comment the line when this package is in a git repo and when
  25. a copyright and license is added to all source files
  26. 五、构建工作空间
  27. 六、启动完整的 SLAM 系统
  28. 终端 1:启动 SLAM 和雷达
  29. 终端 2:启动 RViz2
  30. 七、配置 RViz2 显示建图过程
  31. 八、开始建图
  32. 九、保存地图
  • 💰 8折买阿里云服务器限时8折了解详情
C++AI算法

ROS2 slam_toolbox 雷达建图配置指南

Ubuntu 22.04 环境下使用 ROS2 Humble 版本配合 slam_toolbox 和 RPLidar A1 激光雷达进行 SLAM 建图的完整流程。涵盖软件包安装、udev 规则配置、雷达驱动启动、自定义 launch 文件编写与编译、RViz2 可视化配置以及地图保存步骤。通过静态 TF 变换连接雷达与底盘坐标系,实现实时建图功能。

灵魂伴侣发布于 2026/4/9更新于 2026/4/211 浏览

系统:Ubuntu 22.04 ROS2 版本:Humble 雷达设备:rplidar_a1

一、安装必要的软件包

# 更新系统
sudo apt update

# 安装 slam_toolbox
sudo apt install ros-humble-slam-toolbox

# 安装 RPLidar 驱动
 apt install ros-humble-rplidar-ros


 apt install ros-humble-navigation2 ros-humble-nav2-bringup
sudo
# 安装导航相关包
sudo

二、配置 RPLidar_A1

创建 udev 规则(让系统识别雷达)

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

# 重新加载 udev 规则
sudo udevadm control --reload-rules
sudo udevadm trigger

重新插拔雷达 USB 线,测试雷达连接。

# 查看雷达是否被识别
ls -l /dev | grep ttyUSB
# 应该看到类似:lrwxrwxrwx 1 root root 7 Nov 6 10:20 rplidar -> ttyUSB0

三、启动雷达

# 启动 RPLidar A1
ros2 launch rplidar_ros rplidar_a1_launch.py

# 在另一个终端检查激光数据
ros2 topic echo /scan --no-arr | head -5
# 这一步有报错很正常,因为我们只看前 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

# 创建 launch 目录
mkdir -p ~/slam_ws/src/my_slam/launch

创建启动文件:

nano ~/slam_ws/src/my_slam/launch/slam_with_rplidar.launch.py

添加以下代码:

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

def generate_launch_description():
    # 定义启动参数
    use_sim_time = LaunchConfiguration('use_sim_time', default='false')

    # RPLidar A1 节点
    rplidar_node = Node(
        package='rplidar_ros',
        executable='rplidar_node',
        name='rplidar_node',
        parameters=[{
            'serial_port': '/dev/rplidar',
            'serial_baudrate': 115200,
            'frame_id': 'laser',
            'inverted': False,
            'angle_compensate': True,
            'scan_mode': 'Standard'
        }],
        output='screen'
    )

    # slam_toolbox 节点
    slam_toolbox_node = Node(
        package='slam_toolbox',
        executable='async_slam_toolbox_node',
        name='slam_toolbox',
        output='screen',
        parameters=[{
            'use_sim_time': 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 发布 - 定义雷达位置
    static_tf_laser = Node(
        package='tf2_ros',
        executable='static_transform_publisher',
        name='static_transform_publisher_laser',
        arguments=['0', '0', '0.1', '0', '0', '0', 'base_link', 'laser']
    )

    # 静态 TF 发布 - 定义 base_link 到 odom 的初始位置
    static_tf_odom = Node(
        package='tf2_ros',
        executable='static_transform_publisher',
        name='static_transform_publisher_odom',
        arguments=['0', '0', '0', '0', '0', '0', 'odom', 'base_link']
    )

    return launch.LaunchDescription([
        DeclareLaunchArgument('use_sim_time', default_value='false'),
        rplidar_node,
        static_tf_laser,
        static_tf_odom,
        slam_toolbox_node,
    ])

添加依赖:

cd ~/slam_ws/src/my_slam
nano CMakeLists.txt

将内容修改为:

cmake_minimum_required(VERSION 3.8)
project(my_slam)

if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  add_compile_options(-Wall -Wextra -Wpedantic)
endif()

# find dependencies
find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
find_package(slam_toolbox REQUIRED)
find_package(nav2_msgs REQUIRED)

# 添加这行:安装 launch 目录
install(DIRECTORY launch DESTINATION share/${PROJECT_NAME})

if(BUILD_TESTING)
  find_package(ament_lint_auto REQUIRED)
  # the following line skips the linter which checks for copyrights
  # comment the line when a copyright and license is added to all source files
  set(ament_cmake_copyright_FOUND TRUE)
  # the following line skips cpplint (only works in a git repo)
  # comment the line when this package is in a git repo and when
  # a copyright and license is added to all source files
  set(ament_cmake_cpplint_FOUND TRUE)
  ament_lint_auto_find_test_dependencies()
endif()

ament_package()

五、构建工作空间

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

六、启动完整的 SLAM 系统

# 终端 1:启动 SLAM 和雷达
ros2 launch my_slam slam_with_rplidar.launch.py

# 终端 2:启动 RViz2
ros2 run rviz2 rviz2

七、配置 RViz2 显示建图过程

在 RViz2 中:

  1. 修改 Fixed Frame: Global Option---->Fixed Frame: 设置为 map

  2. 添加显示项(点击 Add 按钮)

    • LaserScan:
      • Topic : /scan
      • Size : 0.1
      • Color : 红色或绿色
    • Map:
      • Topic : /map
      • Color Scheme : costmap
      • Draw Behind : √
    • TF:
      • 显示坐标框架关系
  3. 保存 RViz 配置 file---->Save Config As ----> ~/slam_ws/slam_config.rviz

八、开始建图

  1. 缓慢移动雷达在环境中行走
  2. 观察 RViz 中的建图过程
  3. 确保覆盖所有区域

九、保存地图

建图完成后,保存地图:

ros2 run nav2_map_server map_saver_cli -f ~/my_first_map
  • 💰 8折买阿里云服务器限时8折购买
  • 🦞 5分钟部署阿里云小龙虾了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • OpenWebUI 配合 SearXNG 实现本地大模型联网搜索及国内引擎配置
  • llama.cpp 大模型本地部署使用介绍
  • 2026 年中国 200 余家机器人及具身智能企业名单
  • OpenClaw 运行原理剖析:个人 AI 操作系统引擎解析
  • 前端监控实战:错误、性能与用户行为追踪
  • Polar CTF Web 简单题目解题思路总结
  • LLaMA-Factory WebUI 快速上手与模型加载问题解决方案
  • Llama-3.2-3B 本地部署实测:中文会议文本摘要压缩与信息保留分析
  • 2026 年 Python+AI 学习路线完整指南:从零基础到实战专家
  • Page-Agent:一行 JS 代码实现大模型前端 DOM 操作
  • 使用 Web Scraper 插件爬取知乎评论数据
  • 基于无代码平台构建 AI 简历优化助手实战指南
  • PyCharm 安装通义灵码插件实现 AI 辅助编码
  • Adaptive RAG 系统搭建:LangGraph、FastAPI 与 Streamlit 实战
  • Qwen1.5-0.5B-Chat Web 界面开发技巧
  • LLaMA Factory 大模型微调指南
  • Qwen2.5-7B 对话机器人微信接入部署指南
  • GitHub Copilot 接入 Figma MCP 还原设计稿生成前端代码
  • AI 智能编码工具深度测评:Copilot、Comate 与通义灵码对比
  • Lada v0.10.1 本地 AI 视频去马赛克工具使用指南

相关免费在线工具

  • 加密/解密文本

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

  • RSA密钥对生成器

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

  • Mermaid 预览与可视化编辑

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

  • Base64 字符串编码/解码

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

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online