文档帮助中心文档
提取扫描和相应的姿势
[扫描,姿势]= scansandpose (slamObj)
[扫描,姿势]= scansandpose (slamObj, nodeid)
例子
[扫描,提出了= scansandpose (slamObj)对象使用的扫描lidarSLAM对象作为lidarScan对象,以及它们相关的[x y theta]的基本姿态图中的姿态slamObj.
[扫描,提出了= scansandpose (slamObj)
扫描
提出了
slamObj
lidarSLAM
lidarScan
[x y theta]
[扫描,提出了= scansandpose (slamObj,nodeid)返回特定节点id的扫描和姿态。要获得节点id,请参阅底层poseGraph对象slamObj为节点id。
[扫描,提出了= scansandpose (slamObj,nodeid)
nodeid
poseGraph
全部折叠
使用一个lidarSLAM对象迭代添加和比较激光雷达扫描,并构建机器人轨迹的优化姿态图。要从相关的姿势和扫描中获取占用图,请使用buildMap函数。
buildMap
加载数据并设置SLAM算法
的单元格数组lidarScan对象。激光雷达扫描是由ClearPath Robotics公司的Husky®机器人在停车场收集的。通常情况下,激光雷达的扫描频率很高,而且SLAM不需要每次扫描。因此,通过只选择每40次扫描来对扫描进行采样。
负载garage_fl1_southend.mat扫描扫描=扫描(1:40:结束);
为了建立SLAM算法,需要指定激光雷达的范围、地图分辨率、环路闭合阈值和搜索半径。针对特定的机器人和环境调整这些参数。创建lidarSLAM对象使用这些参数。
maxRange = 19.2;%米分辨率= 10;每米细胞百分比slamObj = lidarSLAM(分辨率,maxRange);slamObj。LoopClosureThreshold = 360;slamObj。LoopClosureSearchRadius = 8;
迭代添加扫描
使用一个为循环,添加扫描到SLAM对象。对象使用扫描匹配将每个添加的扫描与之前添加的扫描进行比较。为了改进映射,对象会在检测到循环闭包时优化姿态图。每10次扫描,显示存储的姿势和扫描。
为
为i = 1:数字(扫描)addScan(slamObj,扫描{i});如果rem(i,10) == 0 show(slamObj);结束结束
查看占用率图
将所有扫描添加到SLAM对象后,构建一个occupancyMap通过调用映射buildMap扫描和摆姿势。使用与SLAM对象相同的映射分辨率和最大范围。
occupancyMap
[scansSLAM,pose] = scansandpose (slamObj);occMap = buildMap(扫描slam,姿势,分辨率,maxRange);图显示(occMap)“车库占用图”)
激光雷达SLAM对象,指定为lidarSLAM对象。对象包含SLAM算法参数、传感器数据和用于构建地图的底层姿态图。
姿态图中的节点id,指定为正整数。节点以连续的ID号添加到姿态图中。要获得节点id,请参阅底层poseGraph对象slamObj为节点id。
激光雷达扫描读数,返回为lidarScan对象。
姿态为每次扫描,返回作为n的-乘3矩阵[x y theta]向量。每一行都是一个对应于扫描的姿势扫描.
在构造时使用此语法lidarSLAM用于代码生成的对象:
slamObj = lidarSLAM (mapResolution maxLidarRange maxNumScans)指定生成代码时允许接受的扫描次数的上限。maxNumScans为正整数。只有在生成代码时才需要此扫描限制。
slamObj = lidarSLAM (mapResolution maxLidarRange maxNumScans)
maxNumScans
optimizePoseGraph|poseGraph
optimizePoseGraph
您有这个示例的修改版本。要使用编辑打开此示例吗?
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
选择一个网站,在可用的地方获得翻译的内容,并查看当地的活动和优惠。根据您所在的位置,我们建议您选择:.
您也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。
联系当地办事处