Scan Context++:在城市环境中具有鲁棒性的位置识别描述子

Posted Being_young

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scan Context++:在城市环境中具有鲁棒性的位置识别描述子相关的知识,希望对你有一定的参考价值。

文章:Scan Context++: Structural Place Recognition Robust to Rotation and Lateral Variations in Urban Environments

作者:Giseop Kim, Sunwook Choi, and Ayoung Kim

编译:点云PCL

代码:https://github.com/irapkaist/scancontext.git

本文仅做学术分享,如有侵权,请联系删除。欢迎各位加入免费知识星球,获取PDF论文,欢迎转发朋友圈。内容如有错误欢迎评论留言,未经作者允许请勿转载,欢迎各位同学积极分享和交流。

公众号致力于分享点云处理,SLAM,三维视觉,高精地图相关的文章与技术,欢迎各位加入我们,一起每交流一起进步,有兴趣的可联系微信:920177957。本文来自点云PCL博主的分享,未经作者允许请勿转载,欢迎各位同学积极分享和交流。

摘要

位置识别是机器人导航中的的关键模块,现有的研究主要集中在视觉位置识别上,即仅仅根据之前访问过的地方的外观来识别它们。在本文中,我们通过基于结构外观(即距离传感器)识别位置来解决位置识别问题,扩展了之前在旋转不变空间描述子上的工作,该描述子完成了一个通用描述符,在俯仰运动不严重时,该描述子对旋转和平移都具有鲁棒性。我们引入了两个子描述子,实现了拓扑位置检索和1-DOF半度量定位,从而弥合了拓扑位置检索和度量定位之间的差距,从环境复杂性和规模方面对所提出的方法进行了全面评估,源代码开源:https://github.com/irapkaist/scancontext.git

可以轻松地集成到现有的激光雷达同步定位和建图(SLAM)中。

主要贡献

虽然我们之前的基于扫描上下文关系的方法是十分具有意义的,但该算法未能实现横向不变性,并且使用蛮力搜索效率低下,但为了克服了这些限制,我们完成了算法,包括旋转和横向鲁棒性,从而为距离传感器引入了通用的结构位置识别,其次,改进的算法改进了以前的暴力搜索,使用子描述符,并将搜索过程加快了一个数量级。总之,该方法新贡献有:

  • 对横向/旋转变化的鲁棒性:在车道高度变化不可避免的城市环境中,缺少横向不变性可能是一个关键问题,为了解决这个限制,我们将前面的描述推广到同时包含横向和旋转鲁棒性,这是通过基于城市道路假设的扫描上下文增强来实现的。

  • 半度量定位:结合位置检索和度量定位,我们的全局位置识别方法弥补了拓扑定位和度量定位之间的差距,提出的方法不仅提供了检索到的地图位置索引,还提供了1-DOF(偏航或横向)初始猜测,用于度量细化,如迭代最近点(ICP)。

  • 轻量级和模块独立性:作为一个全局定位器,所提出的方法不需要先验知识或任何几何约束(例如里程计)。在单个C++和头文件对中提供的轻量级实现,很容易集成到现有的SLAM框架。

  • CPU上的实时性能:通过引入紧凑的子描述符、键,我们实现了显著的成本降低,基于检索键的树搜索消除了简单的像素级比较,然后是基于对齐键的预对齐,我们的方法实时运行,支持高达100Hz(例如,KITTI12上的平均7.4ms),无需GPU。

  • 广泛验证:我们在不同且具有挑战性的测试场景中评估所提出的方法,以验证会话内和多会话场景,我们注意到,现有的精确回忆曲线可能无法完全捕捉到SLAM研究的环路闭合性能,无法对匹配分布进行评估,所以我们使用DR(distribution recall)曲线不仅测量召回,还测量其多样性,以实现有意义的循环闭合。

  • ,时长02:54

总体介绍

该方法由两部分组成:(i)位置描述和(ii)位置识别。整个流畅如图2所示,位置识别模块包括位置检索、半度量定位和验证。

图2 总体框架,给定一个原始距离度量,该方法从地图中的一组位置中寻找相应的位置索引。

A 扫描上下文描述符

这里介绍一种新的空间描述符,名为扫描上下文描述符(SCD),该方法从分割原始测量数据开始,并使用鸟瞰图(BEV)将其投影到离散化的容器中,在划分BEV bin时,考虑了两种类型的垂直基座(极坐标和笛卡尔坐标)。在划分和坐标选择之后,测量的子集使用bin编码函数编码到其相关的离散化bin,正如我们所提出的,提案位置识别模块的不变性来自于bin编码函数和距离函数。

扫描上下文是激光雷达点云的一个全局描述符,它是专门为在室外环境中获取的稀疏且有噪声的点云而设计的。

它将以自我为中心的可见信息编码如下:

图3,(a) 采样点云和(b)相关SCD。在(a)中,黄色和灰色填充实体分别表示PC和CC的箱子。红色箭头表示对齐轴。绿色箭头表示检索轴。在(b)中,每个箱子颜色表示箱子中的最大高度;红色为高(例如10米),蓝色为低(例如0米)

图4,顶行中的三个白点表示地面真相轨迹中的三个样本节点。车辆在变道时曾三次驶过该地。下面是每个节点对应的示例CC。比较三个样本CCs,内容保留在每个列中,而节点之间只移动列顺序,描述符中由运动引起的变化在描述符空间中显示为SCD列顺序偏移

B 三阶段位置识别

我们的位置识别算法由三部分组成:(i)使用检索键进行位置检索,(ii)使用对齐键通过预对齐进行半度量定位,以及(iii)完整的SCD比较,以进行潜在的优化和定位质量评估。使用检索键进行位置检索现有广泛采用的解决方案利用过去的轨迹或运动不确定性来减少搜索空间。与他们不同的是,我们在不事先知情的情况下追求全局定位精度,我们只依赖于描述符本身,同时通过引入子描述符来最小化全局搜索的计算成本。

图5(a)牛津大学2019-01-15-13-06-37的样本显示了旋转和平移变化的重访案例。(b) 极坐标上下文增强包括通过改变车辆的中心姿势来显式重新计算描述符,原始(红色)基于姿势的描述符显示的距离比移动的基于姿势的描述符显示的距离大。仅显示sinlge虚拟车辆案例以进行可视化。(c) 上下文增强由简单的顺序翻转组成。类似地,在PC中,增广描述符显示出比原始描述符更接近地图的距离。

图6 数据集轨迹覆盖在每个航空地图上。第一列显示了KAIST 03(MulRan)和Riverside 02(MulRan),其次是牛津雷达机器人车(Oxford Radar RobotCar)、MulRan的世宗序列和Pangyo(NAVER LABS)。右边的洋红色方框显示了NAVER LABS数据集Pangyo序列中的宽阔道路。

实验

我们在各种数据集上验证了我们的空间描述符和位置识别算法。为了清楚地说明相关的不变性,我们根据重访类型对路线进行了颜色编码。

上图显示主要旋转或横向变异的两个序列。(a) 对于KITTI 08来说,大多数重访都是以相反的方向进行的,集中分布在左上象限。(b) -(c)PC是KITTI 08最稳健的方法。(d) MulRan Riverside 02包含几乎没有旋转变化的横向变化。(e) -(f)CC能够更好地处理横向变化。更高的精度(↑) 和较低的分布(↓) 尽管如此,召回表明性能更好。

总结

本文提出了一种结合拓扑定位和度量定位的全局位置识别模块。作为一种全局定位方法,该方法可以解决被绑架机器人在唤醒阶段充当位置识别器的问题,还展示了Scan Context++在旋转方向和横向方向上的不变性,通过评估,我们验证了所提出的定位器在不需要先验知识的情况下实现了可辨别性和实时性能。

资源

三维点云论文及相关应用分享

【点云论文速读】基于激光雷达的里程计及3D点云地图中的定位方法

3D目标检测:MV3D-Net

三维点云分割综述(上)

3D-MiniNet: 从点云中学习2D表示以实现快速有效的3D LIDAR语义分割(2020)

win下使用QT添加VTK插件实现点云可视化GUI

JSNet:3D点云的联合实例和语义分割

大场景三维点云的语义分割综述

PCL中outofcore模块---基于核外八叉树的大规模点云的显示

基于局部凹凸性进行目标分割

基于三维卷积神经网络的点云标记

点云的超体素(SuperVoxel)

基于超点图的大规模点云分割

更多文章可查看:点云学习历史文章大汇总

SLAM及AR相关分享

【开源方案共享】ORB-SLAM3开源啦!

【论文速读】AVP-SLAM:自动泊车系统中的语义SLAM

【点云论文速读】StructSLAM:结构化线特征SLAM

SLAM和AR综述

常用的3D深度相机

AR设备单目视觉惯导SLAM算法综述与评价

SLAM综述(4)激光与视觉融合SLAM

Kimera实时重建的语义SLAM系统

SLAM综述(3)-视觉与惯导,视觉与深度学习SLAM

易扩展的SLAM框架-OpenVSLAM

高翔:非结构化道路激光SLAM中的挑战

SLAM综述之Lidar SLAM

基于鱼眼相机的SLAM方法介绍

以上是关于Scan Context++:在城市环境中具有鲁棒性的位置识别描述子的主要内容,如果未能解决你的问题,请参考以下文章

使用 context:component-scan 自动装配取消管理 bean

Spring项目中混用@Configuration和xml(context:component-scan)配置

spring里面的context:component-scan

context:component-scan 分析

匹配的通配符是严格的,但找不到元素“context:component-scan”的声明

解决Spring中使用context:component-scan命名空间配置错误