经典激光slam配准及回环检测框架:ScanContext

论文名称:

Scan context: Egocentric spatial descriptor for place recognition within 3d point cloud map

论文链接:

https://ieeexplore.ieee.org/document/8593953

开源代码链接:

https://github.com/irapkaist/scancontext

总结:

这篇文章介绍的是如何用激光点云做场景识别、定位或回环检测。

步骤:

(1)对一帧点云数据,以雷达坐标系为原点,划分20个环,每个环分为60等份。即1200个格子。将其再展开为一个矩形图像,20行60列。

(2)遍历点云的每个点,对坐标进行计算,投影到其所在的栅格坐标(即栅格的行列),并记录下这个栅格中点云的高度(z值)最大值。形成一个带高度的俯视图,或者地形图,记为scan context。

(3)对每一行和每一列分别求平均数,得到两个向量。一个20*1的,记录的是每一行的平均值,记为ring key;另一个是1*60,记录的是每一列的平均值,记为sector key。

(4)用ring key向量构造kdtree,并执行knn搜索,找到可能的发生回环的相似帧,并得出对应的平移值。(如果是帧间匹配则只需要计算和上一帧的平移)

(5)分别对所有候选相似帧(此处应该有运动补偿),使用sector key,进行左右平移,计算相差(二范数)最小的平移值,即为对齐时所需要的旋转偏移量。

(6)因为(5)是用每列的平均值做的比较,缺乏准确性,最后再需要以(5)计算的偏移量为基础,重新对scan context施加偏移(这里有个范围),精确计算偏差量。

(7)经过(6)的精确配准计算,得出的平移量和偏移量,解算后即为位姿之间的关系。

经典激光slam配准及回环检测框架:ScanContext_第1张图片

经典激光slam配准及回环检测框架:ScanContext_第2张图片

今晚刚看完了这篇文章和主要代码,先写个思路总结,过几天再详细总结。。。

你可能感兴趣的:(激光slam,slam,自动驾驶,人工智能)