Loam livox 论文翻译和总结

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

Loam livox 论文翻译和总结


论文链接: Lin J , Zhang F . Loam livox: A fast, robust, high-precision LiDAR odometry and mapping package for LiDARs of small FoV[C]// 2020 IEEE International Conference on Robotics and Automation (ICRA). IEEE, 2020.

主要贡献

  1. 基于Loam算法适配小FoV固态激光雷达
  2. 扫描匹配的鲁棒外点剔除
  3. 场景动态物体过滤
  4. 激光雷达运动畸变补偿(采用分段法,比插值法有效)

一.固态激光雷达的特点

以大疆投资的子公司生产的Livox MID40 LiDar(https://www.livoxtech.com/mid-40-and-mid-100)为例来说明。

1. 小FoV

  • 固态雷达MID-40: 38.4度特征更少,匹配性能下降,更容易受运动物体干扰
  • 传感机械雷达VLP-16: 360度
    Mid-40和VLP-16的FoV对比

2. 不规律的扫描模式

  • 固态激光雷达: 固态激光雷达是基于单激光束的连续扫描,图案是累积的,不规律的,MID-40是玫瑰状的扫描图案,相邻的两次扫描几乎完全不一样。
  • 传统机械雷达: 激光发射接收器在一行垂直排列,旋转的时候进行扫描,结果作为一组平行的环状扫描。角点可以通过对环形线上的点深度值插值得到,可以方便的进行特征提取。
    在这里插入图片描述

3. 非重复扫描

为了达到尽可能大的扫描覆盖率,激光点的连续扫描位置是不会与之前的轨迹重复的

4. 运动模糊

由于是基于单激光头的连续扫描,因此在同一帧里扫描的3D点是在不同的时刻采样的。而与此同时,帧内的雷达运动会使得点云发生畸变,从而引起运动模糊。

二. 特征点提取和筛选

在这里插入图片描述
系统整体描述见上,前端部分主要由特征点提取和筛选组成。特征点基于雷达的属性(比如激光斑大小,信噪比)将有效点定义为"good points"

1. 3D点的筛选

在这里插入图片描述
计算激光雷达坐标系( X − Y − Z X-Y-Z XYZ前左上,FLU)下对应3D点 p = [ x , y , z ] p=[x, y, z] p=[x,y,z]的特征,具体为:

  • 点的深度D
    D ( P ) = s p r t ( x 2 + y 2 + z 2 ) (1) D(P) = sprt(x^2+y^2+z^2) \tag{1} D(P)=sprt(x2+y2+z2)(1)
  • 激光偏转角 ϕ \phi ϕ, 为X轴与激光束之间的夹角
    ϕ ( P ) = t a n − 1 ( s q r t ( ( y 2 + z 2 ) / x 2 ) ) (2) \phi(P) = tan^{-1}(sqrt((y^2+z^2)/x^2)) \tag{2} ϕ(P)=tan1(sqrt((y2+z2)/x2))(2)
  • 点的强度 I I I,R是雷达返回的的反射率/强度,强度越低表示点越远或者物体的反射率越低
    I ( P ) = R / D ( P ) 2 (3) I(P)=R/D(P)^2 \tag{3} I(P)=R/D(P)2 (3)
  • 入射角 θ \theta θ(incident angle), 为激光束和测量点附近平面的夹角
    θ ( P b ) = c o s − 1 ( P a − P c ) ⋅ P b ∣ P a − P c ∣ ⋅ ∣ P b ∣ (4) \theta(P_{b})=cos^{-1}\frac{(P_a-Pc)\cdot P_b}{|P_a-Pc|\cdot|Pb|} \tag{4} θ(Pb)=cos1PaPcPb(PaPc)Pb(4)
    为了提高定位和建图精度,将以下点剔除:
  1. 剔除在FoV边缘位置的点(MID-40中偏转角 ϕ \phi ϕ>17度)。 这些位置的扫描轨迹曲率较大,影响特征提取可靠性;
  2. 剔除强度过大或者过小的点( I < = 7 × 1 0 − 3 , o r I > = 1 × 1 0 − 1 I<=7\times10^{-3}, or I >=1\times10^{-1} I<=7×103,orI>=1×101)。信号强度太大容易导致接受端电路饱和或者受到干扰,导致探测精度下降。信号太弱则一般信噪比过低,也会探测精度也会下降。
  3. 剔除入射角在 π \pi π和0附近的点( θ < = 5 ° , o r , θ > = 175 ° \theta<=5°,or, \theta >=175° θ<=5°,or,θ>=175°)。在这些位置的点容易使得激光斑发生延长,探测距离是覆盖区域的平均值,因此导致探测精度下降。
  4. 剔除隐藏在物体后面的点。这容易引起错误的边缘特征检测。基于下面公式判断点 P e P_e Pe是否是隐藏点, P d P_d Pd为激光扫描顺序上距离最近的另一个测量点:
    ∣ P e − P d ∣ > = 0.1 ∣ P e ∣ , a n d ∣ P e ∣ > ∣ P d ∣ |P_e-P_d|>=0.1|P_e|, and |P_e|>|Pd| PePd>=0.1Pe,andPe>Pd

2. 特征提取

基于以上筛选出的"good points"进行特征提取,主要和Loam中的方法类似,通过计算候选点的局部平滑度来提取平面点特征边缘点特征。由于使用的固态激光雷达FoV较小,因此引入雷达的反射率作为第4维度的的测量信息。如果一个3D点的反射率与相邻的点不同,将其也作为边缘点考虑(形状发生变化时会存在边缘点,同样材料属性不同也会因为反射率不同出现边缘点)。这在面对同时存在门和窗户的墙面等类似场景时可以起到积极的有益作用。

三. 迭代姿态优化

由于固态激光雷达的非重复扫描特性,提取的特征不能像传统Loam算法中那样进行正常跟踪。比如,即使激光雷达是静止不动的,则当前帧也与上一帧的扫描图案和特征点不一致。本文使用一种迭代姿态优化(Iterative pose optimization)方法来计算雷达的pose, 经过适当的优化,可以实现20Hz实时的里程计和建图

1.边缘点残差(Residual of edge-to-edge)

ξ k \xi_k ξk表示当前帧中所有边缘点特征的集合, ξ m \xi_m ξm表示地图中所有边缘点特征的集合。对 ξ k \xi_k ξk中的每个点,在 ξ m \xi_m ξm中查找距离最近的5个点。为了加快查找速度,将 ξ m \xi_m ξm建立为一个kd树,而且kd树是当上一帧数据接收到并匹配成功后通过另外一个并行线程进行建立的。这能够保证当新的一帧数据到来时kd树能够立刻可用。
当前帧中的特征点是在当前帧坐标系(k-th frame, local Lidia frame),地图点特征是在global坐标系下。为了在地图点中找到当前帧中特征点 P l P_l Pl的最近点,则需要将当前帧中的点投影到global坐标系下:
P w = R k P l + T k (5) P_w = R_kP_l+T_k \tag{5} Pw=RkPl+Tk(5)
其中, ( R k , T k ) (R_k, T_k) (Rk,Tk)分别表示当前帧中上一个点被采样时LIDAR的pose, 由pose优化步骤决定。此处使用当前帧中的上一个特征点时刻的雷达pose作为整帧的pose,将此帧的所有特征点都投影到global地图中。需要注意的是,当前帧中的最后一个特征点也是下一帧的第一个特征点。这样位姿的先验信息存在时间序和空间序上的连续性。
P i P_i Pi表示在地图特征点集合中查找到的最近的第i个特征点。为了保证几个 P i P_i Pi在同一条线上,计算这几个点位置的均值 μ \mu μ和协方差矩阵 Σ \Sigma Σ。文中查找的最近点数量为5如果协方差矩阵的最大特征值比第二大特征值的3倍还要大,则认为这些查找到的最近点可以组成一条线,而且 P w P_w Pw应该也在这条线上。 接着,边缘特征点的残差可以计算(面积法):
r e 2 e = ∣ ( P w − P 5 ) × ( P w − P 1 ) ∣ ∣ P 5 − P 1 ∣ (6) r_{e2e} = \frac{|(P_w-P_5)\times(P_w-P_1)|}{|P_5-P_1|} \tag{6} re2e=P5P1(PwP5)×(PwP1)(6)

2. 平面点的残差(Residual of plane-to-plane)

与上述边缘点特征类似,同样基于当前帧中的平面点特征在地图中的平面点中查找对应最近的5个点。同样为了确保这些点在同一个平面上,需要计算这些点的协方差矩阵 Σ \Sigma Σ如果协方差矩阵的最小特征值的3倍比第二小特征值还要小,则计算当前帧中的此平面点到地图中这5个点组成的平面的距离。如下所示,此距离也是当前帧平面点特征的残差(体积法):
r p 2 p = ( P w − P 1 ) T ⋅ ( ( P w − P 1 ) × ( P 3 − P 1 ) ) ∣ ( P 3 − P 5 ) × ( P 3 − P 1 ) ∣ (7) r_{p2p} = \frac{(P_w-P_1)^T\cdot((P_w-P_1)\times(P_3-P_1))}{|(P_3-P_5)\times(P_3-P_1)|} \tag{7} rp2p=(P3P5)×(P3P1)(PwP1)T((PwP1)×(P3P1))(7)

3. 帧内运动补偿

因为扫描的点是在雷达运动过程中不同的时间对应不同的pose下采样得到的,因此会存在运动模糊情况。一般有两种方法处理运动模糊:
在这里插入图片描述
1) 分段处理:作者将完整的一帧分为3个子帧序列,将这3个子帧分别与当时累积的相同的地图进行匹配。每一个子帧的时间间隔是原始帧的1/3。尽管方法比较简单,但是作者经过实验验证可用性极强,尤其是可以使用多核处理器并行处理多个子帧的时候。
2) 线性插值: 原始Loam版本中就使用的线性插值方法。主要是根据上一帧的pose,当前帧的pose, 基于时间间隔进行T和R的插值。

4. 外点剔除,动态物体过滤

  • 首先进行小次数迭代(文中为2)。每次pose优化时,都重新查找地图中的最近点,并重新计算边缘点误差(6)和平面点误差(7),然后将其增加到目标函数中(此时目标函数包含两次查找邻近点增加的残差);
  • 小次数迭代优化结束后,计算公式(6)和公式(7)中的每组误差,并移除最大的20%的残差(外点);
  • 最后进行完整的pose迭代优化,直到到达设置的迭代次数最大值或者目标函数收敛到一定的阈值,则pose优化结束。
    具体过程见下:
    在这里插入图片描述

四. 结果

在这里插入图片描述

1. 建图评估

由图8中的两种运动补偿方法可见,不用任何运动补偿时,在楼梯和栏杆处会比较模糊,而且空间尺度较大时会发生轨迹畸变。分段法和线性插值法均可有效处理运动模糊的情况。但是线性插值法无法比较好的解决长时间的漂移问题,这是因为数据采集时是手持设备进行采集,运动比较剧烈,简单的线性插值模型不能很好地进行运动预测。

2. 里程计评估

文中使用GPS的定位结果对里程计的性能进行评估,两组数据的定位精度在0.41%和0.65%。使用运动捕捉系统进行了旋转的评估,平均欧拉角误差<1.1°。

3.运行性能

在这里插入图片描述
文中使用A-Loam(两种方法处理运动模糊都是使用分段法)作为baseline, 进行性能评估,分别在不同的机器上进行评估。受益于并行化进行子帧配准,特征匹配,kd-tree的建立,文中算法比A-Loam的运行速度快2-3倍。

4. 其他

代码: https://github.com/hku-mars/loam_livox
结果: https://github.com/ziv-lin/loam_livox_paper_res

五.结论

  • 文中主要提出一种基于小FoV固态激光雷达的里程计和建图方法,并针对性进行了优化
  • 基本算法继承自Loam,包括特征提取,匹配,运动补偿
  • 主要贡献在于1)3D点的筛选;2)迭代pose优化; 3)子帧并行化处理等

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

相关文章

对LOAM算法原理和代码的理解

LOAM概况 V-LOAM和LOAM在KITTI上的排名一直是前两名。 LOAM在KITTI上的排名 原始LOAM代码(带中文注释)的地址&#xff1a;https://github.com/cuitaixiang/LOAM_NOTED 作为教学用的A-LOAM代码地址&#xff1a;https://github.com/HKUST-Aerial-Robotics/A-LOAM使用ceres库来做…

LOAM论文阅读

LOAM是Ji Zhang提出的使用激光雷达进行实时建图的算法&#xff0c;即Lidar Odometry and Mapping in Real-time。 Abstract 提出了一个用移动在6自由度的两轴激光雷达实现实时的里程计和建图的算法。由于距离测量值的不同时性和运动估计时产生的畸变导致点云错误匹配。这里作…

LOAM笔记及A-LOAM源码阅读

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

LOAM算法详解

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

loam 框架流程描述

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

LOAM 梳理

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

LOAM 原理及代码实现介绍

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

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

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

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

LOAM简介

LOAM 文章目录 LOAMLOAM系统流程1、特征提取&#xff08;1&#xff09;按线数分割&#xff08;2&#xff09;计算曲率&#xff08;3&#xff09;删除异常点&#xff08;4&#xff09;按曲率大小筛选特征点 2、帧间匹配&#xff08;1&#xff09;特征关联与损失函数计算&#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问题分为&#xff1a;1. 高频的运动估…

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

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

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

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

思维模型 SWOT分析

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

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

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

思维模型 GROW

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

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

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

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

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

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

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