主要内容

途径

路径指标的信息

描述

途径对象保存用于计算路径指标的信息。使用对象函数来基于一组姿势和相关地图环境计算平滑度,间隙和路径有效性。

创建

描述

pathmetricsobj.= pathmetrics (路径基于输入创建对象navPath对象。状态验证器被假定为Validatoroccupancemap.对象。的路径的值路径财产。

例子

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

属性

全部展开

路径数据结构,指定为navPath对象是要计算规范的路径。

路径上的状态验证器,指定为aValidatoroccupancemap.要么validatorVehicleCostmap对象。

对象的功能

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

例子

全部折叠

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

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

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

负载exampleMaps.mat%simplemap.mapResolution = 1;%细胞/仪表地图= occupancyMap (simpleMap mapResolution);

创建一个杜宾斯州空间。

statespace = stateSpaceDubins;

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

statevalidator = validatorOccupancyMap (statespace);

将映射分配给验证器。

statevalidator。地图=地图;

设置验证器的验证距离。

statevalidator。ValidationDistance = 0.01;

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

stationspace.statebounds = [map.xworldlimits; map.yworldlimits; [ -  pi pi]];

计划路径

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

Planner = PlannerRrtstar(SenationPace,StateValidator);planner.continuaftergoalReached =真;

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

规划师..AxIterations = 2500;Planner.MaxConnectionDistance = 0.3;

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

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

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

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

计算和可视化路径指标

创建路径度量对象。

pathMetricsObj = pathmetrics(路径,statevalidator);

检查路径有效性。结果是1(真实)如果计划的路径是免费的。0(假)表示无效路径。

isPathValid (pathMetricsObj)
ans =逻辑1

计算路径的最小间隙。

间隙(pathMetricsObj)
ans = 1

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

平滑(pathMetricsObj)
ans = 1.7453.

可视化路径的最小间隙。

显示(pathMetricsObj)传说('计划道路''最小清关'

使用RRT *算法通过停车场计划车辆路径。计算和可视化计划路径的平滑度,间隙和有效性。

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

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

负载parkingLotCostmap.mat;costmap =停车艇门;绘图(Costmap)Xlabel('x(米)')ylabel('Y(米)'

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

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

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

statevalidator = validatorVehicleCostmap (statespace);

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

statevalidator.map = costmap;

计划路径

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

血统= [5,5,90];%[米,米,度]守门= [40,38,180];%[米,米,度]

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

Planner = pathplannerrt(costmap);Refpath =计划(规划师,血统,守缩小);

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

姿势=零(尺寸(Refpath.Pathsegments,2)+1,3);姿势(1,:) = Refpath.Startpose;i = 1:size(RefPath.PathSegments,2)姿势(i + 1,:) = Refpath.PatchSegments(i).GoOlpose;结束姿势(:,3)= DEG2RAD(姿势(:,3));

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

路径= navPath (statespace,姿势);

计算和可视化路径指标

创建一个途径对象。

pathMetricsObj = pathmetrics(路径,statevalidator);

检查路径有效性。结果是1真的),如果所规划的路径没有障碍。0)表示无效路径。

isPathValid (pathMetricsObj)
ans =逻辑1

计算并可视化最小值清除路径。

间隙(pathMetricsObj)
ans = 0.5000
显示(pathMetricsObj)传说(“膨胀的领域”'计划道路''最小清关')Xlabel('x(米)')ylabel('Y(米)'

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

平滑(pathMetricsObj)
ans = 0.0842.
显示(pathMetricsObj'度量标准',{“平滑”})(传说“膨胀的领域”路径平滑的)Xlabel('x(米)')ylabel('Y(米)'

可视化每种状态的间隙。

显示(pathMetricsObj'度量标准',{'不确定'})(传说“膨胀的领域”'计划道路'“清除路径状态”)Xlabel('x(米)')ylabel('Y(米)'

介绍了R2019b