(秋招)面激光slam必备知识--scan context

scan context是一个描述场景的描述符,它之前不是用在slam上面的,但是有人将它用到激光slam上面,发现还可以,于是这个scan context就用来进行激光slam的位置识别(做闭环用的)。

(秋招)面激光slam必备知识--scan context_第1张图片

编辑切换为居中

添加图片注释,不超过 140 字(可选)

(秋招)面激光slam必备知识--scan context_第2张图片

编辑切换为居中

添加图片注释,不超过 140 字(可选)

首先是点云分割,就按照半径的方向,分成一个个环,然后每个环再进行360°的切割。

(秋招)面激光slam必备知识--scan context_第3张图片

编辑切换为居中

添加图片注释,不超过 140 字(可选)

必须明白scan context每一行和每一列代表啥,每一行代表一个圆环,每一列代表一个扇形。

(秋招)面激光slam必备知识--scan context_第4张图片

编辑切换为居中

添加图片注释,不超过 140 字(可选)

定义了scan context相似度的得分公式,该公式表示两个scan context的距离,当然是越小越好。(一般距离都是越小表示两者之间相似性程度越高)

(秋招)面激光slam必备知识--scan context_第5张图片

编辑切换为居中

添加图片注释,不超过 140 字(可选)

对于给定的两个scan context图像(准确来说是scan context数值),如何判断他们之间的距离,(因为有旋转因素存在,因此要先进行旋转上的处理。)就很直接,使用暴力匹配的方法,得到相似性程度最高的那一组解,那么这组解对应的相位差就是两个scan context之间的旋转量。

(秋招)面激光slam必备知识--scan context_第6张图片

编辑切换为居中

添加图片注释,不超过 140 字(可选)

但是通过上面的暴力匹配,发现是非常消耗计算量的,那么想到一个办法,针对每一列,统计个数,使用这个个数先做一个预匹配,即相似的地方,点的数量也是差不多相等的。然后预匹配完以后,再用上面暴力匹配的方法计算相似度和旋转量。那么到此就是scan context针对旋转部分的解决措施。

(秋招)面激光slam必备知识--scan context_第7张图片

编辑切换为居中

添加图片注释,不超过 140 字(可选)

通过平移量来计算旋转角度,注意:这个角度精度有些低。

(秋招)面激光slam必备知识--scan context_第8张图片

编辑切换为居中

添加图片注释,不超过 140 字(可选)

就是上面所说的预匹配。

编辑

添加图片注释,不超过 140 字(可选)

已经有人实现了,这个代码值得读一读。

你可能感兴趣的:(人工智能)