Loam livox 论文翻译和总结

  • 主要贡献
    • 一.固态激光雷达的特点
      • 1. 小FoV
      • 2. 不规律的扫描模式
      • 3. 非重复扫描
      • 4. 运动模糊
    • 二. 特征点提取和筛选
      • 1. 3D点的筛选
      • 2. 特征提取
    • 三. 迭代姿态优化
      • 1.边缘点残差(Residual of edge-to-edge)
      • 2. 平面点的残差(Residual of plane-to-plane)
      • 3. 帧内运动补偿
      • 4. 外点剔除,动态物体过滤
    • 四. 结果
      • 1. 建图评估
      • 2. 里程计评估
      • 3.运行性能
      • 4. 其他
    • 五.结论

论文链接: 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度

2. 不规律的扫描模式

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

3. 非重复扫描

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

4. 运动模糊

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

二. 特征点提取和筛选


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

1. 3D点的筛选


计算激光雷达坐标系(X−Y−ZX-Y-ZX−Y−Z前左上,FLU)下对应3D点p=[x,y,z]p=[x, y, z]p=[x,y,z]的特征,具体为:

  • 点的深度D
    D(P)=sprt(x2+y2+z2)(1)D(P) = sprt(x^2+y^2+z^2) \tag{1}D(P)=sprt(x2+y2+z2)(1)
  • 激光偏转角ϕ\phiϕ, 为X轴与激光束之间的夹角
    ϕ(P)=tan−1(sqrt((y2+z2)/x2))(2)\phi(P) = tan^{-1}(sqrt((y^2+z^2)/x^2)) \tag{2}ϕ(P)=tan−1(sqrt((y2+z2)/x2))(2)
  • 点的强度III,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), 为激光束和测量点附近平面的夹角
    θ(Pb)=cos−1(Pa−Pc)⋅Pb∣Pa−Pc∣⋅∣Pb∣(4)\theta(P_{b})=cos^{-1}\frac{(P_a-Pc)\cdot P_b}{|P_a-Pc|\cdot|Pb|} \tag{4}θ(Pb​)=cos−1∣Pa​−Pc∣⋅∣Pb∣(Pa​−Pc)⋅Pb​​(4)
    为了提高定位和建图精度,将以下点剔除:
  1. 剔除在FoV边缘位置的点(MID-40中偏转角ϕ\phiϕ>17度)。 这些位置的扫描轨迹曲率较大,影响特征提取可靠性;
  2. 剔除强度过大或者过小的点(I<=7×10−3,orI>=1×10−1I<=7\times10^{-3}, or I >=1\times10^{-1}I<=7×10−3,orI>=1×10−1)。信号强度太大容易导致接受端电路饱和或者受到干扰,导致探测精度下降。信号太弱则一般信噪比过低,也会探测精度也会下降。
  3. 剔除入射角在π\piπ和0附近的点(θ<=5°,or,θ>=175°\theta<=5°,or, \theta >=175°θ<=5°,or,θ>=175°)。在这些位置的点容易使得激光斑发生延长,探测距离是覆盖区域的平均值,因此导致探测精度下降。
  4. 剔除隐藏在物体后面的点。这容易引起错误的边缘特征检测。基于下面公式判断点PeP_ePe​是否是隐藏点, PdP_dPd​为激光扫描顺序上距离最近的另一个测量点:
    ∣Pe−Pd∣>=0.1∣Pe∣,and∣Pe∣>∣Pd∣|P_e-P_d|>=0.1|P_e|, and |P_e|>|Pd| ∣Pe​−Pd​∣>=0.1∣Pe​∣,and∣Pe​∣>∣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坐标系下。为了在地图点中找到当前帧中特征点PlP_lPl​的最近点,则需要将当前帧中的点投影到global坐标系下:
Pw=RkPl+Tk(5)P_w = R_kP_l+T_k \tag{5}Pw​=Rk​Pl​+Tk​(5)
其中,(Rk,Tk)(R_k, T_k)(Rk​,Tk​)分别表示当前帧中上一个点被采样时LIDAR的pose, 由pose优化步骤决定。此处使用当前帧中的上一个特征点时刻的雷达pose作为整帧的pose,将此帧的所有特征点都投影到global地图中。需要注意的是,当前帧中的最后一个特征点也是下一帧的第一个特征点。这样位姿的先验信息存在时间序和空间序上的连续性。
PiP_iPi​表示在地图特征点集合中查找到的最近的第i个特征点。为了保证几个PiP_iPi​在同一条线上,计算这几个点位置的均值μ\muμ和协方差矩阵Σ\SigmaΣ。文中查找的最近点数量为5如果协方差矩阵的最大特征值比第二大特征值的3倍还要大,则认为这些查找到的最近点可以组成一条线,而且PwP_wPw​应该也在这条线上。 接着,边缘特征点的残差可以计算(面积法):
re2e=∣(Pw−P5)×(Pw−P1)∣∣P5−P1∣(6)r_{e2e} = \frac{|(P_w-P_5)\times(P_w-P_1)|}{|P_5-P_1|} \tag{6}re2e​=∣P5​−P1​∣∣(Pw​−P5​)×(Pw​−P1​)∣​(6)

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

与上述边缘点特征类似,同样基于当前帧中的平面点特征在地图中的平面点中查找对应最近的5个点。同样为了确保这些点在同一个平面上,需要计算这些点的协方差矩阵Σ\SigmaΣ。如果协方差矩阵的最小特征值的3倍比第二小特征值还要小,则计算当前帧中的此平面点到地图中这5个点组成的平面的距离。如下所示,此距离也是当前帧平面点特征的残差(体积法):
rp2p=(Pw−P1)T⋅((Pw−P1)×(P3−P1))∣(P3−P5)×(P3−P1)∣(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​=∣(P3​−P5​)×(P3​−P1​)∣(Pw​−P1​)T⋅((Pw​−P1​)×(P3​−P1​))​(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)子帧并行化处理等

Loam livox 论文翻译和总结相关推荐

  1. Spatial As Deep: Spatial CNN for Traffic Scene Understanding论文翻译

    Spatial As Deep: Spatial CNN for Traffic Scene Understanding论文翻译 Abstract摘要 Convolutional neural net ...

  2. 论文翻译_论文翻译的注意事项有什么?

    针对不同题材的文稿有不同的翻译标准,论文翻译是比较严谨的一种翻译类型,下面小编给大家分享论文翻译的注意事项有什么? 注意"从一而终" 所有的论文,在权威平台上发布的时候都必须译为英 ...

  3. 转:经典论文翻译导读之《Google File System》

    首页 所有文章 资讯 Web 架构 基础技术 书籍 教程 Java小组 工具资源 - 导航条 -首页所有文章资讯Web架构基础技术书籍教程Java小组工具资源 经典论文翻译导读之<Google ...

  4. 论文翻译_做论文翻译需要知道哪些翻译技巧?知行翻译:这3个技巧

    论文,在古代是指交谈辞章或交流思想.而现代常用来指进行各个学术领域的研究和描述学术研究成果的文章.论文不仅是探讨问题进行学术研究的一种手段,也是描述学术研究成果进行学术交流的一种工具.常见的种类包括学 ...

  5. php 谷歌翻译api_科研福音,论文翻译神器系列!

    参考文献很大程度上反映了一篇论文的水平.对于研究生来说,自己动手写论文前的第一步工作就是阅读大量高水平.前沿的文献,而这些论文大多是英文写就. 人工翻译一般比较耗时且需要扎实的语言功底,对于初学者来说 ...

  6. Arcface v1 论文翻译与解读

    神罗Noctis 2019-10-13 16:14:39  543  收藏 4 展开 论文地址:http://arxiv.org/pdf/1801.07698v1.pdf 最新版本v3的论文翻译:Ar ...

  7. 【转】分布式一致性算法:Raft 算法(Raft 论文翻译)

    编者按:这篇文章来自简书的一个位博主Jeffbond,读了好几遍,翻译的质量比较高,原文链接:分布式一致性算法:Raft 算法(Raft 论文翻译),版权一切归原译者. 同时,第6部分的集群成员变更读 ...

  8. Deep Residual Learning for Image Recognition(ResNet)论文翻译及学习笔记

    [论文翻译]:Deep Residual Learning for Image Recognition [论文来源]:Deep Residual Learning for Image Recognit ...

  9. 【剪枝算法】通过网络瘦身学习高效的卷积网络Learning Efficient Convolutional Networks through Network Slimming论文翻译

    此论文翻译仅仅用于自己方便学习.译文来自其他处. 在许多实际应用中部署深度卷积神经网络(CNN)很大程度上受到其计算成本高的限制.在本文中,我们提出了一种新的CNNs学习方案,能同时1)减小模型大小; ...

最新文章

  1. Oracle SQL Tuning Advisor 测试
  2. KlayGE SVN原生支持立体显示
  3. matlab已知散点图求方程,已知空间离散点,想求出曲面方程,怎么办?
  4. 地址总线是单向还是双向_三端双向交流开关(TRIAC)
  5. SSIS变量属性中EvaluateAsExpression设置的作用
  6. Windows按键翻译
  7. C++Builder 2010深入TApplication类之方法
  8. 早期关节炎患者延迟就诊风湿专科的长期影响
  9. pfSense软路由防火墙
  10. Android AccessibilityService 辅助功能
  11. linux内核纳秒精度时间,Linux时钟精度:毫秒?微妙?纳秒?
  12. 遗传图谱基础原理培训资料
  13. 工业物联网有什么特征
  14. C#界面设计--5--Bitmap.save保存图片时: GDI+ 中发生一般性错误 解决办法
  15. python中pytest教程_Pytest安装新手详细教程
  16. 记录使用scrapy爬取新闻网站最新新闻存入MySQL数据库,每天定时爬取自动更新
  17. bootstrap 查询条件布局
  18. 详解FLETA的Proof-of-Formulation共识算法
  19. mysql实现悲观锁语句_mysql悲观锁总结和实践
  20. 周期性行业是什么意思_周期性行业

热门文章

  1. 基于UE4的多RHI线程实现
  2. [计算机数值分析]高斯-塞德尔迭代公式解线性方程组
  3. Fastadmin 海外服务器离线安装插件失败解决方案
  4. ES6中let的用法及一个小案例,在for循环中运行setTimeout的四种情况:
  5. Markdown系列(6)- 如何优雅地在Markdown中输入数学公式
  6. 机器学习理论 || GMM模型
  7. 2017-12-05 JavaScript实现ZLOGO子集: 前进+转向
  8. 暑假集训-8.5总结
  9. VIVE Focus 3 驱动问题
  10. php中explode的是什么类型的_PHP中explode函数和split函数的区别小结