《论文阅读》D3DLO: DEEP 3D LIDAR ODOMETRY

留个笔记自用

D3DLO: DEEP 3D LIDAR ODOMETRY

做什么

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

做了什么

采用了直接学习的方式,直接根据点云的坐标和特征进行学习,端到端的方式进行训练,这篇文章主要的优点是参数量少,且效果差不多

怎么做

首先是问题定义,就是激光雷达里程计的问题,输入是两个连续点云集P和Q,分别是第t帧和第t+1帧的扫描点云,目的是输出一个相对转换Tt,t+1∈R4×4
在这里插入图片描述
这里的相对转换T常见情况下就是三维坐标系下转换的标准形式,由旋转矩阵R∈R3×3和三维平移向量t组成,但这里将旋转矩阵R换了一种方式设计,也设计成了一个三维向量,分别是各维度的欧拉角R∈R3,这样
在这里插入图片描述
t平移向量和r旋转向量组合在一起就是一个6维向量,这就是网络的最终输出,而预测输出和label的loss就用简单的欧拉距离
在这里插入图片描述
除了这个loss之外,加了一个常见的正则化LOSS
在这里插入图片描述
接下来是具体的网络结构,整体结构在文中只有一个简单的图
在这里插入图片描述
但介绍了所有的组成模块,主要是由个部分组成,第一部分是输入采样层,第二部分是特征处理层,第三部分是位姿回归层。
首先是第一部分输入采样层,输入正如前面所述是两个连续的点云集P、Q,维度分别是n1×(3+c)和n2×(3+c),这里的c是点的其余几何特征,文中采用的是深度,所以这里为1,这个值还可以由很多组成,如常见的法向量,横纵角等等,然后输入一个flow embedding(FE)层进行逐点输入聚合。
在这里插入图片描述
然后是第二部分,特征处理层,这里是由2+个SA层和一个Mini PointNet层组成,进行一个全局特征的处理
在这里插入图片描述
最后一部分是位姿回归,一个简单的MLP得到所需要的输出六维向量
在这里插入图片描述
整体结构中有几个模块化结构,如SA(Set Abstraction Layer)、FE(Flow Embedding Layer)、MPN(Mini-PointNet),接下来就是对这几个结构的具体构造
首先是SA层(Set Abstraction Layer)直译是是分层抽取特征层,来自论文《PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space》
原文所用的SA层主要有以下三个部分组成
第一步,sample layer采样层。得到重要的中心点(使用最远点采样)
第二步,group layer分组层。找到距离中心点附近的k个最近点(使用knn),组成local points region
第三步,pointnet layer,特征提取层。对每个local points region提取特征
该文使用的SA层与这种设计非常相似,不过这里的第二步是规定了一个半径r,半径r内所有点归为邻域
在这里插入图片描述
这里xi就是该点的坐标,xj就是点邻域上的点坐标,fi是该点的其余特征(如法向量、深度),hsa是一个MLP,用于聚合局部特征,然后在这基础上做一层maxpool提取出该点完整的局部聚合特征
在这里插入图片描述
输入输出效果如上图,一直这样做SA层就是会减少点的数量,并且使点所包含的特征越来越多
然后是第二部分,FE(Flow Embedding)层,直译是光流嵌入层,用途也差不多这个意思,出自另外一篇文章《FlowNet3D: Learning Scene Flow in 3D Point Clouds》,构造的方法跟SA非常相似
在这里插入图片描述
这里的x是点坐标,y是邻域内点坐标,其他理解跟SA层类似,但只是计算方式相同,输入处理是不同的,SA层的输入是单个点云,维度是n×(3+c)的单个点云集。但FE层的输入是两个点云,比如P点云和Q点云,对于P点云中的每个点,它的邻域是在Q点云中找,根据P点云中该点的位置直接转移到Q点云中进行邻域搜索。所以上式中的f是P点云的点特征,g是Q点云的点特征
在这里插入图片描述
上图中的MPN就是Mini-PointNet,式中的hfe,也就是本文的第三个模块,这里还存在一点特殊,这里的取邻域的方法又变回了KNN,这里的处理方式就跟光流匹配的方式差不多,在两帧中寻找邻域匹配的情况
最后是用到了多次的Mini-PointNet层
在这里插入图片描述
这里构造的方式可以简单理解一下,用多个MLP收集多个不同大小的局部特征,然后用max pooling聚合,这是PointNet中采用的特征处理方式

总结

1.这篇文章我感觉是缝合型文章,结合了一下PointNet和PointNet++里的结构,又结合了一下FlowNet的结构,最后回归出了较好的效果,但既然都缝了这么多,不如再多整几个模块,比如万能的transformer
2.跟LO-Net、DeepLO显而易见的区别就是输入的处理方式,这里没采用3D投影的方式,在我看来更加符合端到端学习的方式

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值