主要内容

scanContextDescriptor

从点云中提取扫描上下文描述符

描述

例子

描述符= scanContextDescriptor (ptCloud从点云中提取扫描上下文描述符,ptCloud

扫描上下文描述符是点云的二维全局特征描述符,可用于检测环路闭包。该函数计算描述符的方法是,首先将3-D点云扫描中的点分块到同心径向和方位角容器中,然后选择最大值z-每个bin中点的高度。

描述符= scanContextDescriptor (ptCloud名称,值使用一个或多个名称-值对参数指定选项。

例子

全部折叠

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

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

将第1次、第2次和第100次扫描读入工作区。

ptCloud1 = readFrame (veloReader, 1);ptCloud2 = readFrame (veloReader 2);ptCloud100 = readFrame (veloReader, 100);

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

descriptor1 = scanContextDescriptor (ptCloud1);descriptor2 = scanContextDescriptor (ptCloud2);descriptor100 = scanContextDescriptor (ptCloud100);

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

dist1to2 = scanContextDistance (descriptor1 descriptor2);dist1to100 = scanContextDistance (descriptor1 descriptor100);

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

disp (描述符从第一帧到第二帧的距离+ num2str (dist1to2))
描述符从帧1到帧2的距离:0.087646
disp (描述符从第1帧到第100帧的距离+ num2str (dist1to100))
描述符从帧1到100的距离:0.32427

输入参数

全部折叠

点云对象,指定为pointCloud对象。

名称-值参数

指定可选的逗号分隔对名称,值参数。的名字参数名是和吗价值对应的值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:“NumBins”,[60]20将径向容器的数量设置为20.,以及方位箱的数量60

同心径向和角向容器的数量,指定为逗号分隔的对,由“NumBins”向量的形式是[numRadialBinsnumAzimuthalBins),numRadialBins是否是指定同心径向容器和的数量的正整数numAzimuthalBins指定同心角度容器的数量。要提取更紧凑的描述符,可以减少箱子的数量,但这降低了区别能力。

描述符中包含的bin的最小点数,指定为由逗号分隔的对“MinPointsPerBin”一个正整数。不包含最小数量点的箱子不包含在描述符中。对于这些容器,函数返回.若要减少杂音被包含在垃圾桶中的可能性,请增加此值。

传感器原点,指定为逗号分隔对组成“SensorOrigin”一个二元向量。元素设置了x- - -y以世界单位表示的传感器原点的-轴坐标点。该函数将容器置于扫描原点附近。

分集点时使用的描述符的径向边界,指定为逗号分隔的对,由“RadialRange”和一个双元素向量的形式[rmin征求].使用这个name-value参数来限制描述符所覆盖的空间边界。

输出参数

全部折叠

扫描上下文描述符,返回为——- - - - - -N矩阵,N是描述符中同心径向容器和角向容器的数量。这些由NumBins财产。

函数返回继承的数据类型位置输入点云的属性。

数据类型:|

提示

  • 扫描上下文描述符函数假设传感器大致水平安装,并且输入点云位于传感器坐标系中。

  • 方法比较两个扫描上下文描述符之间的距离,以确定循环闭包候选者scanContextDistance函数。

扩展功能

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

另请参阅

对象

功能

介绍了R2020b