主要内容

matchScansLine

利用线特征估计两次激光扫描之间的姿态

描述

relpose= matchscansline(Curscan.重新扫描InitialLeleble.估计基于每次扫描中识别的匹配线特征的两个扫描之间的相对姿势。指定对相对姿势的初始猜测,InitialLeleble.

[relpose统计] = matchscansline(___返回有关协方差和退出条件的其他信息统计作为使用先前输入的结构。

例子

[relpose统计调试信息] = matchscansline(___返回其他调试信息,调试信息,从行扫描匹配结果。

例子

[___] = matchscansline(___,名称,价值)使用一个或多个指定选项名称,价值对参数。

例子

全部收缩

此示例显示了如何使用matchScansLine估计LIDAR扫描之间相对姿势的功能给出了初始估计。已识别的线特征被可视化以显示如何扫描匹配算法如何关联扫描之间的功能。

加载一对激光雷达扫描。这。垫文件还包含对相对姿势差异的初始猜测,initGuess,这可以基于内径术或其他传感器数据。

加载tb3_scanPair.mat情节(s1)情节(s2)离开

图包含轴。标题激光扫描扫描的轴包含2个类型的型号。

设置LINE功能提取和关联的参数。LIDAR数据的噪声确定平滑度阈值,该平滑度阈值定义了针对特定线特征发生线断裂。增加此值以获取更多嘈杂的LIDAR数据。兼容性缩放确定何时被视为匹配。增加此值以在线功能参数上的放宽限制。

光滑肌= 0.2;兼容性= 0.002;

称呼matchScansLine将给定的初始猜测和其他参数指定为名称-值对。该函数计算每一次扫描的线特征,尝试匹配它们,并使用一个总体估计得到姿态的差异。

[relPose, stats, debugInfo] = matchScansLine(s2, s1, initGuess,......'smoothsitythreshold',光滑触头,......“CompatibilityScale”,兼容性尺寸);

匹配扫描结果后调试信息输出为您提供有关检测到的行功能参数的信息,[rhoα]和假设在扫描之间匹配的假设。

debuginfo.matchlypothesis.指出,第一,第二和第六线的特征S1匹配第五,第二和第四个功能S2

debuginfo.matchlypothesis.
ans =.1×6.5 2 0 0 0 4

提供的辅助功能绘制这两种扫描和用标签提取的功能。S2基于相对姿势的初始猜测,转换为在同一帧中。

examplehelpershowlinefeaturesscan (s1, s2, debugInfo, initGuess);

图中包含2个轴。标题为s1的轴1包含16个行、文本类型的对象。transform包含了19个对象,类型为Line, text。

使用估计的相对姿势matchScansLine转换S2。然后,绘制两个扫描以表明相对姿态差异是准确的,并且扫描覆盖以显示相同的环境。

s2t = transformScan (s2, relPose);clf情节(s1)绘图(S2T)保持离开

图包含轴。标题激光扫描扫描的轴包含2个类型的型号。

输入参数

全部收缩

当前LIDAR扫描读数,指定为aLidarscan.对象。

您的LIDAR扫描可以包含值,但算法忽略了它们。

参考LIDAR扫描读数,指定为aLidarscan.对象。

您的LIDAR扫描可以包含值,但算法忽略了它们。

相对于参考激光扫描帧的最初猜测电流姿势,指定了一个[x y theta]向量。(x, y)是米和米的翻译θ.是弧度的旋转。

名称值对参数

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

例子:“Linemergethreshold”,[0.10 0.2]

阈值检测扫描中的线条断点,指定为标量。通过呼叫来定义平滑度差异(Diff(Scandata))并承担同等间隔的扫描角度。对应于高于该阈值的平滑度值的扫描点被认为是断点。对于具有较高噪声水平的LIDAR扫描数据,增加此阈值。

每行功能中的最小扫描点数,指定为大于3的正整数。

如果该设置中的点数低于此阈值,则不能从一组扫描点识别行功能。当LIDAR扫描数据嘈杂时,将此属性设置得太小可能导致识别低质量的线路功能并歪斜匹配结果。另一方面,如果该号码设置得太大,可能会错过一些关键线特征。

Line参数的阈值合并线特征,指定为双元素向量[rho alpha]。一行由两个参数定义:

  • rho.- 沿着垂直于线的矢量距离原点到线的距离,以米为单位指定。

  • α- 角之间的角度X设在和rho.矢量,在弧度中指定。

如果两个行特征的这些参数之间的差异低于给定阈值,则线路功能合并。

突出值下限以检测一个角落,指定为正标量。

突出措施衡量LIDAR数据中的当地极值突出了多少。只有比这个下限的值高于这个角落。Corners帮助识别行功能,但不是特征本身的一部分。对于嘈杂的LIDAR扫描数据,增加这一下限。

用于调整功能关联的兼容性阈值的尺度,指定为正标量。较低的尺度意味着关联特征的更严格的兼容性阈值。如果LIDAR数据中未找到具有明显线特征的功能,请提高此值。对于无效的功能匹配,减少此值。

输出参数

全部收缩

电流扫描的姿势相对于参考扫描,返回为[x y theta], 在哪里(x, y)是米和米的翻译θ.是弧度的旋转。

扫描匹配信息,用以下字段返回为结构:

  • 协方差- 3比3矩阵,代表相对姿势估计的协方差。这Matscansline.函数之间不提供协方差(x,y)θ.相对姿势的组成部分。因此,矩阵遵循模式:[CXX,CXY 0;Cyx深度0;0 0 CTHETA]

  • ExitFlag.- 标量值,指示求解器的退出条件:

    • 0.- 没有错误。

    • 1- 在一个或两个扫描中找到线特征数量不足(<2)。考虑使用不同的扫描具有更多的行功能。

    • 2- 确定了线条特征匹配数量不足。这可能表明InitialLeleble.无效或扫描间隔太远。

调试基于行的扫描匹配结果的信息,返回为具有以下字段的结构:

  • 参考文献- 从参考扫描中提取的线条功能作为N- 2矩阵。每个线特征都表示为[rho alpha]对于参数方程,rho.=X∙cos (α)+y∙罪(α)。

  • ReferenceScanMask- 屏蔽指示参考扫描中的哪个点用于每个行功能都使用N-经过-P.矩阵。每行对应于一行参考文献每一个点都包含0和1重新扫描

  • CurrentFeatures.- 从当前扫描中提取的线条特征N- 2矩阵。每个线特征都表示为[rho alpha]对于参数方程,rho.=X∙cos (α)+y∙罪(α)。

  • CurrentsCanmask.- 掩码指示当前扫描中的哪个点用于每个行功能都使用N-经过-P.矩阵。每行对应于一行参考文献每一个点都包含0和1重新扫描

  • 菲律宾化- 最佳线条特征与假设匹配N元素矢量,在哪里N是线的数量CurrentFeatures.。每个元素表示相应的功能参考文献并给出匹配功能的索引参考文献是一个索引匹配

  • MatchValue——指示每个分数的标量值菲律宾化。较低的值被认为是更好的匹配。如果是两个元素菲律宾化具有相同的索引,使用具有较低分数的功能。

参考文献

[1] Neira,J.和J.D.塔多斯。“随机映射中的数据关联使用联合兼容性测试。”机器人和自动化的IEEE交易17,不。6(2001):890-97。https://doi.org/10.1109/70.976019。

[2]沉,小通,艾米利奥Frazzoli,Daniela Rus和Marcelo H. Ang。“快速联合兼容性分支和特征云匹配的绑定。”2016 IEEE/RSJ智能机器人与系统国际会议(IROS),2016年。https://doi.org/10.1109/iros.2016.7759281。

在R2020A中介​​绍