ROS-SLAM

ops/2025/2/3 17:55:14/

基本概念

SLAM 即 Simultaneous Localization and Mapping,中文名为同时定位与地图构建,是机器人自动驾驶、增强现实等领域中的关键技术。

在未知环境中,搭载特定传感器的主体(如机器人、无人机等)在运动过程中,需要实时确定自身在环境中的位置,同时构建出周围环境的地图,这一过程就是 SLAM 要解决的问题。例如,扫地机器人在清扫房间时,它并不知道房间的布局,需要一边移动一边搞清楚自己在哪里,同时把房间的地图绘制出来。

ROS - SLAM 中 SLAM 基本知识点

1. 核心问题
  • 定位(Localization):确定机器人在环境中的位置和姿态。机器人需要根据自身携带的传感器数据,如激光雷达的距离信息、摄像头的图像信息等,结合已有的先验地图(如果存在)来估计自己当前所处的位置和朝向。
  • 建图(Mapping):根据机器人在运动过程中获取的传感器数据,构建出周围环境的地图。地图的形式可以多种多样,常见的有栅格地图(将环境划分为一个个小格子,每个格子表示该区域是否被占据)、点云地图(由大量的三维点组成,描述环境中物体的表面信息)等。
2. 关键要素
  • 传感器
    • 激光雷达(LiDAR):通过发射激光束并测量反射光的时间来获取周围环境的距离信息,能提供高精度的二维或三维距离数据,是许多 SLAM 算法常用的传感器。
    • 摄像头:包括单目相机、双目相机和 RGB - D 相机等。单目相机成本低,但缺乏深度信息;双目相机可以通过视差计算得到深度信息;RGB - D 相机则可以直接输出彩色图像和深度图像。
    • 里程计(Odometry):通常用于提供机器人的运动信息,如轮子的旋转角度、角速度等,可用于估计机器人的相对位移和姿态变化。
  • 数据关联:在 SLAM 过程中,需要将不同时刻传感器观测到的特征或数据与地图中的元素进行匹配,确定它们之间的对应关系。例如,在激光雷达数据中,要判断当前扫描到的特征点是否与之前地图中的某个特征点是同一个。
  • 闭环检测:当机器人回到之前访问过的区域时,能够识别出来并利用这一信息对地图和自身位姿进行修正,以减少累积误差。

常用 SLAM 算法及节点通讯、订阅发布关系

1. Gmapping
  • 算法原理:基于 Rao - Blackwellized 粒子滤波(有时间了会讲解一下,大致理解即可)的方法,将机器人的位姿和地图的估计问题分离开来。通过粒子滤波来估计机器人的位姿,每个粒子对应一个可能的机器人轨迹,同时在每个粒子上维护一个地图。随着机器人的运动,不断更新粒子的权重和地图信息。
  • 节点通讯与订阅发布关系
    • 订阅话题
      • /scan:订阅激光雷达的扫描数据,通常为 sensor_msgs/LaserScan 类型,包含了激光雷达在各个角度上的测量距离信息。
      • /odom:订阅里程计数据,类型为 nav_msgs/Odometry,用于获取机器人的运动信息,辅助估计机器人的位姿。
    • 发布话题
      • /map:发布构建好的栅格地图,类型为 nav_msgs/OccupancyGrid,地图中的每个格子用一个数值表示该区域被占据的概率,常见的情况就是-1代表未知,0代表没有障碍物,1代表有障碍物
      • /map_metadata:发布地图的元数据,如地图的分辨率、原点位置等,类型为 nav_msgs/MapMetaData
      • /slam_gmapping/entropy:发布粒子滤波的熵值,反映了粒子的分散程度。
2. Hector SLAM
  • 算法原理:基于高斯牛顿优化方法,利用激光雷达数据进行地图构建和机器人定位。该算法不依赖于里程计信息,通过对激光雷达扫描数据进行匹配和优化,直接估计机器人的位姿和地图。它采用多分辨率地图来提高匹配的效率和精度。
  • 节点通讯与订阅发布关系
    • 订阅话题
      • /scan:订阅激光雷达的扫描数据,同 Gmapping 一样,为 sensor_msgs/LaserScan 类型。
    • 发布话题
      • /map:发布构建好的栅格地图,类型为 nav_msgs/OccupancyGrid
      • /map_metadata:发布地图的元数据,类型为 nav_msgs/MapMetaData
      • /tf:发布机器人的位姿变换信息,通过 TF(Transform)树来表示机器人在地图坐标系中的位置和姿态。
3. Cartographer
  • 算法原理:基于图优化的方法,将 SLAM 问题转化为一个图优化问题。在机器人运动过程中,将不同时刻的位姿和传感器数据作为图中的节点,节点之间的约束关系(如激光雷达数据的匹配结果)作为边。通过最小化图中所有约束的误差平方和来优化节点的位置,从而得到最优的地图和机器人位姿估计。
  • 节点通讯与订阅发布关系
    • 订阅话题
      • /scan:订阅激光雷达的扫描数据,类型为 sensor_msgs/LaserScan
      • /imu:订阅惯性测量单元(IMU)的数据,类型为 sensor_msgs/Imu,用于提供机器人的姿态信息,辅助定位和建图。
      • /odom:订阅里程计数据,类型为 nav_msgs/Odometry
    • 发布话题
      • /map:发布构建好的地图,通常为栅格地图或子地图的集合。
      • /submap_list:发布子地图的列表信息,包含了每个子地图的元数据和状态信息。
      • /trajectory_node_list:发布机器人的轨迹节点信息,记录了机器人在不同时刻的位姿。

在当下的实际应用中,cartographer 的应用范围和流行度呈上升趋势,尤其是在对建图精度和场景规模要求较高的工业和自动驾驶领域。gmapping 由于其简单性和易实现性,在教学和一些对精度要求不是极高的室内小规模场景中仍然有一定的应用。hector_slam 则在特定的无里程计场景中发挥着不可替代的作用。


http://www.ppmy.cn/ops/155362.html

相关文章

精品PPT | 华为企业数据架构、应用架构及技术架构设计方法

这份PPT详细介绍了华为企业数据架构、应用架构及技术架构的设计方法。它涵盖了数据架构的五大原则,包括数据按对象管理、企业全局视角定义数据架构、遵从企业数据分类管理框架、概念实体结构化数字化以及数据服务化同源共享等,旨在确保数据在企业内的一致…

Chromium132 编译指南 - Android 篇(一):编译前准备

1. 引言 欢迎来到《Chromium 132 编译指南 - Android 篇》系列的第一部分。本系列指南将引导您逐步完成在 Android 平台上编译 Chromium 132 版本的全过程。Chromium 作为一款由 Google 主导开发的开源浏览器引擎,为众多现代浏览器提供了核心驱动力。而 Android 作…

【深度解析】DeepSeek-R1的五大隐藏提示词

LangChain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…

webrtc协议详细解释

### 一、概述与背景 WebRTC(Web Real-Time Communication)最早由 Google 在 2011 年开源,旨在为浏览器与移动端应用提供客户端直连(点对点)方式进行实时音视频及数据传输的能力。传统的网络应用在进行高实时性音视频通…

使用Z-score进行数据特征标准化

数据标准化是数据处理过程中非常重要的一步,尤其在构建机器学习模型时尤为关键。标准化的目的是将不同量纲的变量转换到相同的尺度,以避免由于量纲差异导致的模型偏差。Z-score标准化是一种常见且简单的标准化方法,它通过计算数据点与平均值的差异,并将其按标准差进行缩放,…

【Block总结】完全注意力Fully Attentional,同时捕捉空间和通道的注意力|即插即用

论文信息 标题: Fully Attentional Network for Semantic Segmentation论文链接: https://arxiv.org/pdf/2112.04108GitHub链接: https://github.com/maggiesong7/FullyAttentional 创新点 全注意力模块(FLA): 该模块能够在一个相似性图中同时捕捉空…

DIY QMK量子键盘

最近放假了,趁这个空余在做一个分支项目,一款机械键盘,量子键盘取自固件名称QMK(Quantum Mechanical Keyboard)。 键盘作为计算机或其他电子设备的重要输入设备之一,通过将按键的物理动作转换为数字信号&am…

DeepSeek:AI领域的创新先锋

在人工智能领域,DeepSeek正以其独特的创新技术引领着行业的发展。作为一款高性能、低成本的AI模型,DeepSeek在架构设计、训练优化和应用场景等多个方面都展现出了显著的创新点。这些创新不仅使其在技术上取得了突破,也为AI的普及化和应用拓展…