Disco-SLAM算法之Scan-Context

Scan-Context的理解

Scan context: 3D点云的场景识别/回环检测

原创投稿 | ScanContext 论文详解 - 用途:Lidar SLAM 回环检测、空间描述符(这篇我觉得写得通俗易懂)

Scan Context的创建

简单来说,把传感器周围的点云存在一个类似下面的地图中,3D降维到2D

Disco-SLAM算法之Scan-Context_第1张图片
Disco-SLAM算法之Scan-Context_第2张图片

降维后的Scan context就是一个Nr*Ns的矩阵,横轴代表环向维度,纵轴代表径向维度,矩阵中的像素值是取的对应环向和径向相交区域(bin, 注意是具有一定体积的空间区域)点的最大高度;这个矩阵就是对该场景的编码,由于包含了全局信息,所以是一个全局的描述符。

Similarity score的计算

通俗的讲就是这两个降维后的2D矩阵通过

Disco-SLAM算法之Scan-Context_第3张图片

这个公式来计算相似度,那如果旋转过后,位置没变,但是角度变了是不是整体的ring没变,但是sector方向整体偏移,那就用最简单的方法将每一个值都试过去,看看是不是符合相似度阈值。

Disco-SLAM算法之Scan-Context_第4张图片

Two-phase Search Algorithm

那么显然前面说的,挨个试过去的方法运算量很大,效率奇低,所以作者提出了一种高效的方法。将整个地图再次降维一下,通过环键(Ring key)编码来将每一个横轴的值变为一个实值,这样整个一圈圈的ring就从Nr ✖ Ns 变为Nr了。

环键编码算法采用如下

Disco-SLAM算法之Scan-Context_第5张图片

在这里插入图片描述
Disco-SLAM算法之Scan-Context_第6张图片

这样就会得到许多个一维向量(不同的location),作者构建了一个KDTree来搜索K个最相似的scan index,搜索结果再进行相似度匹配计算就会大大提高效率。

个人理解,就是把原先的三维地图降维到二维矩阵,再通过判断Sector方向的突出地貌个数来降维(确实虽然旋转了,但是每个方向的整体地形不能变,或者说每个视角中的高点个数不会变),最终得到许多个一维的KD树匹配。

你可能感兴趣的:(算法,人工智能,机器学习)