ROS2机器人slam_toolbox建图零基础

系统:Ubuntu22.04

ROS2版本:Humble

雷达设备:rplidar_a1

一、安装必要的软件包

# 更新系统 sudo apt update
# 安装slam_toolbox sudo apt install ros-humble-slam-toolbox
# 安装RPLidar驱动 sudo apt install ros-humble-rplidar-ros
# 安装导航相关包 sudo apt install ros-humble-navigation2 ros-humble-nav2-bringup

二、配置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()

这一步主要添加了launch目录:

install(DIRECTORY launch

    DESTINATION share/${PROJECT_NAME}        

)

五、构建工作空间

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

Read more

高飞团队新作!基于高阶CBF的端到端无人机,实现7.5m/s丛林穿越,突破RL安全瓶颈

高飞团队新作!基于高阶CBF的端到端无人机,实现7.5m/s丛林穿越,突破RL安全瓶颈

「强化学习高速避障新范式」 目录 01  主要方法  1. 训练阶段:基于物理先验的奖励塑形 1. Dijkstra全局引导奖励 2. 基于控制障碍函数的安全惩罚  2. 部署阶段:基于高阶控制障碍函数的实时滤波 02  实验结果  1.仿真训练与消融实验  2.基准测试  3.实机飞行验证 03  总结 在无人机高速避障领域,Ego-Planner等传统的模块化规划方法受限于感知-规划-控制的累积延迟,往往难以兼顾高速与安全;而RL等纯端到端的强化学习虽然敏捷,却因缺乏理论上的安全保障而被视为黑盒。 浙江大学高飞老师团队的这项工作,最令人振奋之处在于巧妙地构建了一套混合架构。 * 在训练阶段,利用 Dijkstra 势场 引导 RL 智能体跳出局部极小值陷阱 ,实现了全局可达性; * 在部署阶段,则引入了基于 高阶控制障碍函数(HOCBF)的安全滤波器,将神经网络输出的动作实时投影到可行域内。 这种设计不仅在数学上给出了碰撞避免的严谨证明,更在实测中实现了高达 7.5m/s

OpenClaw 集成飞书机器人:从入门到精通

OpenClaw 集成飞书机器人:从入门到精通 作者: 你的智能助手 发布时间: 2026-03-11 标签: #OpenClaw #飞书机器人 #自动化 #AIGC 📋 目录 1. 前言 2. 什么是 OpenClaw 3. 前期准备 4. 飞书应用创建与授权 5. OpenClaw 环境搭建 6. 飞书插件配置详解 7. 核心功能实战 8. 进阶技巧与最佳实践 9. 常见问题排查 10. 总结与展望 前言 在当今的数字化办公环境中,企业通讯工具已经成为日常协作的核心。飞书作为国内领先的企业协同平台,其强大的 API 生态为开发者提供了广阔的创作空间。而 OpenClaw 作为一个创新的 AI 代理框架,能够让你轻松地将大语言模型的能力接入到飞书中,实现真正的智能化办公。 本文将带你从零开始,

AR滤镜触发机制:识别特定图案激活特效

AR滤镜触发机制:识别特定图案激活特效 引言:从“看到”到“理解”的视觉跃迁 在增强现实(AR)应用中,如何让虚拟特效精准地响应真实世界的视觉信号,是提升用户体验的关键。传统AR滤镜多依赖人脸或姿态识别,而更高级的交互方式则基于特定图像或图案的识别来触发特效——这种技术被称为“图像目标识别”或“平面目标检测”。当摄像头捕捉到预设的图案(如一张海报、LOGO或二维码),系统立即识别并激活对应的3D模型、动画或音效。 本文聚焦于一种实际可落地的技术方案:基于阿里开源的万物识别-中文-通用领域模型,实现一个轻量级AR滤镜触发系统。我们将使用PyTorch框架完成推理部署,并通过修改Python脚本路径适配本地环境,最终实现“上传图片 → 自动识别 → 触发反馈”的完整流程。 这不仅适用于营销活动中的互动海报、教育场景中的智能课本,也为开发者提供了一套可快速验证的原型方案。 技术选型背景:为何选择“万物识别-中文-通用领域”? 在构建图像识别驱动的AR滤镜时,我们面临多个技术选项: * 使用OpenCV+SIFT/BRIEF等传统特征匹配方法 * 基于TensorFlow

【选型】地瓜机器人RDK系列选型指南:X3 vs X5 vs S100 vs S100P(含资源对比图)

【选型】地瓜机器人RDK系列选型指南:X3 vs X5 vs S100 vs S100P(含资源对比图)

在机器人开发领域,地瓜机器人(D-Robotics)凭借其“RDK(Robot Developer Kit)”系列开发套件,已成为众多开发者和创业团队的首选平台。从轻量级边缘计算到高性能具身智能,地瓜机器人已构建了覆盖多场景的完整产品线,致力于为开发者提供高性价比、高集成度、高扩展性的解决方案。其核心芯片“旭日®”系列持续迭代,推动AI与机器人深度融合,助力实现从感知到控制的全链路自主化。 本文将深入对比当前主流的四款RDK开发套件:RDK X3、RDK X5、RDK S100、RDK S100P,并提供详细的资源对比图与应用场景分析,帮助你快速完成技术选型,降低开发门槛,提升项目落地效率。 一、产品定位概览 在深入参数前,先明确每款产品的核心定位,以便根据项目阶段、预算和性能需求做出合理选择。 ● RDK X3:轻量级边缘AI计算模组,适合入门级机器人、智能摄像头、无人机等低功耗、小体积场景。是初学者和教育项目的理想起点,具备基础AI推理能力,可快速搭建视觉识别系统。 ● RDK