OneShot LiDAR Global Localization:基于单帧激光点云和视觉增强的全局定位方法
点击上方“3D视觉工坊”,选择“星标”
干货第一时间送达
作者:robot L | 来源:知乎
https://zhuanlan.zhihu.com/p/150225758
本文仅做学术分享,如有侵权,请联系删除。
本文介绍一种新型的基于单帧激光点云和视觉增强的全局定位方案.
S. Ratz, M. Dymczyk, R. Siegwart, R. Dube. OneShot Global Localization: Instant LiDAR-Visual Pose Estimation. IEEE International Conference on Robotics and Automation, 2020.
1 内容概要
本文解决的问题
3D LiDAR的全局定位问题.给定点云数据库,在无需先验位姿的前提下估计当前帧的位姿.
3D LiDAR全局定位的作用:无需先验位姿,在地图中寻找自身位姿;修正里程计的漂移.
3D LiDAR全局定位面临的挑战:LiDAR点云的稀疏性;计算复杂度较高.该问题仍是一个开放问题.
本文提出的方法
本文提出的3D LiDAR全局定位方案的流程图如图1所示.主要特点如下:
OneShot:只使用当前帧点云就能完成全局定位,而不需要历史累积点云.基于Oneshot进行全局定位时,机器人不需要在场景中运动就能获得自身位姿估计.
基于学习的点云分割的描述子.
使用视觉信息增强点云分割描述子的表现.
对点云数据库中的候选匹配进行几何一致性测试.
图1. 全局定位流程. 单帧稀疏3D LiDAR点云是蓝色的. 从单帧点云中提取分割,并通过神经网络描述,之后和数据库进行匹配,最终通过验证后得到位姿估计.
本文的不足
点云片段和相机像素块的对应方案还有改进空间.
使用对应分割的中心计算的相对位姿过于粗糙,位姿估计有待进一步优化.
2 相关工作
3D LiDAR全局定位的解决方案大致分为三类:基于关键点的方法,基于全局描述子的方法和基于中等大小表示的方法,如分割,物体或几何元素(平面或边缘等).
基于关键点
做法
提取和匹配局部点云描述子.
代表方法
快速点特征直方图(FPFH) [8]:将k近邻的几何信息编码到直方图中.
法向量对齐径向特征(NARF)[10]: 直接在范围图片上计算描述子.
局部表面描述的直方图签名(SHOT)[9]: 量化局部表面法向量信息以提高可重复性.
缺点
依赖稠密的点云数据,不适合稀疏LiDAR点云.
基于全局描述子
做法
手工/基于学习设计点云的全局描述子.基于学习的方法能得到更鲁棒和丰富的描述子.
代表方法
Rhling等人 [13]:基于点云高度分布直方图的全局描述子.
M2DP [14]:,投影点云到多个2D平面并计算投影的密度标签.
DELIGHT [7]:利用最近多帧点云的密度信息学习一个全局点云描述子.需要稠密点云.
PointNet&PointNet++ [18][19]:直接从无序点云中计算描述子.
PointNetVLAD:使用NetVLAD [20]增强PointNet提取的点云特征.
缺点
假设点云数据库中的点云和询问点云具有相似视角;只负责找到相似点云,而不计算位姿.
基于中等大小表示
做法
先预处理点云,得到比"点"更紧凑的中等大小表示.然后计算该表示的描述子.
好处
中等大小表示比点具有更好的表示性,并且避免了全局描述子的不可变性[2].
代表方法
Serafin等人 [21]:基于PCA提取平面和边缘结构.
Dube等人[4]:提取,描述和匹配点云分割.
Tinchev等人[23][3]:扩展[4]的方法,依赖机器人运动和点云积分.
3 单帧LiDAR定位
本节详细描述图1所示的全局定位流程.
A 分割
挑战
与之前的分割方法不同 [3]-[5][23],本文基于更加稀疏的单帧点云进行分割.基于欧式距离或曲率的分割方法一般会失效由于两根扫描线之间的距离一般很大,点法向量的计算也会不准确.累积点云和单帧点云的对比如图2所示.
图2. SOTA基于分割的全局定位方法分割累积点云(左),而我们的方法分割单帧点云(右).
做法
本文采用Bogoslavskyi等人[24]的做法,直接在点云的范围图片中进行分割.
B 分割描述
做法
将单帧点云的分割结果压缩为浮点数向量.利用Dube等人提出的基础网络计算分割的描述,同时应用度量学习中的三元损失[25]来训练网络.
C 网络训练
做法
训练数据生成:从KITTI[26]和NCLT[27]中生成训练数据.如果一对分割的交并比较大,则认为是一组对应 [5].
损失函数:使用视觉场景识别中流行的三元损失用于训练网络[28]-[30],并使用batch hard [33]来平衡寻找挑战性样本和避免错误标号的样本.
D 分割匹配
做法
我们的数据库包含一系列建图过程中获得的分割描述.分割描述子使用k-d树维护.对于每个询问帧中的分割片段,寻找k近邻,并传到下一阶段.
E 几何一致性测试
做法
使用Dube等人[4]提出的方法,在一致性图中寻找最大团,从而得到当前询问帧中的分割与数据库中分割的对应集合.最后利用这些对应分割的中心估计当前询问帧在地图中的位姿.
4 使用视觉增强
本节使用视觉的环境外观信息增强LiDAR点云的结构信息,得到更加鲁棒的分割描述子.
A 图片块提取
做法
询问帧的LiDAR点云分割完成后,将分割投影到图片平面,进而得到投影的边界框,并提取边界框内的像素点.这些像素点就是该分割对应的视觉外观信息.
B 激光视觉融合
做法
我们使用NetVLAD[20]获得图片块的描述.神经网络结构入图4所示.训练过程入第3.C节描述所示,不同的是数据包含分割点云和对应的图片块.结果描述子可以用于替代分割描述子用于全局定位.
图4. 计算多模态描述子的神经网络.
5 实验
本节我们提供实验来评估算法的表现,首先评估纯LiDAR全局定位算法,然后再评估多模态全局定位算法.
A LiDAR全局定位
KITTI数据集
我们使用00序列的0-300秒内的数据构建地图,并使用340-397秒内的数据进行询问.为了得到稀疏点云,我们从64线数据中采样类似VLP-16的16线数据.
我们和SegMap[5]进行了对比.我们运行SegMap共40次,每次从不同的起点出发.由于OneShot方法只依赖单帧,它能够在所有帧中运行.试验结果如图5所示.总的来说,我们能够报道98%的回召率和100%的准确率,我们假设离真值2m内就算定位成功.而SegMap需要机器人运行58m以获得50%的定位成功概率,而我们只需要机器人运行2.5m就能得到100%的定位成功率.
图5. 不同方法定位成功与运行距离的关系
我们评估定位准确性基于ICP算法.在使用提出的算法得到位姿估计后,将改位姿作为初值执行ICP,得到修正后的位姿.ICP的修正分布直方图如图6所示.可以看出定位误差为 .
图6. KITTI的00序列的定位误差直方图
NCLT数据集
我们使用KITTI数据集的训练结果在NCLT数据集上进行测试,验证我们方法的泛化性.我们得到了38%的定位速率以及94%的定位准确率.准确率下降有两方面原因.第一,数据集包含长期数据,导致了环境的结构变化.第二,包含长距离空旷环境的数据,结构信息过少,形成巨大挑战.
B LiDAR全局定位的部署
我们在两个现实环境中测试了算法.一个部署在室外轮式机器人上,一个在矿井内手持激光.第一个环境中能够达到92%的帧通过了我们的几何验证步骤,并成功定位.第二个环境中能够成功闭环.结果如图7所示.
图7. 顶部:室外轮式机器人.底部:矿井内手持激光.彩色点云是数据库地图,白色点云是询问帧.匹配的分割使用绿线连接.
C 激光视觉描述子融合
我们使用NCLT的部分数据训练网络,然后分别在NCLT的剩余数据和KITTI数据集上进行测试.
我们评估检索分割对应的表现.通过控制全局定位算法的严格程度得到不同的准确率和召回率,并绘制准确-召回率曲线,如图8所示.实验展示了基于纯激光,纯视觉和多模态的描述子计算方法对比.结果显示,在NCLT上多模态方法相对纯LiDAR方法提高了17-26%.而在KITTI上多模态方法略低于纯视觉方法,这可能是由于NCLT数据的环境比较复杂,视觉方法可能已经过拟合,导致在KITTI数据集中不适合用.
图8. 基于描述子的分割对应的准确-召回率曲线.