LOAM论文阅读

article/2025/8/30 20:09:51

LOAM是Ji Zhang提出的使用激光雷达进行实时建图的算法,即Lidar Odometry and Mapping in Real-time。

Abstract

提出了一个用移动在6自由度的两轴激光雷达实现实时的里程计和建图的算法。由于距离测量值的不同时性和运动估计时产生的畸变导致点云错误匹配。这里作者提出一个很好的想法,即将同时定位和建图一分为二,这样就可以在不需要高精度测距或惯性测量的情况下实现两低——低漂移和低计算复杂度。核心由两个算法构成:一个算法是执行高频率(10Hz)但低精度的里程计去进行雷达的运动估计;另一个算法以比第一个低一个数量级的频率(1Hz)进行点云的匹配和信息注册(即建图和校正里程计)。LOAM算法就是把2这两个算法结合。

一、INTRODUCTION

3D激光雷达优点:测距频率高,准确;无论测量距离如何,误差都相对恒定。

问题:我们使用激光雷达建图,一般激光雷达相对于环境都会移动,我们在建图过程中就需要获取激光雷达的位姿。通常使用  GPS/INS  或者  车轮编码器/视觉里程计系统,但是不可避免会出现累计误差和漂移。

低漂移的两轴激光雷达的优点:对光线和物体纹理不敏感;体积和成本不断下降。故可以手持或者固定在小型移动设备上即可。

不涉及回环检测:因为此方法的目的是最小化里程计漂移。

具体如何实现低漂移和低计算量?

作者提出了提取边缘点和平面点作为特征点,去和边缘线段和平面块进行匹配。这种方法只需要计算一个点前后的5个点就得到该点的曲率,大大减少了计算量。

作者采用高低频率结合的方法,执行高频率(10Hz)但低精度的里程计去进行雷达的运动估计(odometry算法),同时进行低频率(1Hz)的点云匹配(mapping算法)。因为采用了高频率去进行运动估计,故建图的过程就有足够的时间去保证准确性。以较低频率运行时,建图算法可以合并大量特征点并进行足够次数的迭代以达到收敛。

二、RELATED WORK

如果激光雷达的转速相对于其本身的运动来说很高,那么运动造成的运动畸变可以被忽略。这种情况下,标准的ICP方法就可以用来进行两帧间的点云匹配。

但对于两轴激光雷达,因为它的其中一个轴的速度相对比较慢,即激光雷达的旋转速度相对较慢时会产生严重的运动畸变。通常用其他传感器获得速度信息去去除运动畸变。如使用带有IMU的视觉里程计或在可以用多传感器融合时使用卡尔曼滤波or粒子滤波器去除运动畸变。

出现问题:如果两轴激光雷达没有其他传感器辅助,那么运动估计和运动畸变的校正is a hard problem。列举了一些其他人的方法。

三、NOTATIONS AND TASK DESCRIPTION

假设激光雷达是预先标定好的;雷达的角速度和线速度光滑并连续(靠IMU实现)

定义了两个坐标系:

1.雷达坐标系:{L},x轴指向左边,y轴指向上,z轴指向前2,即右手系。

2.世界坐标系:世界坐标在初始时刻与雷达坐标系相同。

sweep:对于多线lidar,所有线束旋转一周称之为sweep。

scan:其中某一线束旋转一周则称之为scan。

四、SYSTEM OVERVIEW

1.硬件:激光扫描仪的视场为180°,分辨率为0.25°,扫描速度为40线/秒。激光扫描仪连接到电机,该电机被控制为在−90°和90°之间以180°/ s的角速度旋转。连续旋转激光雷达,扫描只是一个半球形的旋转。

2.软件系统:

 如图中的结构框架,此系统主要由四部分构成:Point Cloud Registration;Lidar Odometry;Lidar Mapping;Transform Integration。

\hat{P}:激光雷达扫描得到的点集;  P_{k}:第k次扫描得到的点集。

先计算连续两次扫描之间激光雷达的运动,并将估计得到的运动去修正P_{k}中的畸变点(执行频率10Hz);然后把上一步中去畸变的点云给了Lidar Mapping节点进行地图匹配(执行频率1Hz);最后由Transform Integration节点接收前面两个节点输出的transform信息,进行融合处理生成一个10Hz的transform信息?。

五、激光雷达里程计

1.特征点提取:

因为点云会出现非均匀性,采取从一次扫描中获得的点。选取边缘点和平面点作为特征点。

方法:提取点i周围的几个连续的点集S,用来求该点曲率,为了避免雷达顺时针和逆时针的影响,S中一半的点要在点i的一侧并且每两个点间隔0.25°。曲率公式如下:

每个点取前后相邻 5个点进⾏曲率计算,并将点及其曲率进⾏排序。 我们把曲率大于阈值的点叫做边缘点,曲率小于阈值的叫做平面点。为了防止特征点聚集不均匀,我们把一次扫描分为4个部分,每个部分提供两个边缘点和四个平面点。

在提取特征点的时候需要避免提取一些不好的点,这些点通常被认为是不可靠的,如下图:

(1)所选边缘点或平面点的数量不能超过子区域的最大值;

(2)它周围的点都没有被选中;

(3)不能在大致平行于激光束的平面上,如上图(a)中的点A,也不能在遮挡区域的边界上,如上图(b)中的点A。

 2.特征点匹配:

 t_{k}:表示第k次扫描开始的时间;一次扫描结束时的时间为t_{k+1},并且点云P_{k}进行重投影,把投影后的点云记为\bar{P_{k}},在第k+1次sweep的时候使用\bar{P_{k}}和新一帧点云P_{k+1}去估计雷达的运动。然后要寻找对应关系即匹配两帧点云的特征点。P_{k+1}中的边缘点和\bar{P_{k}}中的边缘线进行对应, P_{k+1}中的平面点和\bar{P_{k}}中的平面线进行对应。\varepsilon _{k+1}H_{k+1}分别代表P_{k+1}中边缘点和平面点的集合,在每一次迭代中,\varepsilon _{k+1}H_{k+1}都会被投影到起始点的坐标系下,记为\bar{\varepsilon _{k+1}}\bar{H_{k+1}},用于和上一帧点云进行匹配。\bar{P_{k}}中的曲率大和小2的点被保存在KD树里用于寻找对应点。

上图(a)表示寻找边缘点对应的边缘线的过程。设前⼀帧的基准点为i,在当前帧下,先寻找与点i处于同⼀条线上的最近点j,(i,j两点表示边缘线,)再寻找相邻雷达线上的最近点l (j和l来自不同的扫描),计算点i与直线(l,j )的距离, 并以此构建约束⽅程。

 

分子是两个向量的叉乘,叉乘后求模就变成了求两个向量构成的三角形的面积。分母是向量的模,相当于三角形底边的长。即S/底边=高,即de。

上图(b)表示寻找平面点对应的平面的过程。在当前帧下,先寻找与点i处于同一条线上的最近点j和l。l是和j在同一scan中与i最近的点,而m表示在与j相邻的scan中与i最近的点,保证三个点不共线。计算点i与平面(j,l,m)的距离,并以此构建约束⽅程。

分子有两部分,上是一个向量,下是两个向量叉乘再取模即求三角形的面积,再乘以上面的高,即立方体的体积。分母表示立方体的底面积,相除得到de。

3.运动估计:

激光雷达运动在每次扫描过程中以恒定的角速度和线速度进行建模,这样可以进行线性插值。比如我们知道了一帧数据终止点相对于起始点的转换矩阵就可以对这一帧数据中的任意点相对于起始点的时间进行插值,求得每个点的位姿。差值公式:

在之前特征点匹配时, \varepsilon _{k+1}H_{k+1}分别代表P_{k+1}中边缘点和平面点的集合, \bar{\varepsilon _{k+1}}\bar{H_{k+1}} 是重投影到sweep开始时刻的点集。为了求解激光雷达运动,我们需要在\varepsilon _{k+1}\bar{\varepsilon _{k+1}}之间或H_{k+1}\bar{\varepsilon _{k+1}}之间建立几何关系。

X_{\left ( k+1 i\right )}^{L}  是点 i在  \varepsilon _{k+1}H_{k+1}中的坐标, \tilde{X_{\left ( k +1 i\right )}^{L}}是 \bar{\varepsilon _{k+1}}\bar{H_{k+1}} 中的对应点

T_{\left ( k+1 i \right )}^{L} (a:b)是T_{\left ( k+1 i \right )}^{L}的第a至第b个条目;R是由罗德里格斯公式定义的旋转矩阵:

 其中\theta为旋转角:

\omega    :单位向量,方向为旋转方向。

\hat{\omega }\omega  的斜对称矩阵。

我们根据上面的式子得到\varepsilon _{k+1}中边缘点和对应边缘线之间的几何关系:

 同理我们可以得到在H_{k+1}中的平面点和对应平面之间的几何关系:

\lambda

 最后我们用LM方法求解雷达的运动。把\varepsilon _{k+1}H_{k+1} 中每个特征点的距离函数叠加,得到一个非线性函数:

 f的每一行对应于一个特征点,d包含了其相应的距离。计算J,为f相对于T_{k+1}^{L}的雅可比矩阵。

J =

 然后再进行非线性迭代求解,把d进行最小化:(\lambda是LM方法确定的重要因子)

 4.雷达里程计算法:

输入:最新扫描的点云\bar{P_{k}},当前扫描的增长点云 P_{k+1},最新递归的姿态变换T_{k+1}^{L}

 4-6行:当每次开启新扫描时,把T_{k+1}^{L}的值置0;

7行:在P_{k+1}中提取边缘点和平面点,分别构造   \varepsilon _{k+1}H_{k+1}

 9-19行:对于每个特征点,在\bar{P_{k}}中找其对应关系。运动估计适用于鲁棒拟合。

                第15行给每个特征点分配一个bisquare(双平方)权重,和其对应关系距离较大的特征点被赋予更小的权重,距离大于阈值的特征点被视为异常值并赋予权重为0。

                第16行姿态变换更新一次非线性迭代,如果找到收敛或满足最大迭代次数,非线性优化终止。如果扫描结束,则把 P_{k+1} 重新投影到时间戳 t_{k+2}  ,否则下一轮递归只返回变换 T_{k+1}^{L}

六、建图

建图算法的运行频率比里程计算法低,每次sweep只调用一次。

如上图Q_{k}定义为累积到第k次sweep的地图点云,T_{k}^{W}是第k次sweep结束时雷达相对于地图的位姿(蓝线),算法把T_{k}^{W}在【t_{k+1}t_{k+2}】拓展,获得T_{k+1}^{W},并且把\bar{P_{k+1}}​投影到世界坐标{W},表示为\bar{Q_{k+1}},然后把Q_{k}\bar{Q_{k+1}}相匹配。

特征点的提取方法与之前章相同,但使用了10倍的特征点(即里程计10次输出的数据)。为了找到特征点的对应关系,我们将点云存储在地图 Q_{k}上,大小为10立方米。立方体中与\bar{Q_{k+1}}相交的点被提取并存储在3D KD树中。我们在Q_{k}中寻找特征点周围的特定区域中的点。设 S′为一组选取的周围点的集合。我们计算 S ′ 的协方差矩阵,表示为M,以及M的特征值V和特征向量E。如果 S ′分布在一条边缘线上,V包含一个明显大于其他两个的特征值(即一大两小),E中与最大特征值相关的特征向量代表边缘线的方向。另一方面,如果 S ′ 分布在平面上,V包含两个较大的特征值,第三个明显较小(一小两大),而E中与最小特征值相关联的特征向量表示平面片的方向。边缘线或平面的位置通过穿过 S ′的几何中心来确定。
为了计算从特征点到其对应点的距离,我们在一条边缘线上选择两个点,在一个平面上选择三个点。然后根据之前的计算方式进行距离计算,构建非线性函数。与之前不同的是\bar{Q_{k+1}}中的所有点都共享时间戳  t(k+2)​(即不需要线性插值)。再次通过LM方法求解非线性问题,并将 \bar{Q_{k+1}}​匹配到地图上,为了均匀分布这些点云,通过体素滤波器缩小为5cm的立方体。

 

 如图是姿态变换的过程,蓝色代表激光雷达地图的姿态输出,每次扫描产生一次。橙色代表频率为10Hz的激光雷达里程计T_{k+1}^{L}的输出。雷达相对于地图的姿态是两种变换的组合,频率与激光雷达里程计相同。


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

相关文章

LOAM笔记及A-LOAM源码阅读

转载出处:LOAM笔记及A-LOAM源码阅读 - WellP.C - 博客园 导读 下面是我对LOAM论文的理解以及对A-LOAM的源码阅读(中文注释版的A-LOAM已经push到github,见A-LOAM-NOTED),最后也会手推一下LOAM源码中高斯牛顿法&#xf…

LOAM算法详解

激光SLAM 帧间匹配方法: Point-to-Plane ICPNDTFeature-based Method 回环检测方法: Scan-to-ScanScan-to-Map LOAM创新点 定位和建图的分离: 里程计模块:高频低质量的帧间运动估计建图模块:低频高质量的用于点云…

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个经典思维模型(附下载)

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