文档帮助中心
提取扫描和相应的姿态
(扫描,姿势)= scansAndPoses (slamObj)
(扫描,姿势)= scansAndPoses (slamObj nodeid)
例子
[扫描,提出了) = scansAndPoses (slamObj)方法使用的扫描lidarSLAM对象作为利达斯卡纳对象及其关联(x yθ)从底层的姿势图slamObj.
[扫描,提出了) = scansAndPoses (slamObj)
扫描
提出了
slamObj
lidarSLAM
利达斯卡纳
(x yθ)
[扫描,提出了) = scansAndPoses (slamObj,nodeid)返回特定节点ID的扫描和姿势。要获取节点ID,请参阅底层poseGraph对象slamObj获取节点id。
[扫描,提出了) = scansAndPoses (slamObj,nodeid)
nodeid
poseGraph
全部折叠
使用一个lidarSLAM目标迭代添加和比较激光雷达扫描,建立机器人轨迹的优化位姿图。要从相关的姿势和扫描中获得占用地图,请使用buildMap函数。
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); / /返回结果结束结束
地图视图入住率
在将所有扫描添加到SLAM对象之后,构建一个occupancyMap通过调用映射buildMap通过扫描和姿势。使用与SLAM对象相同的地图分辨率和最大距离。
occupancyMap
[scansSLAM,姿势]= scansAndPoses (slamObj);occMap = buildMap (scansSLAM、姿势、分辨率、maxRange);图显示(occMap)标题(《车库占用地图》)
激光雷达SLAM目标,指定为lidarSLAM对象。目标包含SLAM算法参数、传感器数据和用于构建地图的底层姿态图。
姿态图中的节点id,指定为正整数。节点以顺序的ID号添加到姿态图中。要获取节点id,请查看底层poseGraph对象slamObj获取节点id。
激光雷达扫描读数,返回为利达斯卡纳对象。
每次扫描的姿势,返回为n3的矩阵(x yθ)向量。每行是一个姿势,对应于中的扫描扫描.
构造时使用此语法lidarSLAM用于代码生成的对象:
slamObj=lidarSLAM(地图分辨率、maxLidarRange、maxNumScans)指定生成代码时允许接受的扫描次数的上限。maxNumScans为正整数。此扫描限制仅在生成代码时需要。
slamObj=lidarSLAM(地图分辨率、maxLidarRange、maxNumScans)
maxNumScans
optimizePoseGraph|poseGraph
optimizePoseGraph
您有这个示例的修改版本。您想打开这个示例与您的编辑吗?
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。金宝app
选择一个网站,在那里获得翻译的内容,并看到当地的活动和优惠。根据您的位置,我们建议您选择:.
您还可以从以下列表中选择网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。
与当地办事处联系