主要内容

scanContextDistance

扫描上下文描述符之间的距离

描述

例子

经销= scanContextDistance (descriptor1descriptor2)计算扫描上下文描述符之间的标准化距离。使用计算的距离确定环路闭合候选。

扫描上下文描述符是点云的二维全局特征描述符,可用于检测循环闭包。若要从点云提取扫描上下文描述符,请使用scanContextDescriptor函数。

例子

全部折叠

创建一个Velodyne®包捕获(PCAP)文件读取器。

veloReader = velodyneFileReader(“lidarData_ConstructionRoad.pcap”“HDL32E”);

读取第1、2和30次扫描到工作区。

ptCloud1 = readFrame(veloReader,1);ptCloud2 = readFrame(veloReader,2);ptCloud30 = readFrame(veloReader,30);

从每个点云提取扫描上下文描述符。

description = scanContextDescriptor(ptCloud1);description = scanContextDescriptor(ptCloud2);descriptor30 = scanContextDescriptor(ptCloud30);

计算第1和第2扫描上下文描述符之间的描述符距离,以及第1和第30扫描上下文描述符之间的描述符距离。

dist1to2 = scanContextDistance(descriptor1,descriptor2);dist1to30 = scanContextDistance(描述1,描述30);

显示扫描上下文描述符距离。

disp (描述符从帧1到帧2的距离+ num2str (dist1to2))
描述符从帧1到帧2的距离:0.087647
disp (从第1帧到第30帧的描述符距离+ num2str (dist1to30))
描述符从帧1到30的距离:0.31551

输入参数

全部折叠

点云的扫描上下文描述符——- - - - - -N矩阵。为了确保精确的距离测量,在提取该描述符时使用与的相同的径向范围descriptor2

数据类型:|

点云的扫描上下文描述符——- - - - - -N矩阵。为了确保精确的距离测量,在提取该描述符时使用与的相同的径向范围descriptor1

数据类型:|

输出参数

全部折叠

扫描上下文描述符之间的距离,作为范围[0,1)中的标量返回。较小的值表示扫描上下文可能属于相同的位置,并且是循环关闭的候选对象。函数返回经销作为一个数据类型descriptor1descriptor2输入为数据类型。否则,函数返回经销作为一个数据类型。

数据类型:|

算法

  • 该函数使用修改后的余弦距离计算扫描上下文描述符之间的距离,并将其归一化到范围[01).

参考文献

[1] G. Kim和A. Kim,“扫描上下文:三维点云图中位置识别的自我中心空间描述符,”2018 IEEE/RSJ智能机器人与系统国际会议(IROS), 2018, pp. 4802-4809, doi: 10.1109/IROS.2018.8593953。

扩展功能

C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。

版本历史

R2020b中介绍