主要内容

路径度量

路径度量的信息

描述

路径度量对象保存用于计算路径度量的信息。使用对象函数根据一组姿势和关联的贴图环境计算平滑度、间隙和路径有效性。

创建

描述

PathMetricObj= pathmetrics (路径基于输入创建对象navPath对象。状态验证器被假定为职业地图对象。的路径输入设置路径财产。

例子

PathMetricObj= pathmetrics (路径验证器基于输入创建对象navPath对象和关联的状态验证器,以检查路径有效性。的验证器输入设置状态验证器财产。

属性

全部展开

路径数据结构,指定为navPath对象是要计算其度量的路径。

路径上状态的验证器,指定为职业地图validatorVehicleCostmap对象。

对象的功能

清除 最小路径净空
isPathValid 确定规划的路径是否没有障碍
显示 在地图环境中可视化路径度量
平滑度 平滑的路径

例子

全部崩溃

基于一组位姿和相关的地图环境,计算规划路径的平滑度、间隙和有效性。

加载和分配映射到状态验证器

从示例地图创建一个占用地图,并设置地图分辨率。

负载exampleMaps.mat%单纯形映射mapResolution = 1;%电池/米地图= occupancyMap (simpleMap mapResolution);

创建一个杜宾斯州空间。

statespace = stateSpaceDubins;

创建一个基于占用地图的状态验证器,在Dubins状态空间中存储参数和状态。

statevalidator=ValidatorOccupencyMap(状态空间);

将映射分配给验证器。

statevalidator。地图=地图;

设置验证器的验证距离。

statevalidator。ValidationDistance = 0.01;

更新状态空间边界,使其与映射限制相同。

statespace.StateBounds=[map.XWorldLimits;map.YWorldLimits;[-pi]];

规划路径

创建一个RRT*路径规划器并允许进一步优化。

planner=PlannerRTStar(状态空间,状态验证器);planner.ContinueAfterGoalReached=true;

减少最大迭代次数并增加最大连接距离。

planner.MaxIterations=2500;planner.MaxConnectionDistance=0.3;

将路径规划器的开始和目标状态定义为x, y,θ向量。xy是笛卡尔坐标,然后呢θ是方向角。

起点=[2.5,2.5,0];%[米,米,弧度]目标= [22.5,8.75,0];

计划一条从开始状态到目标状态的路径。plan函数返回navPath对象。

rng (100“旋风”%可重复的结果[路径,solutionInfo] =计划(计划,开始,目标);

计算并可视化路径度量

创建路径度量对象。

pathMetricsObj=pathmetrics(路径,状态验证器);

检查路径有效性。结果为1(正确)如果计划路径没有障碍物。0(假)指示无效路径。

isPathValid (pathMetricsObj)
ans =逻辑1

计算路径的最小间隙。

间隙(pathMetricsObj)
ans = 1.4142

评估路径的平滑度。值接近0指示更平滑的路径。直线路径返回的值为0

平滑(pathMetricsObj)
ans = 1.7318

可视化路径的最小间隙。

显示(pathMetricsObj)传说(“规划路径”“最小间隙”

图形包含一个轴对象。轴对象包含5个类型为图像、面片、线的对象。这些对象表示计划路径、最小间隙。

使用RRT*算法规划通过停车场的车辆路径。计算并可视化规划路径的平滑度、净空和有效性。

加载和分配映射到状态验证器

加载一个停车场的成本地图。绘制成本图,查看停车场和车辆应该避免的充气区域。

负载parkingLotCostmap.mat;costmap=parkingLotCostmap;绘图(costmap)xlabel(‘X(米)’)伊拉贝尔(‘Y(米)’

图中包含一个轴对象。axis对象包含两个类型为image, patch的对象。这个对象表示膨胀的区域。

创建一个stateSpaceDubins目标,并增加最小图灵半径为4米。

statespace = stateSpaceDubins;statespace。MinTurningRadius = 4;%米

创建一个validatorVehicleCostmap对象使用创建的状态空间。

statevalidator = validatorVehicleCostmap (statespace);

将停车场成本图分配给状态验证器对象。

statevalidator.Map=costmap;

规划路径

将车辆的起始姿势和目标姿势定义为[xyΘ)向量。(xy)位置以米为单位。方向角的世界单位Θ在度。

startPose=[5,5,90];%[米,米,度]目标概率=[40,38,180];%[米,米,度]

使用一个路径规划者(自动驾驶工具箱)对象和计划(自动驾驶工具箱)功能用于规划从起始姿势到目标姿势的车辆路径。

规划器=路径规划器RRT(成本地图);refPath=计划(计划员、启动人员、目标人员);

沿路径每隔一米插入一次。将方向角从角度转换为弧度。

姿势=零(大小(refPath.PathSegments,2)+1,3);姿势(1,:)=refPath.StartPose;i=1:size(refPath.PathSegments,2)姿势(i+1,:)=refPath.PathSegments(i).GoalPose;结束姿势(:,3)=deg2rad(姿势(:,3));

创建一个navPath对象使用的状态空间对象和指定的状态提出了

路径= navPath (statespace,姿势);

计算并可视化路径度量

创建一个路径度量对象。

pathMetricsObj=pathmetrics(路径,状态验证器);

检查路径有效性。结果为1符合事实的),如果所规划的路径没有障碍。0)指示无效路径。

isPathValid (pathMetricsObj)
ans =逻辑1

计算并可视化最小值清除这条路的尽头。

间隙(pathMetricsObj)
ans = 0.5000
显示(pathMetricsObj)传说(“膨胀的领域”“规划路径”“最小间隙”)xlabel(‘X(米)’)伊拉贝尔(‘Y(米)’

图形包含一个轴对象。轴对象包含6个类型为图像、面片、线的对象。这些对象表示充气区域、规划路径、最小间隙。

计算和可视化平滑度路径的。值接近0指示更平滑的路径。直线路径返回的值为0

平滑(pathMetricsObj)
ans=0.0842
显示(pathMetricsObj“指标”,{“平滑”})(传说“膨胀的领域”路径平滑的)xlabel(‘X(米)’)伊拉贝尔(‘Y(米)’

图中包含一个轴对象。axis对象包含3个类型为image, patch的对象。这些对象代表膨胀区域,路径平滑。

可视化路径每个状态的间隙。

显示(pathMetricsObj“指标”,{“州议会”})(传说“膨胀的领域”“规划路径”“清除路径状态”)xlabel(‘X(米)’)伊拉贝尔(‘Y(米)’

图中包含一个轴对象。axis对象包含29个类型为image, patch, line的对象。这些对象表示膨胀区域、规划路径、路径状态清除。

介绍了R2019b