文档帮助中心文档
在地图环境中可视化路径度量
显示(pathMetricsObj)
显示(pathMetricsObj、名称、值)
axHandle =显示(pathMetricsObj)
例子
显示(pathMetricsObj)在地图环境中以最小间隙绘制路径。
显示(pathMetricsObj)
pathMetricsObj
显示(pathMetricsObj,名称,值)使用一个或多个名称-值对参数指定其他选项。
显示(pathMetricsObj,名称,值)
名称,值
axHandle=显示(pathMetricsObj)输出用于绘制路径的图形的轴柄。
axHandle=显示(pathMetricsObj)
axHandle
全部折叠
基于一组位姿和相关的地图环境,计算规划路径的平滑度、间隙和有效性。
加载和分配映射到状态验证器
从示例地图创建一个占用地图,并设置地图分辨率。
负载exampleMaps.mat;% simpleMapmapResolution = 1;%细胞/计地图= occupancyMap (simpleMap mapResolution);
创建一个杜宾斯州空间。
statespace = stateSpaceDubins;
创建一个基于占用地图的状态验证器,在Dubins状态空间中存储参数和状态。
statevalidator = validatorOccupancyMap (statespace);
将映射分配给验证器。
statevalidator。地图=地图;
为验证器设置验证距离。
statevalidator。ValidationDistance = 0.01;
更新状态空间边界,使其与映射限制相同。
statespace。statbounds = [map.XWorldLimits;map.YWorldLimits;[-pi]];
计划路径
创建一个RRT*路径规划器并允许进一步优化。
规划师= plannerRRTStar (statespace statevalidator);计划。ContinueAfterGoalReached = true;
减少最大迭代次数,增加最大连接距离。
计划。MaxIterations = 2500;计划。MaxConnectionDistance = 0.3;
定义路径规划器的开始和目标状态为[x, y,θ]向量。x和y是笛卡尔坐标,然后呢θ为方向角。
[
]
Start = [2.5, 2.5, 0];%[米,米,弧度]目标= [22.5,8.75,0];
计划一条从开始状态到目标状态的路径。plan函数返回navPath对象。
navPath
rng (100“旋风”)%可重复的结果[路径,solutionInfo] =计划(计划,开始,目标);
计算和可视化路径度量
创建路径度量对象。
pathMetricsObj = pathmetrics(路径,statevalidator);
检查路径的有效性。结果是1(真正的)如果规划的路径没有障碍。0(假)无效路径。
1(真正的)
0(假)
isPathValid (pathMetricsObj)
ans =逻辑1
计算路径的最小间隙。
间隙(pathMetricsObj)
ans = 1.4142
评估路径的平滑度。值接近0指示平坦的路径。直线路径返回值为0.
0
平滑(pathMetricsObj)
ans = 1.7318
可视化路径的最小净空。
显示(pathMetricsObj)传说(“计划路径”,的最小间隙)
这个示例使用:
使用RRT*算法规划车辆通过停车场的路径。计算并可视化所规划路径的平滑度、清除度和有效性。
加载一个停车场的成本地图。绘制成本图,查看停车场和车辆应该避免的充气区域。
负载parkingLotCostmap.mat;costmap = parkingLotCostmap;情节(costmap)包含(“X(米)) ylabel (“Y”(米))
创建一个stateSpaceDubins目标,并增加最小图灵半径为4米。
stateSpaceDubins
4
statespace = stateSpaceDubins;statespace。MinTurningRadius = 4;%米
创建一个validatorVehicleCostmap对象使用创建的状态空间。
validatorVehicleCostmap
statevalidator = validatorVehicleCostmap (statespace);
将停车场成本图分配给状态验证器对象。
statevalidator。地图= costmap;
定义车辆的起始和目标姿势为[x,y,Θ)向量。(x,y)位置以米为单位。方向角的世界单位Θ在度。
x
y
Θ
startPose = [5,5,90];%[米,米,度]goalPose = [40,38,180];%[米,米,度]
使用一个pathPlannerRRT(自动驾驶工具箱)对象和计划(自动驾驶工具箱)函数来规划车辆从起始位姿到目标位姿的路径。
pathPlannerRRT
计划
规划师= pathPlannerRRT (costmap);refPath =计划(计划、startPose goalPose);
沿路径每隔一米插入一次。将方向角从角度转换为弧度。
提出了= 0(大小(refPath.PathSegments, 2) + 1, 3);:提出了(1)= refPath.StartPose;为i = 1:size(refPath.PathSegments,2) pose (i+1,:) = refPath.PathSegments(i).GoalPose;结束提出了函数(:,3)=(姿势(:,3));
创建一个navPath对象使用的状态空间对象和指定的状态提出了.
提出了
路径= navPath (statespace,姿势);
创建一个pathmetrics对象。
pathmetrics
检查路径的有效性。结果是1(真正的),如果所规划的路径没有障碍。0(假)表示无效路径。
1
真正的
假
计算并可视化最小值间隙的路径。
间隙
ans = 0.5000
显示(pathMetricsObj)传说(“膨胀的领域”,“计划路径”,的最小间隙)包含(“X(米)) ylabel (“Y”(米))
计算和可视化平滑度的路径。值接近0指示平坦的路径。直线路径返回值为0.
平滑度
ans = 0.0842
显示(pathMetricsObj“指标”,{“平滑”})(传说“膨胀的领域”,路径平滑的)包含(“X(米)) ylabel (“Y”(米))
可视化路径的每个状态的清除。
显示(pathMetricsObj“指标”,{“StatesClearance”})(传说“膨胀的领域”,“计划路径”,“清除路径状态”)包含(“X(米)) ylabel (“Y”(米))
路径度量的信息,指定为pathmetrics对象。
指定可选的逗号分隔的对名称,值参数。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家.
的名字
价值
Name1, Value1,…,的家
“父”,axHandle
父
轴
UIAxes
用于绘制路径的轴,指定为逗号分隔的对,由“父”和一个轴或uiaxes对象。如果没有指定父,则创建一个新图形。
“父”
uiaxes
例子:显示(pathMetricsObj,‘父’,axHandle)
显示(pathMetricsObj,‘父’,axHandle)
指标
显示度量选项,指定为逗号分隔的对“指标”以及包含以下值的任意组合的单元格数组:
“指标”
“MinClearance”—显示最小路径间隙。
“MinClearance”
“StatesClearance”—显示路径状态清除信息。
“StatesClearance”
“平滑”—显示路径平滑度。
“平滑”
例子:显示(pathMetricsObj“指标”,{“平滑”,“StatesClearance”})
显示(pathMetricsObj“指标”,{“平滑”,“StatesClearance”})
数据类型:细胞
细胞
用于绘制路径的轴,返回为轴或uiaxes对象。
isPathValid
您有这个示例的修改版本。您想打开这个示例与您的编辑吗?
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。金宝app
选择一个网站,在那里获得翻译的内容,并看到当地的活动和优惠。根据您的位置,我们建议您选择:.
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。
与当地办事处联系