主要内容

matchScansLine

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

自从R2020b

描述

relpose= matchScansLine (currScanrefScaninitialRelPose根据在每次扫描中识别的匹配线特征估计两次扫描之间的相对位置。指定相对姿态的初始猜测,initialRelPose

relpose统计数据= matchScansLine(___中返回协方差和退出条件的附加信息统计数据作为使用前面输入的结构。

例子

relpose统计数据debugInfo= matchScansLine(___返回额外的调试信息,debugInfo为基于行扫描的匹配结果。

例子

___= matchScansLine(___、名称、值)使用一个或多个选项指定选项名称,值对参数。

例子

全部折叠

方法的使用matchScansLine给出初始估计,估计激光雷达扫描之间的相对姿态的函数。识别出的线特征是可视化的,以显示扫描匹配算法如何在扫描之间关联特征。

加载一对激光雷达扫描。的.mat文件还包含相对位姿差的初始猜测,initGuess,这可能是基于里程计或其他传感器数据。

负载tb3_scanPair.mat情节(s1)情节(s2)

图中包含一个轴对象。标题为LiDAR Scan, xlabel X, ylabel Y的坐标轴对象包含2个类型为line的对象。一行或多行仅使用标记显示其值

设置线特征提取与关联参数。激光雷达数据的噪声决定了平滑阈值,该阈值定义了特定线条特征何时发生换行。增加该值可获得更多噪声的激光雷达数据。兼容性尺度决定了哪些特性被认为是匹配的。增加这个值可以对线路特征参数进行更宽松的限制。

平滑度thresh = 0.2;compatible scale = 0.002;

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

[relPose, stats, debugInfo] = matchScansLine(s2, s1, initGuess,...“SmoothnessThreshold”smoothnessThresh,...“CompatibilityScale”, compatibilityScale);

在匹配扫描后,debugInfo输出给你关于检测到的线特征参数的信息,[ρα),以及扫描之间哪些特征匹配的假设。

debugInfo。MatchHypothesis第一行、第二行和第六行所包含的状态s1匹配中的第五,第二和第四个特征s2

debugInfo。MatchHypothesis
ans =1×65 2 0 0 0 4

所提供的辅助函数绘制这两次扫描以及用标签提取的特征。s2根据相对姿态的初始猜测,转换为在同一帧中。

exampleHelperShowLineFeaturesInScan(s1, s2, debugInfo, initGuess);

使用估计的相对姿态matchScansLine转换s2.然后,绘制两个扫描图以显示相对位姿差是准确的,扫描叠加以显示相同的环境。

s2t = transformScan(s2,relPose);CLF图(s1) hold住情节(s2t)

图中包含一个轴对象。标题为LiDAR Scan, xlabel X, ylabel Y的坐标轴对象包含2个类型为line的对象。一行或多行仅使用标记显示其值

输入参数

全部折叠

当前激光雷达扫描读数,指定为alidarScan对象。

你的激光雷达扫描可以包含而且值,但算法忽略它们。

参考激光雷达扫描读数,指定为alidarScan对象。

你的激光雷达扫描可以包含而且值,但算法忽略它们。

相对于参考激光扫描帧的当前姿态的初始猜测[x y theta]向量。(x, y)平移的单位是米和吗θ是以弧度为单位的旋转。

名称-值参数

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

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

例子:“LineMergeThreshold”(0.10 - 0.2)

扫描中检测换行点的阈值,指定为标量。平滑度由调用定义diff (diff (scanData))并假设扫描角度等间隔。平滑度值高于此阈值对应的扫描点被认为是断点。对于噪声水平较高的激光雷达扫描数据,提高该阈值。

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

如果扫描点集中的点数低于此阈值,则无法从该扫描点集中识别出直线特征。当激光雷达扫描数据有噪声时,该属性设置过小可能会导致低质量的线特征被识别出来,从而导致匹配结果倾斜。另一方面,如果这个数字设置得太大,可能会错过一些关键的行特性。

用于合并线特征的线参数阈值,指定为两元素向量(ρα).一行由两个参数定义:

  • ρ——从原点到直线沿垂直于直线的矢量的距离,单位为米。

  • α——x-轴和ρ向量,用弧度表示。

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

用于检测拐角的突出值的下界,指定为正标量。

日珥测量的是局部极端在激光雷达数据中的突出程度。只有高于这个下界的值才被认为是角。角有助于识别线条特征,但不是特征本身的一部分。对于有噪声的激光雷达扫描数据,增加这个下界。

缩放,用于调整特性关联的兼容性阈值,指定为正标量。较小的规模意味着关联特性的兼容性阈值更小。如果在激光雷达数据中没有发现具有明显线特征的特征,则增大该值。对于无效的特征匹配,减小此值。

输出参数

全部折叠

当前扫描相对于参考扫描的姿态,返回为[x y theta],在那里(x, y)平移的单位是米和吗θ是以弧度为单位的旋转。

扫描匹配信息,以结构形式返回,包含以下字段:

  • 协方差——3 × 3矩阵表示相对位姿估计的协方差。的matScansLine函数之间不提供协方差(x, y)θ相对位姿的分量。因此,矩阵遵循如下模式:[Cxx, Cxy 0;Cyx Cyy 0;0 0 Ctheta]

  • ExitFlag——表示求解器退出条件的标量值:

    • 0——没有错误。

    • 1—在一次或两次扫描中发现行特征数量不足(< 2)。考虑使用具有更多线条特征的不同扫描。

    • 2——识别的行特征匹配数量不足。这可能表明initialRelPose无效或扫描间隔太远。

基于行扫描匹配结果的调试信息,以结构形式返回,包含以下字段:

  • ReferenceFeatures——从参考扫描中提取的线特征n2矩阵。每个行特征表示为(ρα)对于参数方程,ρx∙cos (α) +y∙sin (α).

  • ReferenceScanMask——掩码,指示参考扫描中的哪个点用于每个线特征n——- - - - - -p矩阵。每一行都对应其中的一行ReferenceFeatures每个点都包含0和1refScan

  • CurrentFeatures——从当前扫描中提取的行特征n2矩阵。每个行特征表示为(ρα)对于参数方程,ρx∙cos (α) +y∙sin (α).

  • CurrentScanMask——掩码,表示当前扫描中的哪个点用于每个线特征n——- - - - - -p矩阵。每一行都对应其中的一行ReferenceFeatures每个点都包含0和1refScan

  • MatchHypothesis——最佳线特征匹配假设为n元素向量,其中n行特征的数量在吗CurrentFeatures.每个元素都表示中对应的特征ReferenceFeatures并给出了匹配特征的索引ReferenceFeatures索引是否匹配

  • MatchValue——标量值,表示每个分数MatchHypothesis.较低的值被认为是更好的匹配。如果有两个元素MatchHypothesis具有相同的索引,则使用得分较低的特征。

参考文献

[1]内拉,J.和J.d.塔多斯。使用联合兼容性检验的随机制图中的数据关联IEEE机器人与自动化汇刊17日,没有。6(2001): 890-97。https://doi.org/10.1109/70.976019。

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

版本历史

R2020b中介绍

另请参阅

|