首页 > 基于点云描述子的立体视觉里程计快速鲁棒的位置识别方法

基于点云描述子的立体视觉里程计快速鲁棒的位置识别方法

点云PCL免费知识星球,点云论文速读。

文章:A Fast and Robust Place Recognition Approach for Stereo Visual Odometry Using LiDAR Descriptors

作者:Jiawei Mo and Junaed Sattar

翻译:particle

本文仅做学术分享,如有侵权,请联系删除。欢迎各位加入免费知识星球,获取PDF论文,欢迎转发朋友圈分享快乐。

论文阅读模块将分享点云处理,SLAM,三维视觉,高精地图相关的文章。公众号致力于理解三维视觉领域相关内容的干货分享,欢迎各位加入我,我们一起每天一篇文章阅读,开启分享之旅,有兴趣的可联系微信[email protected]

论文摘要

位置识别是同步定位与构建地图(SLAM)算法的核心组成部分。特别是在视觉SLAM系统中,通过计算代表不同位置的图像之间的外观相似性来识别先前访问过的位置。然而,这种方法对视觉信息的变化很敏感,而且计算成本也很高。在这篇论文中,我们提出了一种新的方法,将激光雷达描述子应用于立体视觉里程计所获得的三维点,以进行位置识别。对于环境变化(例如,可变照明),3D点云可能比2D视觉特征(如2D特征)更可靠,这可能有利于长距离的场景中的视觉SLAM系统。立体视觉里程计生成具有绝对比例的三维点,这使得我们能够使用激光雷达描述符进行高效率的地点识别。通过对标准数据集的广泛评估,我们证明了使用三维点进行位置识别的准确性、效率和鲁棒性。

其实就是使用激光雷达获取的点云计算全局的点云描述子,并记录成个一个数据集,而使用双目视觉三角化生成点云作为输入将这些三角化出来的三角点计算三种描述子,不断的与数据集进行检索和对比,最终匹配上的则是回环检测成功。

代码开源:

https://github.com/IRVLab/so_dso_place_recognition

● 相关工作与介绍

在GPS信号接收弱或者不可用的情况下,基于视觉的SLAM就显得十分重要,视觉VO被用来建立局部地图和估计自我运动来辅助机器人进行导航,然而在这个过程中无法避免的存在累计误差,导致里程计估计偏离正确的路径,此时就需要有回环检测来识别曾经访问过的地方,将此约束引入到系统中,以获得全局一致的地图和轨迹,因此基于位置识别的回环检测可以提高视觉VO的稳定性。

  来自RobotCar数据集的不同季节的图像。注意外观上的显著变化。

传统的基于视觉系统的位置识别方法通常依赖于二维图像。每个位置都由在该地方获取的图像来表示。为了确定两个位置是同一个位置的可能性,需要评估它们对应图像的相似性 。然而,本文提出的视觉里程计方法提供了可用于地点识别的附加信息。二维图像上点的深度(即这些点到摄像机的距离)可以通过单目或多摄像机视觉里程计进行部分或全部恢复。场景的三维结构可能为位置识别提供重要信息,然而二维位置识别方法忽略了这一点。在动态环境中(例如,在不同的光照下),3D结构比2D图像更健壮。另一方面,关于利用激光雷达(Light Detection and Ranging,LiDAR)传感器的3D点进行位置识别的文献资料非常丰富。激光雷达传感器扫描的是环境的三维结构,而不是其视觉外观,使得基于激光雷达的地点识别更能抵御环境变化,如外观和亮度的变化。

在这项工作中,我们将LiDAR位置识别方法,特别是LiDAR点云的描述子,应用到视觉里程计系统中,以实现位置识别。其目标是在动态环境中,以一种计算效率高的方式,使基于视觉的系统能够准确而稳健地进行位置识别。

文章的主要贡献有

•计算激光雷达点云数据全局描述子适应基于视觉的位置识别系统中;

•实现对视觉外观发生变化时位置识别的精度和鲁棒性;

•与现有方法相比,实现更低的计算成本。

我们在KITTI数据集和Oxford RobotCar数据集上评估了所提出的方法。通过对RobotCar数据集的分析,证明了该方法对季节变化的鲁棒性,并证明了该方法比现有方法具有更高的精度和计算效率。通过使用图像强度信息增强激光雷达描述子,进一步提高了性能。

内容精华

论文方法概述。其基础在于“点云预处理”模块,利用立体VO获得的三维点模拟激光雷达扫描,从而可以进行有效的位置识别。

由于相机视野狭窄,立体视觉里程计生成的三维点位于由摄像机姿态决定的视锥上。如果我们直接在视锥内部应用全局描述符,那么位置识别将对视角非常敏感。为了解决这一问题,我们提出了一种简单而有效的方法,即将立体视觉里程计中的三维点转换成全向的LiDAR形状(球形)三维点云。如图3所示。立体视觉里程计生成关键帧与相机姿势和相关的三维点。其中保留局部点列表。对于每个传入的关键帧,我们将其所有3D点存储到列表中。为了模拟激光雷达对当前关键帧的扫描,迭代局部点列表:如果点的距离在所需的激光雷达范围内,则通过当前姿势将其转换为当前关键帧坐标,然后将其放入球形点列表中。

 KITTI 数据集部分模拟激光雷达扫描结果的照片

点云描述子:该方法的是利用激光雷达点云数据的全局描述子来描述滤波后的点云并得到关键帧的位置特征。使用这种计算方式的原因有两个:第一个原因是计算点云描述子和匹配点云时的计算效率;第二个原因是我们所得到的点云是通过视觉里程计图像中点三角化生成的,它们不像激光雷达那样一致和密集。许多局部描述符(如 Spin Image )依赖于曲面法线,对于曲面法线,需要密集的点云,这在本例中是有问题的。我们选择DELIGHT[5]、M2DP[15]和Scan Context[19]作为全局描述符,因为它们是用于位置识别的最先进的激光雷达描述子,对稀疏和不一致的点云具有鲁棒性。它们的算法思想如图5所示。

展示本文使用的点云描述子:DELIGHT,M2DP, and Scan Context.

DELIGHT:是一种根据点云的激光雷达强度的点云描述子,根据激光雷达扫描点云按半径、方位角和仰角分为16个基元。每个bin由内部的激光雷达强度直方图描述,这些直方图连接起来形成代表整个激光雷达扫描的特征,该描述子对旋转和平移不太敏感,具有一定的鲁棒性。

M2DP:是一个具有高精度和高效率的全局描述子。将点云投影到多个平面上,并根据半径和方位角将每个平面划分为单独的存储单元。将投影到面元上的分布连接起来,形成点云的特征。为了提高计算效率和存储效率,采用奇异值分解(SVD)对描述子进行压缩。

Scan Context:点云上下文是一个简单而有效的描述子,用于城市地区的激光雷达扫描。激光雷达扫描与外部测量的重力轴对齐(例如,使用IMU)。然后根据半径和方位角将水平圆平面分割成多个基元。在每个箱子中,找到最大高度并将其连接起来,以形成当前位置的描述子。

位置识别:

基于位置的描述子,确定位置之间的相似性,通过计算每个位置到参考数据库中每个位置描述子的最短距离获取相似性。为了评估所提出的方法,我们在算法中比较了DELIGHT、M2DP和Scan Context, 以及BoW, GIST。

● 实验结果

基于RobotCar数据集的位置识别精度统计

总结

本文提出了一种新的立体视觉里程计位置识别方法。我们不需要二维图像的相似性,而是依靠视觉里程计生成的三维点来确定地点之间的相关性。立体系统的三维点以绝对比例被用来模拟激光雷达扫描,这些扫描点被输入到三个激光雷达获取的点云全局描述子数据集中,分别是DELIGHT、M2DP和 Scan Context。我们用灰度强度信息来增强描述子。在KITTI数据集和RobotCar数据集上的实验表明了该方法的准确性、高效性和鲁棒性。

参考文献

[5] Konrad P Cop, Paulo VK Borges, and Renaud Dub´e. DELIGHT: An Efficient Descriptor for Global Localisation using LiDAR Intensities. In 2018 IEEE International Conference on Robotics and Automation (ICRA), pages 3653–3660. IEEE, 2018

[15] Li He, Xiaolong Wang, and Hong Zhang. M2DP: A Novel 3D Point Cloud Descriptor and its Application in Loop Closure Detection. In 2016 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), pages 231–237. IEEE, 2016.

[19] Giseop Kim and Ayoung Kim. Scan Context: Egocentric Spatial Descriptor for Place Recognition within 3D Point Cloud Map. In 2018 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), pages 4802–4809. IEEE, 2018.

资源

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

【点云论文速读】基于激光雷达的里程计及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方法介绍

往期线上分享录播汇总

第一期B站录播之三维模型检索技术

第二期B站录播之深度学习在3D场景中的应用

第三期B站录播之CMake进阶学习

第四期B站录播之点云物体及六自由度姿态估计

第五期B站录播之点云深度学习语义分割拓展

第六期B站录播之Pointnetlk解读

[线上分享录播]点云配准概述及其在激光SLAM中的应用

[线上分享录播]cloudcompare插件开发

[线上分享录播]基于点云数据的 Mesh重建与处理

[线上分享录播]机器人力反馈遥操作技术及机器人视觉分享

[线上分享录播]地面点云配准与机载点云航带平差

点云PCL更多活动请查看:点云PCL活动之应届生校招群

扫描下方微信视频号二维码可查看最新研究成果及相关开源方案的演示:

如果你对本文感兴趣,请点击“原文阅读”获取知识星球二维码,务必按照“姓名+学校/公司+研究方向”备注加入免费知识星球,免费下载pdf文档,和更多热爱分享的小伙伴一起交流吧!

以上内容如有错误请留言评论,欢迎指正交流。如有侵权,请联系删除

扫描二维码

                   关注我们

让我们一起分享一起学习吧!期待有想法,乐于分享的小伙伴加入免费星球注入爱分享的新鲜活力。分享的主题包含但不限于三维视觉,点云,高精地图,自动驾驶,以及机器人等相关的领域。

分享及合作方式:微信“920177957”(需要按要求备注) 联系邮箱:[email protected],欢迎企业来联系公众号展开合作。

点一下“在看”你会更好看耶

更多相关:

  • 点云PCL免费知识星球,点云论文速读。标题:三维点云分割综述(上)排版:particle欢迎各位加入免费知识星球,获取PDF文档,欢迎转发朋友圈,分享快乐。这是一篇综述性论文,以下只做概述性介绍,介绍文章已共享在微信群和免费知识星球中,文章在公众号将分成三个部分:第一部分介绍点云的获取以及各种传感器获取点云的特性,以及分割概念的区别...

  • 点云PCL免费知识星球,点云论文速读。文章:DLL: Direct LIDAR Localization. A map-based localization approach for aerial robots作者:Fernando Caballero1 and Luis Merino编译:点云PCL代码:https://githu...

  • CloudCompare是一个三维点云(网格)编辑和处理软件。最初,它被设计用来对稠密的三维点云进行直接比较。它依赖于一种特定的八叉树结构,在进行点云对比这类任务时具有出色的性能【1】。此外,由于大多数点云都是由地面激光扫描仪采集的,CloudCompare的目的是在一台标准笔记本电脑上处理大规模的点云——通常超过1000万个点云。...

  • 点云PCL免费知识星球,点云论文速读。文章:Open3DGen: Open-Source Software for Reconstructing Textured 3D Models from RGB-D Images作者:Teo T. Niemirepo, Marko Viitanen, and Jarno Vanne编译:点云P...

  • 点云PCL免费知识星球,点云论文速读。标题:Real-Time Spatio-Temporal LiDAR Point Cloud Compression作者:Yu Feng , Shaoshan Liu , and Yuhao Zhu来源:2020IROS本文仅做学术分享,如有侵权,请联系删除。欢迎各位加入免费知识星球,获取PDF...

  • 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个位置。 示例 1: 输入: [2,3,1,1,4] 输出: true 解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。 示例 2:...