A fast, complete, point cloud based loop closure for LiDAR odometry and mapping
文章二的贡献是提出一种基于LOAM的闭环检测方法。
解决的问题主要包括:
a、地图由哈希表和八叉树组成,方便加速地图配准;
哈希表可以根据cell中心坐标(键)快速地找到某个具体的cell(值)。global octree可以找到一个具体区域的所有网格(体素内近邻查找)。
b、参考CV,提出一种2D直方图来决定是否检测到回环,即作者自己提出的描述符;
既然是描述符,那么必然要实现尺度与旋转不变形。代码的做法是由每个关键帧所有平面特征网格的法向量(基于世界坐标系)组成协方差矩阵,特征值分解后,得到它的特征向量(代表运动的最大方向)组成旋转矩阵R,再对此关键帧的每个线特征网格与面特征网格的特征向量乘以R的逆矩阵,理想情况是全部归一到世界的基坐标系,至此达到旋转不变性的目的。
完成上述操作后,建立属于每个关键帧的两个直方图(线特征与面特征)。
计算直方图的相似性。直方图相似性的计算方式也很多,作者使用相关度这个度量标准来衡量是否回环了,但我狭隘地认为这是非常局限的。实验证明在长走廊等退化场景下,这种评价方式完全不够用,代码会多次检测到回环,所以作者设计代码时加了另一个核心评价指标(但没体现在paper里):icp计算后的两个关键帧之间的距离误差。当此误差小于0.2m,才认为真正检测到回环。
要是cell格子太碍眼,也可以不显示cell。反正我不想显示它。
但是与同学讨论时,发现大家对paper里旋转矩阵R的看法不尽相同。为了验证paper里的旋转矩阵R的具体作用是啥,我写了一个demo。
使用PCL PCLVisualizer类,可视化显示有R与无R时(作者能力有限,默认有R;无R的效果,使用者可自改代码,其实是懒),cells的特征向量方向到底是如何变化的。
经过实验验证,R的作用确实如paper所言,让最多的特征向量方向躺在X轴方向,次多的特征向量方向躺在Y轴上。想法之骚气,感天动地。
