《论文阅读》DMLO: Deep Matching LiDAR Odometry

留个笔记自用

DMLO: Deep Matching LiDAR Odometry

做什么

Lidar Odometry激光雷达里程计,里程计作为移动机器人相对定位的有效传感器,为机器人提供了实时的位姿信息。移动机器人里程计模型决定于移动机器人结构和运动方式,即移动机器人运动学模型。
简单来说,里程计是一种利用从移动传感器获得的数据来估计物体位置随时间的变化而改变的方法
在这里插入图片描述
用建图的方式来理解,要实现机器人的定位与导航,就需要知道机器人走了多远,往哪走,也就是初始位姿和终点位姿,只有知道了里程计,才能准确将机器人扫描出来的数据进行构建。

做了什么

在这里插入图片描述
这里采用的方法是将任务看成匹配问题,将6自由度的位姿估计分解成两部分,一个基于学习的匹配网络提供两个点云集之间的精准对应和变换估计,并通过SVD得到解,核心思想是跟LO-Net、DeepLO的输入处理差不多,将三维稀疏点云投影至2D柱面

怎么做

在这里插入图片描述
整体结构由多个步骤组成,输入是一个点云序列(St-1,St)也就是两个连续的点云集。
第一步是输入编码,采用的是柱面投影编码的方法
第二步是特征提取,提取两个编码结果的对应匹配特征
第三步是特征处理,采用NMS和Ransac等方法筛选匹配点
第四步是位姿预测,采用SVD来得到最终的结果
整体按照这个步骤一步步进行,接下来是具体的细节部分。
首先是输入编码部分,这里采用的方法跟LO-Net和DeepLO一样都是采用的柱面投影,也就是将3D点云投影到一个2D平面上
在这里插入图片描述
这里的(x,y,z)就是点的三维坐标,(∆θ,∆φ)是点平行角和垂直角,(w,h)就是投影的二维平面上的位置。回顾一下LO-Net的设计方式
在这里插入图片描述
可见异曲同工之妙好吧
同样的,如果有多个点索引到了同一个位置,按点深度值来决定
在这里插入图片描述
然后是第二部分,特征提取部分,这里的意义就是将两帧点云的匹配特征进行一个嵌入
在这里插入图片描述
采用的输入就是前面得到的两个2D投影平面的叠加,也就是两个H×W,H×W×2,期望输出维度是在这里插入图片描述
这里n和m是网络水平和垂直步距,这是自己规定的,C就是channel大小,接下来就是具体的网络设计
这里设计的网络借鉴了光流估计法的设计方式,一个 coarse-to-fine cascade network也就是从粗到细的级联估计网络,首先是粗估计网络
在这里插入图片描述
这里堆叠了9层卷积,设置了一些n、m等参数
然后是细估计网络,就是对前面结果的一个强化,一个refine
在这里插入图片描述
这里堆叠了2层卷积,3层变形卷积,设置了一些n、m等参数
自然的,这每层卷积之间也加了BN啊、Relu啊等基本层
最终得到一个匹配的feature map,由于输入输出的关系
H×W×2和在这里插入图片描述
可以理解成feature map的每个点代表了原2D平面上n×m大小的patch的聚合特征,根据该特征图,就可以计算两帧的相似矩阵,这里是逐点的,采用的方法是一个叫cross correlation层的东西,就是关联层
在这里插入图片描述
C代表correlation,f1和f2分别代表两个feature map, k代表要比较的区域,x1,x2分别代表两个feature map上的点。简单来说,这个层的主要作用就是计算两层特征层之间的关系,用在这里就是为了计算两帧匹配特征的相似度
在这里插入图片描述
这里的(i,j)表示的是二维坐标,xr表示的是参考图像也就是t-1帧,xt表示的是目标图像也就是t帧,(u,v)是横向和纵向的偏移量,控制计算相似矩阵范围的,(h,w)是在这里插入图片描述
也就是步长,D的意思是感应范围的大小,也就是求点相似度范围的大小
最终得到了一个相似矩阵,大小为在这里插入图片描述
简单理解意思就是,对于t-1帧匹配的feature map的每个点(i,j),都有一个D×D大小的相似矩阵,里面包含的信息是跟t帧的feature map里,D范围大小的每个点的相似度
然后将相似度矩阵转换成点与点的匹配概率(由局部变成匹配)
在这里插入图片描述
这就是匹配任务所需要的输入,接下来需要处理的是训练问题,由于标准数据集往往只有帧层次的转换矩阵,也就是点云集,三维层次上的转换,而这里需要的是像素级别就是点级别的,二维层次上的转换,于是处理了一下label问题
在这里插入图片描述
这里就是一个逆转换,跟前面的在这里插入图片描述
是一种相反的,一个是2D-3D,一个是3D-2D,并将3D-2D称为函数Φ,2D-3D称为函数Φ-1
所以就可以得到
在这里插入图片描述
这里pr就是参考帧t-1帧的某个点,先将该点2D投影成Cr,然后逆投影成pr’成3D点云,再用GT的转换矩阵T转换该点云至t帧Pt,然后再投影至2D成Ct,这个Ct就是label了。(Cr,Ct)就是一对训练数据,需要的效果就是输入点云的投影效果,能通过网络得到正确的下一帧投影效果
最后是LOSS
在这里插入图片描述
这里的x和y是目标帧的平面坐标
在这里插入图片描述
xi,j是对于(i,j)这个点在参考帧中的GT,而△就是它们之间的差,这里的P设置的意义就是为了处理投影结果xi,j不是整数的情况,重置了一下置信度
在此基础上定义
在这里插入图片描述
这个LOSS就是标准的cross entropy了,Q是网络预测的概率
然后是网络结构的第三步和第四步,特征处理和位姿预测
采用了NMS(最大值抑制)和Ransac(随机抽样一致)算法
简单来说,由于对每一个匹配对,网络都存在一个匹配概率,所以,在每个点预定义半径R,根据预测的置信度对匹配点对进行非极大值抑制,保留前N个点对在这里插入图片描述
然后用Randsac拒绝异常值
第四步,得到匹配点对后,就可以计算两次扫描的变换位姿了,也就是常见的三维平移向量和旋转矩阵
在这里插入图片描述
这里的T在这里插入图片描述
作为变换矩阵,R是旋转矩阵,SO(3)是包含旋转矩阵R的一种特殊正交群,我们称之为三维旋转群,是配准问题中常见的,t是三维平移向量。pi和qi是一对不同点云中的匹配点,这个对应是由前面三步所得到的
然后用奇异值分解的方法得到位姿转换解
在这里插入图片描述

总结

1.这篇是首次激光里程计任务中使用全局稀疏匹配,用现有数据集构造平面匹配的label,这种训练方式挺有意思,但总感觉就算能完美得到点云投影到二维的位置信息,也不能保证匹配准确吧,或许还有些地方没能理解,好像也没提供代码,想从代码入手也不行。
2.文章说到可以改进加入RGB信息,其实像LO-Net一样引入法向量信息应该也会加强效果,感觉点云匹配任务非常适合激光里程计,单一loss也稍微单薄了点,为什么不能把最后奇异值分解的方式换成使用网络得到

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值