主要内容

detectLoop

检测循环闭包

描述

例子

loopViewIds= detectLoop (loopDetector检测最后添加的描述符的循环闭包并返回视图标识符loopViewIds对应于循环闭包。如果函数没有检测到循环闭包,loopViewIds是空的。类设置的最近添加的描述符的数量NumExcludedDescriptors名称-值参数,以避免根据最近的描述符检测循环闭包。

loopViewIds= detectLoop (loopDetector描述符使用扫描上下文描述符检测循环闭包描述符

loopViewIds经销] = detectLoop(___返回扫描上下文距离经销在循环描述符和查询描述符之间,使用来自以前语法的输入参数的任何组合。该函数使用修改的余弦距离计算扫描上下文描述符之间的距离,归一化为范围[0,1]。

___] = detectLoop(___名称=值使用一个或多个名称-值参数指定选项,以及使用前面语法中的任何参数组合。例如,detectLoop (loopDetector NumExcludedDescriptors = 15)检测最后添加的描述符的循环闭包,而只忽略最近添加的15个循环描述符。

例子

全部折叠

创建一个循环闭合检测器。

loopDetector = scanContextLoopDetector;

创建一个Velodyne PCAP文件读取器。

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

读取点云并从每个点云扫描中提取扫描上下文描述符。向检测器添加描述符。

ptCloud = readFrame(velereader,viewId);描述符= scanContextDescriptor(ptCloud);addDescriptor (loopDetector viewId,描述符);结束

检查下一个点云是否可以在不排除任何最近添加的描述符的情况下被归类为环路闭合检测。

viewId = viewId + 1;ptCloud = readFrame(velereader,viewId);描述符= scanContextDescriptor(ptCloud);[loopViewId,dists] = detectLoop(loopDetector,descriptor,“NumExcludedDescriptors”, 0)
loopViewId =uint3210
dist =0.0858

输入参数

全部折叠

环路闭合检测器,指定为ascanContextLoopDetector对象。

扫描上下文描述符,指定为——- - - - - -N矩阵,径向箱的数量和N是方位角箱的数目。

名称-值参数

例子:detectLoop (loopDetector NumExcludedDescriptors = 15)检测最后添加的描述符的循环闭包,而只忽略最近添加的15个循环描述符。

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

扫描距离阈值将视图分类为循环闭包,指定为正标量。增加这个值可以返回更多的循环闭包,但这也会增加误报。

最近添加的要排除为循环闭包候选的描述符个数,指定为非负整数。排除最近添加的描述符,以避免针对最近的描述符检测最近添加的描述符的循环闭包。增加NumExcludedDescriptors如果多个连续的描述符对应同一个区域。

子描述符空间中的搜索半径,指定为正标量。该函数仅为搜索半径内的那些描述符计算扫描上下文距离。增加这个值可以返回更多的循环闭包,但也会增加误报。典型值范围为0.2而且0.4

返回的最强循环闭合检测的最大数目,指定为正整数。增大此值可增加返回的循环关闭检测的潜在数量。但是,增加这个值会降低计算速度。将此值设置为返回所有循环关闭检测。

输出参数

全部折叠

对应于循环闭包的循环闭包视图标识符,返回为P-element整数值的向量。如果函数没有找到循环闭包,则返回loopViewIds作为一个空向量。循环关闭检测器忽略最后一个NumExcludedDescriptors描述符,以避免根据最近的描述符检测循环闭包。

扫描上下文距离,返回为P-元素向量的正值。距离表示循环描述符和相应查询描述符之间的扫描上下文距离。该函数使用修改的余弦距离计算扫描上下文描述符之间的距离,归一化为范围[0,1]。

算法

环键描述符从扫描上下文描述符提取的子描述符。这是每个方位仓的占用率,使其旋转不变。

扫描上下文循环关闭检测器是一种两阶段算法。它首先使用环键描述符进行最近邻居搜索,以查找候选循环闭包。然后,它使用扫描上下文描述符计算扫描上下文距离,并对其进行阈值以确定最佳的环路闭合检测。

扩展功能

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

版本历史

R2021b中引入