LOAM算法详解

article/2025/8/30 20:08:04

激光SLAM

帧间匹配方法:

  • Point-to-Plane ICP
  • NDT
  • Feature-based Method

回环检测方法:

  • Scan-to-Scan
  • Scan-to-Map

LOAM创新点

  • 定位和建图的分离:
    • 里程计模块:高频低质量的帧间运动估计
    • 建图模块:低频高质量的用于点云的精细匹配和配准
  • 基于特征的帧间匹配
  • 提取边缘特征点(edge)和平面特征点(plannar)

激光雷达里程计

特征点提取

第k次扫描(sweep)的点云表示为 P k \mathcal{P}_k Pk,其中一个扫描点 i ∈ P k i\in\mathcal{P}_k iPk,令 S i \mathcal{S}_i Si表示同一扫描中点i周围的点集,点i的曲率:
c i = 1 ∣ S ∣ ∥ X ( k , i ) L ∥ ∥ ∑ j ∈ S , j ≠ i ( X ( k , i ) L − X ( k , j ) L ) ∥ ( 1 ) c_i=\frac{1}{|\mathcal{S}|\lVert X_{\left( k,i \right)}^{L} \rVert}\lVert \sum_{j\in \mathcal{S},j\ne i}{\left( X_{\left( k,i \right)}^{L}-X_{\left( k,j \right)}^{L} \right)} \rVert \qquad\qquad(1) ci=SX(k,i)L1jS,j=i(X(k,i)LX(k,j)L)(1)
根据曲率值对一次扫描中的点进行排序,选取曲率最大的点为边缘特征点(edge point),选取曲率最小的点为平面特征点(plannar point)。边缘特征点的曲率需要大于某个阈值,平面特征点的曲率需要小于某个阈值。已经被选择的特征点附近的点不再考虑,选择的特征点总量也有限制。
另外,还需要排除一些异常值:
1)排除平行于激光扫描平面的点,候选点及其附近点集合拟合的平面与激光线束的夹角不能过小,对应(a);
2)排除遮挡区域边界的点,候选点附近的点集中没有与候选点在激光束方向上间距过大的点,对应(b)。
异常点

特征匹配

基于特征的Scan-to-Scan匹配方法
在开始于 t k t_k tk的第k次sweep扫描完成之后, P k \mathcal{P}_k Pk被重投影到时刻 t k + 1 t_{k+1} tk+1,记作 P ˉ k \bar{\mathcal{P}}_k Pˉk,并存储在3D KD-tree中用于快速检索,以方便之后的匹配。
重投影点云
在第k+1次sweep扫描开始后, P k + 1 \mathcal{P}_{k+1} Pk+1随着接收到更多的点而逐渐增长,按照上一章的提取方法提取边缘特征点和平面特征点。令 E k + 1 \mathcal{E}_{k+1} Ek+1 H k + 1 \mathcal{H}_{k+1} Hk+1分别表示k+1次sweep边缘特征点和平面特征点的集合。从 P ˉ k \bar{\mathcal{P}}_k Pˉk中找到边缘线作为 E k + 1 \mathcal{E}_{k+1} Ek+1中点的对应,平面块作为 H k + 1 \mathcal{H}_{k+1} Hk+1中点的对应。

激光里程计在一次扫描过程中迭代估计自身运动,在每次迭代中,使用当前估计的变换将将 E k + 1 \mathcal{E}_{k+1} Ek+1 H k + 1 \mathcal{H}_{k+1} Hk+1重投影到扫描开始时刻,记为 E ~ k + 1 \tilde{\mathcal{E}}_{k+1} E~k+1 H ~ k + 1 \tilde{\mathcal{H}}_{k+1} H~k+1

下图左侧表示寻找边缘点的对应边缘线的过程,设i为 E ~ k + 1 \tilde{\mathcal{E}}_{k+1} E~k+1中的一个点, i ∈ E ~ k + 1 i\in \tilde{\mathcal{E}}_{k+1} iE~k+1,边缘线由两个点表示。设j是i在 P ˉ k \bar{\mathcal{P}}_k Pˉk中的最近邻点,l是i在j的相邻线束扫描中的最近邻点。(j,l)构成了i的对应边缘线。然后需要根据曲率式(1)验证j和l都是边缘点。这样做的考虑是单个扫描线不能包含来自同一边缘线的多个点,只有一个例外:边缘线平行于扫描平面,这种情况是异常情况不会提取特征点。
下图右侧表示寻找平面点的对应平面块,与边缘点类似,在 P ˉ k \bar{\mathcal{P}}_k Pˉk中找i的最近邻点j。然后在j的相同扫描线和相邻扫描线中分别找i的最近邻点l和m,这保证了三个点不共线。然后根据曲率公式验证是平面点。

在这里插入图片描述
点到线的距离:
d E = ∣ ( X ~ ( k + 1 , i ) L − X ˉ ( k , j ) L ) × ( X ~ ( k + 1 , i ) L − X ˉ ( k , l ) L ) ∣ ∣ X ~ ( k + 1 , i ) L − X ˉ ( k , l ) L ∣ d_{\mathcal{E}}=\dfrac{\left\lvert \left(\tilde{\boldsymbol{X}}^L_{(k+1,i)}-\bar{\boldsymbol{X}}^L_{(k,j)}\right) \times \left(\tilde{\boldsymbol{X}}^L_{(k+1,i)}-\bar{\boldsymbol{X}}^L_{(k,l)}\right)\right\rvert}{\left\lvert\tilde{\boldsymbol{X}}^L_{(k+1,i)}-\bar{\boldsymbol{X}}^L_{(k,l)}\right\rvert} dE= X~(k+1,i)LXˉ(k,l)L (X~(k+1,i)LXˉ(k,j)L)×(X~(k+1,i)LXˉ(k,l)L)
点到面的距离:
d H = ∣ ( X ~ ( k + 1 , i ) L − X ˉ ( k , j ) L ) ⋅ ( X ˉ ( k , j ) L − X ˉ ( k , l ) L ) × ( X ˉ ( k , j ) L − X ˉ ( k , m ) L ) ∣ ∣ ( X ˉ ( k , j ) L − X ˉ ( k , l ) L ) × ( X ˉ ( k , j ) L − X ˉ ( k , m ) L ) ∣ d_{\mathcal{H}}=\dfrac{\left\lvert \left(\tilde{\boldsymbol{X}}^L_{(k+1,i)}-\bar{\boldsymbol{X}}^L_{(k,j)} \right) \cdot \left(\bar{\boldsymbol{X}}^L_{(k,j)}-\bar{\boldsymbol{X}}^L_{(k,l)}\right) \times \left(\bar{\boldsymbol{X}}^L_{(k,j)}-\bar{\boldsymbol{X}}^L_{(k,m)}\right)\right\rvert}{\left\lvert \left(\bar{\boldsymbol{X}}^L_{(k,j)}-\bar{\boldsymbol{X}}^L_{(k,l)}\right) \times \left(\bar{\boldsymbol{X}}^L_{(k,j)}-\bar{\boldsymbol{X}}^L_{(k,m)}\right)\right\rvert} dH= (Xˉ(k,j)LXˉ(k,l)L)×(Xˉ(k,j)LXˉ(k,m)L) (X~(k+1,i)LXˉ(k,j)L)(Xˉ(k,j)LXˉ(k,l)L)×(Xˉ(k,j)LXˉ(k,m)L)
T k + 1 L \boldsymbol{T}^L_{k+1} Tk+1L代表 t k + 1 t_{k+1} tk+1 t t t的雷达位姿变换
点-线残差:
f E ( X ( k + 1 , i ) L , T k + 1 L ) = d E , i ∈ E k + 1 f_{\mathcal{E}}(\boldsymbol{X}^L_{(k+1,i)},\boldsymbol{T}^L_{k+1})=d_{\mathcal{E}}\ ,\ i\in\mathcal{E}_{k+1} fE(X(k+1,i)L,Tk+1L)=dE , iEk+1

点-面残差:
f H ( X ( k + 1 , i ) L , T k + 1 L ) = d H , i ∈ H k + 1 f_{\mathcal{H}}(\boldsymbol{X}^L_{(k+1,i)},\boldsymbol{T}^L_{k+1})=d_{\mathcal{H}}\ ,\ i\in\mathcal{H}_{k+1} fH(X(k+1,i)L,Tk+1L)=dH , iHk+1
将所有点-线残差和点-面残差结合起来得到残差矢量
f ( T k + 1 L ) = d \boldsymbol{f}(\boldsymbol{T}^L_{k+1})=\boldsymbol{d} f(Tk+1L)=d
最小二乘问题:
min ⁡ T k + 1 L F ( x ) = 1 2 ∥ f ( T k + 1 L ) ∥ Ω 2 \min_{\boldsymbol{T}^L_{k+1}} F(x)=\dfrac{1}{2} \left\lVert \boldsymbol{f}(\boldsymbol{T}^L_{k+1}) \right\rVert^2_{\Omega} Tk+1LminF(x)=21 f(Tk+1L) Ω2
其中 ∥ x ∥ Ω 2 = x T Ω x \left\lVert \boldsymbol{x}\right\rVert_{\Omega}^2=\boldsymbol{x}^T\Omega \boldsymbol{x} xΩ2=xTΩx Ω \Omega Ω是权重矩阵,又叫信息矩阵。
该算法为每个特征点分配一个二方权重。与其对应的距离较大的特征点被分配较小的权重,距离大于阈值的特征点被认为是异常值并分配零权重。


http://chatgpt.dhexx.cn/article/jONtgsHJ.shtml

相关文章

loam 框架流程描述

前端流程(scanRegistration.cpp) 多线激光雷达即有多个激光发射器同时工作,如常见的 Velodyne16,就是共有 16 个激光发射器,一般这些发射器竖排排列,然后一起水平旋转。 激光雷达在一定的时间内旋转一圈,即一帧的点云数据。值得注…

LOAM 梳理

LOAM 梳理 本篇文章对 LOAM 框架进行宏观的解析,暂不涉及内部具体的实现原理。 整个流程 整个 LOAM 框架分为三个主要部分,分别为 Registration(特征提取)、Odometry(特征匹配)和 Mapping(建…

LOAM 原理及代码实现介绍

文章目录 LOAM 原理及代码实现介绍LOAM技术点LOAM整体框架退化问题代码结构 LOAM 原理及代码实现介绍 paper:《Lidar Odometry and Mapping in Real-time》 LOAM的参考代码链接: A-LOAM A-LOAM-Notes LOAM-notes 使用传感器介绍: 如果没有电机旋转&am…

学习LOAM笔记——特征点提取与匹配

学习LOAM笔记——特征点提取与匹配 学习LOAM笔记——特征点提取与匹配1. 特征点提取1.1 对激光点按线束分类1.2 计算激光点曲率1.3 根据曲率提取特征点 2. 特征点匹配2.1 scan-to-scan中的特征点匹配2.2 scan-to-map中特征点匹配 3. 补充 学习LOAM笔记——特征点提取与匹配 兜…

Loam算法详解(配合开源代码aloam)

参考论文:LOAM: Lidar Odometry and Mapping in Real-time 代码:A-LOAM Ubuntu 18.04 ROS Melodic eigen 3.3.4 PCL 1.8.1 ceres 2.0 A-LOAM 配置 LOAM算法是激光slam中一个经典的开源框架,结合qin tong 博士的开源代码a-loam&#xff…

无人驾驶学习笔记 - LOAM 算法论文核心关键点总结

目录 1、框架 2、特征点提取 3、点云去畸变 4、帧间匹配 特征关联与损失函数计算 a 线特征 b 面特征 5、运动估计 6、建图 7、姿态融合 8、LOAM 优劣势 9、参考连接 1、框架 loam框架核心是两部分,高频率的里程计和低频率的建图。两种算法处理。里程计通…

LOAM简介

LOAM 文章目录 LOAMLOAM系统流程1、特征提取(1)按线数分割(2)计算曲率(3)删除异常点(4)按曲率大小筛选特征点 2、帧间匹配(1)特征关联与损失函数计算&#xf…

SLAM算法 -LOAM框架分析(一)

LOAM框架分析 算法简介1 激光里程计(高频率)1.1 计算曲率1.2 筛选特征1.3 问题建模1.3.1 损失函数1.3.2 运动补偿 1.4 优化求解1.5 定位输出 2 环境建图(低频率)2.1 问题模型2.2 PCA特征 参考文献 算法简介 LOAM的整体思想就是将复杂的SLAM问题分为:1. 高频的运动估…

顶级高手常用的16个思维模型

“养成一个掌握多元思维模型的习惯是你能做的最有用的事情”,投资家、巴菲特的黄金拍档查理 芒格认为:“思维模型是你大脑中做决策的工具箱。你的工具箱越多,你就越能做出最正确的决策。”与您分享查理芒格的12种思维模型,对做决…

100种思维模型之大脑系统思维模型-52

上世纪60年代,美国神经学家保罗 D 麦克莱恩(Paul D. MacLean)首次提出“三脑一体”假说,他认为人的大脑是蜥蜴-松鼠-猴子合体的隐喻,代表了进化发展不同阶段的遗传。 复旦大学管理学院的项保华教授对此有一个精彩的总结…

思维模型 SWOT分析

本系列文章 主要是 分享 思维模型,涉及各个领域,重在提升认知 1 模型故事 一个技术岗位想转产品经理(个人职业规划SWOT的应用),做的SWOT分析,进而可以量化自己转型的成本: 小王想在自己的居住小…

【转载】100个思维模型(不一定都适用,各取所需)

世界上最有智慧的人是怎样理性思考的?他们在商业活动和个人生活中是如何做决策的? 95岁的智慧老人查理芒格的“多元思维模型”,相信大家都不陌生。 他提倡要学习在所有学科中真正重要的理论,并在此基础上形成所谓的“普世智慧”&…

思维模型 GROW

本系列文章 主要是 分享 思维模型,涉及各个领域,重在提升认知 1 模型故事 推广故事:近期A公司开发一个产品活动的 促销方案,进行了简单的业务流程梳理后便开始了小范围的推广。首先让公司里的同事每人每天拉取20个新人。经过10天…

100种思维模型之细节效率思维模型-74

提及细节效率?也许很多人会有疑问,“效率”怎么跟“细节”挂上钩,注重“细节”了,还能有“高率”? 是的,细节能提高效率,注意某些细节,效率事半功倍。 01、何谓细节效率思维模型 一…

100种思维模型之长远思考思维模型-63

古语有云:“人无远虑,必有近忧!” 任正非说:不谋长远者,不足以谋一时! 长远思考思维,一个提醒我们要运用长远眼光,树立宏大目标,关注长期利益的思维模型 01何谓长远思考…

提升自己的认知-思维模型

之前写过有关思维的博客思维方式与认知,关于思维方式与做事方式有所思考。最近看到如何判断一个人是杰出的聪明人还是平庸的普通人?的文章,感触颇深。现摘录有所感触的思维方式。 一、思维模型 1、每周“5小时”学习法则 参考:https://36kr.com/p/5130501.html?from=aut…

100种思维模型之坏模因思维模型-44

啥是模因? 简单说,就是 文化基因, 也就是别人传输给我们的 观念。 我们生活中到处都是 模因, 比如,“跟我不一致的观点都是错的”,属于敌对型模因,让别的观念没办法进入你的大脑&#xf…

40个经典思维模型(附下载)

导读: 思维模型可以称之为知识背后的知识,道理背后的道理,现象背后的真相。可以指导我们以一当百,更加本质的看透事物和现象,并更加本质的解决问题。 如果我们要学习的东西有限,那么我会推荐每个人优先去学…

100种分析思维模型(1)

公众号后台回复“图书“,了解更多号主新书内容 作者:林骥 来源:林骥 最近,我在读《穷查理宝典》这本书,其中提到查理芒格应用大约 100 种多元思维模型,他孜孜不倦地对投资问题进行充分的准备、广泛的研究和…

常见思维模型汇总(一)

文章目录 一、SWOT模型1、简介 2、SWOT模型的拆解二、波士顿5力模型1、简介2、缺陷3、分解3.1.供应商的议价能力(Bargaining Power of Suppliers)3.2.购买者的议价能力 (Bargaining Power of Buyers)3.3.新进入者的威胁&#xff0…