主要内容

addscan.

添加扫描到激光雷达SLAM地图

描述

addScan (懒jCurscan.增加激光雷达扫描,Curscan.,到LIDAR Slam对象,懒j.该函数使用扫描匹配将此扫描与最近的扫描相关联,然后将其添加到所定义的姿势图中懒j.如果扫描被接受,addscan.中的设置检测循环闭包并进行优化懒j

例子

addScan (懒jCurscan.relPoseEst也指定一个相对于最新的激光雷达扫描姿态懒j.这种相对姿态改善了扫描匹配。

请注意

relPoseEst输入被忽略ScanRegistrationMethod的属性lidarSLAM对象设置为'phasecorrelation'

isAcceptedloopClosureInfoOptiminfo.) = addScan (___输出有关将扫描添加到SLAM对象的详细信息。isAccepted表示扫描是否被添加或拒绝。loopClosureInfoOptiminfo.指示是否检测到环路闭合或位姿图被优化。

例子

全部折叠

使用一个lidarSLAM对象迭代地添加和比较LIDAR扫描并构建机器人轨迹的优化姿势图。要从相关的姿势和扫描中获取占用地图,请使用buildMap函数。

加载数据,建立SLAM算法

加载单元格数组Lidarscan.对象。激光雷达扫描是在ClearPath Robotics®公司的Husky®机器人的停车场收集的。通常,激光雷达扫描的频率很高,SLAM不需要每次扫描。因此,向下采样扫描只选择每40次扫描。

负载garage_fl1_southend.mat扫描扫描=扫描(1:40:结束);

要设置SLAM算法,请指定LIDAR范围,地图分辨率,循环闭合阈值和搜索半径。调整特定机器人和环境的这些参数。创造lidarSLAM对象具有这些参数。

maxrange = 19.2;%米分辨率= 10;每米细胞百分比slamObj = lidarSLAM(分辨率,maxRange);slamObj。LoopClosureThreshold = 360;slamObj。LoopClosureSearchRadius = 8;

添加扫描迭代

使用一个循环,将扫描添加到SLAM对象。该对象使用扫描匹配来将每个添加的扫描比较到先前添加的扫描。为了改进地图,每当检测到环路时,对象会优化姿势图。每10个扫描,显示存储的姿势和扫描。

i = 1:numel(扫描)addscan(Slamobj,Scans {i});如果if (result (i,10) == 0); / /返回结果结束结束

图中包含一个坐标轴。轴包含121个线型对象。

地图视图入住率

在将所有扫描添加到SLAM对象之后,构建一个occupancyMap通过呼叫地图buildMap通过扫描和姿势。使用与SLAM对象相同的地图分辨率和最大距离。

[scansSLAM,姿势]= scansAndPoses (slamObj);occMap = buildMap (scansSLAM、姿势、分辨率、maxRange);图显示(occMap)标题(《车库占用地图》

图中包含一个坐标轴。带有标题占用车库地图的轴包含类型图像的对象。

输入参数

全部折叠

激光雷达SLAM目标,指定为lidarSLAM对象。目标包含SLAM算法参数、传感器数据和用于构建地图的底层姿态图。

激光雷达扫描读数,指定为Lidarscan.对象。该扫描与最近的扫描相关联懒j使用扫描匹配。

扫描的相对位姿估计,指定为(x yθ)向量。这种相对姿势改善了扫描匹配。

输出参数

全部折叠

表示扫描是否被接受,返回为真实或者.如果扫描之间的相对位姿低于MovementThreshold的属性懒j,扫描被拒绝。默认情况下,所有扫描都被接受。

循环闭包的详细信息,作为带有以下字段的结构返回:

  • 亮点- 在姿势图中新连接的边缘的ID,作为向量返回。

  • 边缘- 新添加的循环闭合边缘,返回为一个n每个边连接的节点id的矩阵。

  • 分数- 从扫描匹配返回的姿势图中的新连接边的分数,作为向量返回。

请注意

如果LoopClosureAutoRollback属性设置为真实懒j,则可以从姿态图中去除环路闭合边。如果优化后的残留错误急剧变化,此属性将拒绝循环闭包。因此,在这个结构中列出的一些边id可能在实际的位姿图中不存在。

姿态图优化详细信息,作为具有这些字段的结构返回:

  • 缺乏形状- Boolean表示添加此扫描时是否执行优化。优化性能取决于优化interval.物业懒j

  • IsAccepted——布尔值,表示是否接受基于ResidualError.

  • ResidualError.——与优化相关的错误,作为标量返回。

  • loopclosureremoved- 优化期间删除的循环闭合边的ID列表,返回为向量。

扩展功能

介绍了R2019b