主要内容

matchScans

估计构成两个激光扫描

自从R2019b

描述

例子

构成= matchScans (currScan,refScan)发现之间的相对姿态参考lidarScan和一个电流lidarScan对象使用正态分布变换(无损检测)。

例子

构成= matchScans (currRanges,currAngles,refRanges,refAngles)发现两个激光扫描指定为之间的相对姿态范围和角度。

(构成,统计数据)= matchScans (___)返回额外的统计信息扫描匹配结果使用前面的输入参数。

(___)= matchScans (___、名称、值)由一个或多个指定附加选项指定名称,值对参数。

例子

全部折叠

创建一个参考激光雷达扫描使用lidarScan。指定范围和角度作为向量。

refRanges = 5 * 1 (1300);refAngles = linspace(-π/ 2π/ 2300);refScan = lidarScan (refRanges refAngles);

使用transformScan(机器人系统工具箱)函数,生成第二个激光雷达扫描一次x, y偏置的(0.5,0.2)

currScan = transformScan (refScan, 0.5 - 0.2 [0]);

匹配参考扫描,第二扫描估计造成差别。

构成= matchScans (currScan refScan);

使用transformScan函数一致的扫描转换第二扫描帧的第一个扫描使用相对构成不同。情节原始扫描和对齐的扫描。

currScan2 = transformScan (currScan,姿势);次要情节(2,1,1);持有情节(currScan)情节(refScan)标题(“原始扫描”)举行次要情节(2,1,2);持有情节(currScan2)情节(refScan)标题(“对齐扫描”)xlim ([0 5])

图包含2轴对象。坐标轴对象与原始扫描标题1,包含X, Y ylabel包含2线类型的对象。一个或多个行显示它的值只使用标记轴对象2与标题对齐的扫描,包含X, Y ylabel包含2线类型的对象。一个或多个行显示的值只使用标记

下面的例子使用了“fminunc”解算器执行扫描匹配算法。这个规划求解算法需要优化工具箱™许可证。

指定一个参考激光扫描范围和角度。

refRanges = 5 * 1 (1300);refAngles = linspace(-π/ 2π/ 2300);

使用transformScan(机器人系统工具箱)函数,生成第二个激光扫描的x, y偏置的(0.5,0.2)

[currRanges, currAngles] = transformScan (refRanges refAngles, [0.5 - 0.2 0]);

匹配参考扫描,第二扫描估计造成差别。

构成= matchScans (currRanges currAngles、refRanges refAngles,“SolverAlgorithm”,“fminunc”);

提高估计给一个初始姿态估计。

构成= matchScans (currRanges currAngles、refRanges refAngles,“SolverAlgorithm”,“fminunc”,“InitialPose”-0.4 - -0.1 [0]);

使用transformScan函数一致的扫描转换第二扫描帧的第一个扫描使用相对构成不同。情节原始扫描和对齐的扫描。

[currRanges2, currAngles2] = transformScan (currRanges currAngles,姿势);(x1, y1) = pol2cart (refAngles refRanges);(x2, y2) = pol2cart (currAngles currRanges);(x3, y3) = pol2cart (currAngles2 currRanges2);次要情节(1、2、1)情节(x1, y1,“o”x2, y2,“* r”)标题(“原始扫描”次要情节(1、2、2)情节(x1, y1,“o”x3 y3,“* r”)标题(“对齐扫描”)

图包含2轴对象。坐标轴对象1 2原始扫描标题包含的对象类型。一个或多个行显示它的值只使用标记轴对象2与标题对齐扫描包含2线类型的对象。一个或多个行显示的值只使用标记

输入参数

全部折叠

目前激光雷达扫描阅读,指定为一个lidarScan对象。

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

参考激光雷达扫描阅读,指定为一个lidarScan对象。

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

目前激光扫描范围,指定为一个向量。范围给出对象从激光传感器测量的距离。

你的激光扫描范围可以包含值,但该算法忽略了它们。

目前激光扫描角度、弧度指定为一个向量。取向的角度给出了相应的测量范围。

参考激光扫描范围,指定为一个向量在米。范围给出对象从激光传感器测量的距离。

你的激光扫描范围可以包含值,但该算法忽略了它们。

参考激光扫描角度,指定为一个向量的弧度。取向的角度给出了相应的测量范围。

名称-值参数

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

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:“InitialPose”,[1 1π/ 2]

优化算法,指定为“信赖域”“fminunc”。使用“fminunc”需要一个优化工具箱™许可证。

的初始猜测当前相对于参考激光扫描,指定为逗号分隔组成的“InitialPose”和一个(x yθ)向量。(x, y)米,翻译θ旋转的弧度。

细胞在米,长度指定为逗号分隔组成的“CellSize”和一个数字标量。matchScans使用单元格大小的空间离散化无损检测算法。

调整单元格大小对无损检测算法的正确使用是重要的。最优单元格大小取决于输入扫描和机器人的环境。大细胞大小可能会导致不准确匹配差采样地区。更小的细胞需要更多的内存和更少的变化之间的后续扫描。传感器噪声影响较小的细胞大小的算法。选择一个合适的单元格大小取决于您的环境,输入数据的规模。

最大迭代次数,指定为逗号分隔组成的“MaxIterations”和一个标量整数。大量的迭代结果更准确的姿势估计,但以牺牲不再执行时间。

无损检测的变化分数下限,指定为逗号分隔组成的“ScoreTolerance”和一个数字标量。存储在无损检测的分数分数输出的字段统计数据结构。之间的迭代,如果分数变化小于这个宽容,该算法收敛于一个解决方案。一个更小的公差的结果更准确的姿势估计,但是需要较长的执行时间。

输出参数

全部折叠

造成当前相对于参考扫描,扫描返回(x yθ),在那里(x, y)米,翻译θ旋转的弧度。

扫描匹配的统计数据,作为结构返回以下字段:

  • 分数——数字标量代表无损检测得分在执行扫描匹配。这个分数是可能性的估计当前扫描匹配参考扫描转换。分数总是非负。更大的分数表明更好的匹配。

  • 黑森- 3×3的黑森矩阵代表无损检测在给定的成本函数构成解决方案。黑森作为一个指标的不确定性与姿态估计。

引用

[1]Biber, P。,和W. Strasser. "The Normal Distributions Transform: A New Approach to Laser Scan Matching."智能机器人和系统程序。2003年。

[2]Magnusson,马丁。“三维正态分布变换——一种有效表示注册、表面分析,和循环检测。”PhD Dissertation. Örebro University, School of Science and Technology, 2009.

扩展功能

版本历史

介绍了R2019b