主要内容

扫描和姿态

提取扫描和相应的姿态

描述

例子

扫描提出了) = scansAndPoses (slamObj方法使用的扫描lidarSLAM对象作为利达斯卡纳对象及其关联(x yθ)从底层的姿势图slamObj

扫描提出了) = scansAndPoses (slamObjnodeid返回特定节点ID的扫描和姿势。要获取节点ID,请参阅底层poseGraph对象slamObj获取节点id。

例子

全部折叠

使用一个lidarSLAM目标迭代添加和比较激光雷达扫描,建立机器人轨迹的优化位姿图。要从相关的姿势和扫描中获得占用地图,请使用buildMap函数。

加载数据,建立SLAM算法

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

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

设置SLAM算法,指定激光雷达距离、地图分辨率、环路闭合阈值和搜索半径。针对特定的机器人和环境调整这些参数。创建lidarSLAM使用这些参数创建对象。

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

添加扫描迭代

使用一个循环,将扫描添加到SLAM对象。对象使用扫描匹配将每个添加的扫描与以前添加的扫描进行比较。为了改进贴图,对象在检测到循环闭合时会优化姿势图。每扫描10次,显示存储的姿势和扫描。

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

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

地图视图入住率

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

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

图中包含一个坐标轴。标题为“车库占用地图”的坐标轴包含一个类型为image的对象。

输入参数

全部折叠

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

姿态图中的节点id,指定为正整数。节点以顺序的ID号添加到姿态图中。要获取节点id,请查看底层poseGraph对象slamObj获取节点id。

输出参数

全部折叠

激光雷达扫描读数,返回为利达斯卡纳对象。

每次扫描的姿势,返回为n3的矩阵(x yθ)向量。每行是一个姿势,对应于中的扫描扫描

扩展功能

介绍了R2019b