经典文献阅读之--STD(激光SLAM回环检测算法)

这篇具有很好参考价值的文章主要介绍了经典文献阅读之--STD(激光SLAM回环检测算法)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0. 简介

各位也知道,我们在之前的博客中,介绍了很多回环的方法,比如Scan Context,Lris, BoW3D等方法。之前作者也在《重定位解析与思考》一文中,给到了一些回环检测算法的介绍。最近林博新开源了一个回环检测算法《STD: A Stable Triangle Descriptor for 3D place recognition》。我们从小乌坞博主中的实验中发现,确实效果不错,同时相关的代码也已经在Github上开源了。

std: stable triangle descriptor for 3d place recognition,slam,经典文献,算法

图1。(a)显示从查询点云中提取的稳定三角形描述符(STD)。(b)显示从历史点云中提取的STD。(c)显示了这两帧点云之间STD匹配的示例。正确匹配的STD描述符由白色框标示,并且通过STD提供的姿态进行点云配准。这两帧点云是由一个小视场角激光雷达(Livox Avia)在相反方向移动收集的,导致点云重叠度低且视角变化剧烈(请查看我们的YouTube附带视频: youtu.be/O-9iXn1ME3g)。


1. 主要贡献

本文开发了一种新的描述符:STD,它用三角形对场景中的任意三个关键点进行编码。与其他描述符中使用的多边形相比,三角形更稳定,因为三角形的形状是根据边长(或夹角)唯一定义的。与关键点周围的局部描述符相比,三角形的形状完全是旋转和平移不变的。为了提取三角形描述符的关键点,作者在平面上进行点云投影,并在边界上提取关键点,然后将关键点组成三角形。匹配是基于三角形的相似度进行的。

典型的STD位置识别案例如图所示,在同一位置成功识别了两个从相反视角采集的点云。具体而言如下:

  • 设计了一个三角形描述符,这是一个六维向量,由三个三角形边的长度和法向量之间的夹角组成。描述子保持旋转和平移完全不变,同时保持高度的可区分性。
  • 提出了一种基于关键帧的快速关键点提取方法。为了表示场景的结构信息,将点云投影在平面边界处,并提取其中的关键点,这些关键点与相邻关键点形成三角形描述符。
  • 在多种类型的场景(城市、室内和非结构化环境)和不同的激光雷达数据(传统旋转激光雷达和固态激光雷达)下评估算法。充分的实验结果验证了该方法的有效性。

2. 主要方法

在后面几节中,我们描述如何从点云中提取稳定三角形描述符。接下来,我们介绍如何构建描述符字典以及如何选择环路候选项。最后,我们提出了基于RANSAC的环路检测和几何验证,用于完整的环路检测流程。我们的方法的整体流程如图2所示。

std: stable triangle descriptor for 3d place recognition,slam,经典文献,算法

图2. 我们算法的工作流程。我们的方法从关键帧中计算三角形描述符。然后使用哈希表作为描述符的数据库,以进行快速存储和匹配。具有前10个描述符匹配分数的帧将被选为候选项。一旦通过几何验证,环路候选项将被视为有效的环路。在触发环路时,还将获得环路帧和候选帧之间的相对变换。

3. 稳定三角形描述符

受[26]的启发,为了提高分割的稳定性,我们在关键帧上执行环路检测,这些关键帧具有从几个连续的扫描中积累的点,因此具有增加的点云密度,而不管具体的LiDAR扫描模式。具体而言,我们使用LiDAR里程计[28]将每个新进入的点云注册到当前关键帧中。当子帧数累积到一定数量时,将创建一个新的关键帧。给定点云的关键帧时,我们首先通过区域生长进行平面检测。具体而言,我们将整个点云分成给定大小的体素(例如1m)。每个体素包含一组点 p i ( i = 1 , … , N ) p_i(i = 1,…,N) pi(i=1N);然后我们计算点协方差矩阵 Σ Σ Σ

std: stable triangle descriptor for 3d place recognition,slam,经典文献,算法

λ k λ_k λk为矩阵 Σ Σ Σ的第 k k k大特征值。平面判定原则为:

std: stable triangle descriptor for 3d place recognition,slam,经典文献,算法

其中 σ 1 σ_1 σ1 σ 2 σ_2 σ2是预设的超参数。根据这个判定标准,我们可以检查体素中的点是否形成一个平面,如果是,则称该体素为平面体素。然后,我们从任何一个平面体素开始初始化一个平面,并通过搜索其相邻的体素来扩展平面。如果相邻的体素是相同的平面(具有相同的平面法线方向,距离低于阈值),则它们将被添加到正在生长的平面中。否则,如果相邻的体素不在同一个平面上,则将其添加到平面的边界体素列表中。上述生长过程重复,直到所有添加的相邻体素被扩展,或者到达边界体素(参见图4)。

std: stable triangle descriptor for 3d place recognition,slam,经典文献,算法

图4. 平面扩展过程

对于边界体素,我们将其包含的点投影到相应的平面上(参见图5(a)和图5(b))。对于每个平面,我们创建一个图像,其中图像平面与平面重合,每个像素表示包含在平面的边界体素中的点的最大距离。然后,我们选择一个点,在其5 * 5邻域中具有最大像素值,作为关键点(参见图5(c))。每个提取的关键点对应于输入点云中的一个3D点,并且可以附加其从中提取的平面的法线。

使用关键帧中提取的关键点,我们构建一个k-D树,并为每个点搜索20个近邻点以形成三角形描述符。具有相同边长的冗余描述符将被消除。每个三角形描述符包含三个顶点 p 1 p_1 p1 p 2 p_2 p2 p 3 p_3 p3,具有投影法线向量 n 1 n_1 n1 n 2 n_2 n2 n 3 n_3 n3。此外,三角形的顶点按照边长规则按升序排列(参见图3)。我们总结一个三角形描述符 ∆ ∆ 的内容如下:

  • p 1 、 p 2 、 p 3 p_1、p_2、p_3 p1p2p3:三个顶点,

  • n 1 、 n 2 、 n 3 n_1、n_2、n_3 n1n2n3:三个投影法线向量,

  • l 12 、 l 23 、 l 13 l_{12}、l_{23}、l_{13} l12l23l13:三个边, l 12 ≤ l 23 ≤ l 13 l_{12}≤l_{23}≤l_{13} l12l23l13

  • q q q:三角形的重心,

  • k k k:对应于描述符的帧号。

    除了描述符,我们还将保存从该关键帧提取的所有 n n n个平面 Π = ( π 1 , π 2 , … , π n ) Π = (π_1,π_2,…,π_n) Π=(π1π2πn),用于以下的几何验证步骤。

    std: stable triangle descriptor for 3d place recognition,slam,经典文献,算法

    图5. (a) 边界体素中的点以黄色着色。(b) 将这些点投影到相邻的平面上(蓝色点)。©平面图像,其中每个像素表示边界体素中的点到平面的最大距离(以厘米为单位)。如果一个点在其5 * 5邻域中具有最大像素值,它将被视为关键点(红色点)。

    4. 搜索环候选项 (比较重要的知识)

    由于一个关键帧中可以提取出数百个描述子,为了快速查询和匹配描述子,我们使用哈希表来存储所有描述子。我们在描述子中使用具有旋转和平移不变性的六个属性来计算哈希键,这些属性是边长 l 12 、 l 23 、 l 13 l_{12}、l_{23}、l_{13} l12l23l13以及法向量投影向量 n 1 ⋅ n 2 , n 2 ⋅ n 3 , n 1 ⋅ n 3 n_1·n_2,n_2·n_3,n_1·n_3 n1n2n2n3n1n3的点积。具有所有六个类似属性的描述子将具有相同的哈希键,因此存储在同一个容器中。对于一个查询关键帧,我们提取其所有描述子,如3节所述。对于每个描述子 ∆ i ∆_i i,我们计算其哈希键,将其定位到哈希表中相应的容器,并为在此容器中具有描述子的关键帧投票一次。当查询关键帧中的所有描述子 ∆ i ∆_i i都被处理时,匹配过程结束。获得前10个票数的关键帧将被选为具有匹配描述子的候选项,并保存供环检测步骤使用。文章来源地址https://www.toymoban.com/news/detail-776199.html

…详情请参照古月居

到了这里,关于经典文献阅读之--STD(激光SLAM回环检测算法)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 经典文献阅读之--Gaussian Splatting SLAM(单目3D高斯溅射重建)

    3D GS在NeRF领域已经掀起了一股浪潮,然后又很快席卷到了SLAM领域,最近已经看到很多3D GS和SLAM结合的开源工作了。将为大家分享帝国理工学院戴森机器人实验最新开源的方案《Gaussian Splatting SLAM》,这也是第一个将3D GS应用到增量3D重建的工作,速度为3 FPS。要想实时从摄像头

    2024年03月10日
    浏览(41)
  • 经典文献阅读之--Orbeez-SLAM(单目稠密点云建图)

    对于现在的VSLAM而言,现在越来越多的工作开始聚焦于如何将深度学习结合到VSLAM当中,而最近的这个工作就给出了一个比较合适的方法。《Orbeez-SLAM: A Real-time Monocular Visual SLAM with ORB Features and NeRF-realized Mapping》这篇文章,可以轻松适应新的场景,而不需要预先训练,并实时为

    2024年02月13日
    浏览(30)
  • 3d激光slam建图与定位(2)_aloam代码阅读

    1.常用的几种loam算法 aloam 纯激光 lego_loam 纯激光 去除了地面 lio_sam imu+激光紧耦合 lvi_sam 激光+视觉 2.代码思路 2.1.特征点提取scanRegistration.cpp,这个文件的目的是为了根据曲率提取4种特征点和对当前点云进行预处理 输入是雷达点云话题 输出是 4种特征点点云和预处理后的当前

    2024年02月11日
    浏览(24)
  • 经典文献阅读之--PCAccumulation(动态三维场景构建)

    多波束激光雷达传感器,常用于自动驾驶汽车和移动机器人,获取三维范围扫描序列(“帧”)。由于角度扫描分辨率有限和遮挡,每帧只稀疏地覆盖场景。稀疏性限制了下游过程的性能,如语义分割或表面重建。幸运的是,当传感器移动时,从不同的视点捕获帧。这提供了

    2024年02月03日
    浏览(30)
  • 【激光SLAM】激光的前端配准算法

    在激光SLAM中,前端配准(Frontend Registration)是实现定位和地图构建的关键步骤之一。它的作用是将当前帧的激光扫描数据与先前帧(或参考帧)的激光扫描数据进行配准,以获取它们之间的 相对位姿变换 。 通过前端配准,激光SLAM系统可以实现对机器人在环境中的位置和姿

    2024年02月19日
    浏览(29)
  • 经典文献阅读之--VoxFormer(基于Transformer的3D语义场景补全)

    之前了解了很多BEV的相关操作,但是基本上要么是激光和视觉结合,要么是纯视觉完成的2D激光投影这两种,而那种3D Occupancy方法可以利用栅格的方法完成纯视觉占据栅格的生成。《VoxFormer: Sparse Voxel Transformer for Camera-based 3D Semantic Scene Completion》就是这种方法对于被遮挡的物

    2024年01月23日
    浏览(40)
  • 开源3D激光(视觉)SLAM算法汇总(持续更新)

    目录 一、Cartographer 二、hdl_graph_slam 三、LOAM 四、LeGO-LOAM 五、LIO-SAM 六、S-LOAM 七、M-LOAM 八、livox-loam 九、Livox-Mapping 十、LIO-Livox 十一、FAST-LIO2 十二、LVI-SAM 十三、FAST-Livo 十四、R3LIVE 十五、ImMesh 十六、Point-LIO 十七、PV-LIOVoxelMap Cartographer是由谷歌于2016年开源的一个支持ROS的室内

    2024年02月03日
    浏览(27)
  • 经典文献阅读之--Dynamic-VINS(动态点滤除VINS)

    现在的SLAM算法在静态环境中表现良好,但在动态环境中很容易失败。最近的工作将基于深度学习的语义信息引入到SLAM系统以减轻动态对象的影响。然而,在资源受限的机器人的动态环境中应用鲁棒定位仍然具有挑战性。所以《RGB-D Inertial Odometry for a Resource-Restricted Robot in Dy

    2024年02月09日
    浏览(45)
  • 经典文献阅读之--OccNeRF(基于神经辐射场的自监督多相机占用预测)

    作为基于视觉感知的基本任务,3D占据预测重建了周围环境的3D结构。它为自动驾驶规划和导航提供了详细信息。然而,大多数现有方法严重依赖于激光雷达点云来生成占据地面真实性,而这在基于视觉的系统中是不可用的。之前我们介绍了《经典文献阅读之–RenderOcc(使用2

    2024年02月03日
    浏览(29)
  • 激光SLAM:Faster-Lio 算法编译与测试

    Faster-LIO是基于FastLIO2开发的。FastLIO2是开源LIO中比较优秀的一个,前端用了增量的kdtree(ikd-tree),后端用了迭代ESKF(IEKF),流程短,计算快。Faster-LIO则把ikd-tree替换成了iVox,顺带优化了一些代码逻辑,实现了更快的LIO。在典型的32线激光雷达中可以取得100-200Hz左右的计算频

    2024年02月02日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包