主要内容

matchScansGrid

使用网格搜索估计两个激光雷达扫描之间的姿态

描述

例子

构成= matchScansGrid (currScanrefScan查找引用之间的相对位姿lidarScan和一个电流lidarScan对象使用基于网格的搜索。matchScansGrid将激光雷达扫描对转换成概率网格,并通过关联它们的网格找到两个扫描之间的位姿。该函数使用分支定界策略来加快大型离散搜索窗口的计算速度。

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

___) = matchScansGrid (___、名称、值)使用一个或多个指定选项名称,值对参数。例如,“InitialPose”,[1 1π/ 2]指定扫描匹配的初始位姿估计。

例子

全部折叠

执行扫描匹配使用网格搜索估计两个激光扫描之间的姿态。从扫描生成一个概率网格,并估计从这些网格的姿态差异。

加载激光扫描数据。这两个扫描来自一个实际的激光雷达传感器机器人姿态的变化被存储为lidarScan对象。

负载laserScans.mat扫描scan2情节(扫描)情节(scan2)

图中包含一个轴对象。轴对象与标题LiDAR扫描包含2个对象的类型线。

使用matchScansGrid来估计两次扫描之间的姿势。

relPose = matchScansGrid (scan2、扫描);

使用估计的位姿,将当前扫描转换回参考扫描。当你把它们画在一起时,它们的扫描重叠得很紧密。

scan2Tformed = transformScan (scan2 relPose);情节(扫描)情节(scan2Tformed)

图中包含一个轴对象。轴对象与标题LiDAR扫描包含2个对象的类型线。

输入参数

全部折叠

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

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

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

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

名称-值参数

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

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

相对于参考激光扫描的当前位姿的初始猜想,指定为逗号分隔对组成“InitialPose”和一个(x yθ)向量。(x, y)平移单位是米和吗θ是以弧度为单位的旋转。

每米的网格单元格,指定为逗号分隔的对,由“决议”一个正整数。扫描匹配结果的精度可达网格单元大小。

激光雷达传感器的最大距离,指定为逗号分隔对组成“MaxRange”一个正标量。

转换的搜索范围,指定为逗号分隔对,由“TranslationSearchRange”和一个(x, y)向量。这些值以米为单位定义了给定的初始平移估计的搜索窗口InitialPose.如果InitialPose给药(x0 y0),则搜索窗口坐标为(x0-x x0 + x)(y0-y y0 + y).该参数仅在以下情况下有效InitialPose都是确定的。

搜索范围为旋转,指定为逗号分隔对组成“RotationSearchRange”一个正标量。这个值以给定的初始旋转估计周围的弧度定义搜索窗口InitialPose.如果InitialPose旋转为th0,则搜索窗口为[th0-a th0 + a),在那里一个为旋转搜索范围。该参数仅在以下情况下有效InitialPose都是确定的。

输出参数

全部折叠

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

扫描匹配统计信息,返回如下字段的结构:

  • 分数—数字标量表示扫描匹配时的分数。这个分数是对转换后的当前扫描与参考扫描匹配的可能性的估计。分数总是非负。较大的分数表示更好的匹配,但是值会根据所使用的激光雷达数据而变化。

  • 协方差-估计协方差表示计算相对姿态的置信度,返回为3 × 3矩阵。

参考文献

Hess, Wolfgang, Damon Kohler, Holger Rapp, and Daniel Andor。二维激光雷达SLAM中的实时环路闭合2016 IEEE机器人与自动化国际会议(ICRA).2016.

扩展功能

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

介绍了R2019b