主要内容

lidarSLAM

使用激光雷达扫描执行本地化和映射

自从R2019b

描述

lidarSLAM类执行同步定位和映射(大满贯)激光雷达扫描传感器输入。SLAM算法需要在激光雷达扫描和高度一个节点在一个潜在的构成图。然后使用扫描扫描相关匹配算法。还搜索循环闭包,扫描之前映射区域重叠,构成图和优化节点构成。

创建

描述

slamObj= lidarSLAM创建一个激光雷达大满贯对象。默认的入住率地图大小是20个细胞每米。每个激光雷达扫描的最大范围是8米。

例子

slamObj= lidarSLAM (mapResolution,maxLidarRange)创建一个激光雷达大满贯对象和设置MapResolutionMaxLidarRange基于输入属性。

slamObj= lidarSLAM (mapResolution,maxLidarRangemaxNumScans)指定允许的上限接受扫描的数量在生成代码。maxNumScans是一个正整数。这只需要扫描限制在生成代码。

属性

全部展开

基本构成图连接扫描,指定为一个poseGraph对象。增加扫描lidarSLAM更新这个姿势图。当循环闭包是发现,构成图优化的使用OptimizationFcn

解决占用网格地图,指定为在细胞每米一个正整数。指定地图关于建设的决议。

激光雷达传感器的最大范围,指定为一个积极的标量米。指定的最大范围施工。

构成图优化函数,指定为一个函数处理。默认情况下,该算法调用optimizePoseGraph函数。指定自己的优化方法,该类需要的函数签名:

[updatedPose,统计]= myOptimizationFcn (poseGraph)
poseGraph是一个poseGraph对象。updatedPose是一个n3的向量(x yθ)姿势中列出的顺序节点ID。统计是一个结构包含一个ResidualError字段是一个积极的标量。使用统计优化结构,包括其他相关的信息。

阈值的分数接受扫描匹配算法的循环闭包,指定为一个积极的标量。高阈值对应于一个更好的匹配,但分数基于传感器数据的变化。

搜索半径for循环检测,关闭指定为一个积极的标量。通过增加搜索时间增加这个半径影响性能。调整这个距离根据您的环境和预期的车辆轨迹。

尝试发现循环闭包数量,指定为一个正整数。增加的数量尝试通过增加搜索时间会影响性能。

指定的闭包添加循环,允许自动回滚真正的。大满贯对象返回的剩余误差OptimizationFcn。如果它探测到一个突然的改变剩余误差,此属性真正的,它拒绝(回滚)循环关闭。

数量的循环闭包接受触发优化,指定为一个正整数。默认情况下,PoseGraph优化每一次lidarSLAM添加一个循环关闭。

最低姿势的变化需要扫描过程,指定为一个(翻译旋转)向量。相对姿态改变为新添加的扫描计算(x yθ)。如果翻译xy-安置或旋转θ这些阈值,超过了lidarSLAM对象接受扫描和添加一个添加到PoseGraph

扫描注册方法,指定为一个特征向量。

请注意

图像处理工具箱™需要利用相位相关法。

增量平移匹配搜索范围,指定为一个双元素向量的形式(xy]在米。此属性时才适用ScanRegistrationMethod属性设置为“BranchAndBound”

这些值定义搜索窗口中指定初始翻译估计relPoseEst论点的addScan函数。设置此属性的值之间的最大预期翻译连续接受扫描。

这个属性是相似的“TranslationSearchRange”名称-值对的论点matchScansGrid函数。

旋转增量匹配搜索范围,指定为积极的标量弧度。此属性时才适用ScanRegistrationMethod属性设置为“BranchAndBound”

这个值定义的搜索窗口中指定的初始估计旋转relPoseEst论点的addScan函数。设置此属性的值之间的最大预期旋转连续接受扫描。

这个属性是相似的“RotationSearchRange”名称-值对的论点matchScansGrid函数。

对象的功能

addScan 添加扫描激光雷达大满贯地图
复制 复制激光雷达大满贯对象
removeLoopClosures 把循环闭包从构成图
scansAndPoses 提取扫描和相应的姿势
显示 情节扫描和机器人姿态

例子

全部折叠

使用一个lidarSLAM迭代对象添加和比较激光雷达扫描和建立一个优化机器人的轨迹构成图。从相关的姿势和入住率地图扫描,使用buildMap函数。

加载数据,建立SLAM算法

负载单元阵列lidarScan对象。激光雷达扫描收集在一个停车场沙哑的从ClearPath机器人®®机器人。通常情况下,在高频率和激光雷达扫描每个扫描不需要大满贯。因此,每40才下样品扫描通过选择扫描。

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

设置SLAM算法,指定激光雷达范围,地图的分辨率,关闭循环阈值,和搜索半径。为您的特定的机器人和环境调整这些参数。创建lidarSLAM与这些参数对象。

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

添加扫描迭代

使用一个循环,增加扫描大满贯对象。添加的对象使用扫描匹配比较每个扫描之前添加的。提高地图,对象优化构成图当它检测到一个循环关闭。每10个扫描,显示存储的姿态和扫描。

i = 1:元素个数(扫描)addScan (slamObj扫描{我});如果快速眼动(我,10)= = 0显示(slamObj);结束结束

地图视图入住率

添加所有大满贯的扫描对象之后,建立一个occupancyMap通过调用地图buildMap扫描和姿势。使用相同的图分辨率和马克斯与大满贯对象范围使用。

[scansSLAM,姿势]= scansAndPoses (slamObj);occMap = buildMap (scansSLAM、姿势、分辨率、maxRange);图显示(occMap)标题(“车库的入住率地图”)

更多关于

全部展开

引用

[1]赫斯,沃尔夫冈,达蒙科勒,Holger Rapp,丹尼尔和或。“实时循环关闭2 d激光雷达大满贯。”2016年IEEE机器人与自动化国际会议上)举行(“国际机器人与自动化会议”。2016年。

扩展功能

版本历史

介绍了R2019b