主要内容

间隙

最小路径间隙

描述

例子

间隙(pathMetricsObj返回路径的最小间隙。间隙是指在指定的地图环境中,路径上的网格单元中心与障碍物之间的最小距离。

请注意

计算出的间隙精确到√6 (2)乘以网格映射单元格大小。

间隙(pathMetricsObj,“类型”,“州”以。的形式返回路径的每个状态的最小距离集n1的向量,n是状态数。

例子

全部折叠

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

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

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

负载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,θ]向量。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.4142

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

平滑(pathMetricsObj)
ans = 1.7318

可视化路径的最小净空。

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

图中包含一个坐标轴。轴包含图像、贴片、线等5个对象。这些对象表示规划路径,最小间隙。

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

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

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

负载parkingLotCostmap.mat;costmap = parkingLotCostmap;情节(costmap)包含(“X(米)) ylabel (“Y”(米)

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

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

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

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

statevalidator = validatorVehicleCostmap (statespace);

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

statevalidator。地图= costmap;

计划路径

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

startPose = [5,5,90];%[米,米,度]goalPose = [40,38,180];%[米,米,度]

使用一个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对象。

pathMetricsObj = pathmetrics(路径,statevalidator);

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

isPathValid (pathMetricsObj)
ans =逻辑1

计算并可视化最小值间隙的路径。

间隙(pathMetricsObj)
ans = 0.5000
显示(pathMetricsObj)传说(“膨胀的领域”,“计划路径”,的最小间隙)包含(“X(米)) ylabel (“Y”(米)

图中包含一个坐标轴。轴包含图像、贴片、线等6个对象。这些对象代表膨胀区域,规划路径,最小间隙。

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

平滑(pathMetricsObj)
ans = 0.0842
显示(pathMetricsObj“指标”, {“平滑”})(传说“膨胀的领域”,路径平滑的)包含(“X(米)) ylabel (“Y”(米)

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

可视化路径的每个状态的清除。

显示(pathMetricsObj“指标”, {“StatesClearance”})(传说“膨胀的领域”,“计划路径”,“清除路径状态”)包含(“X(米)) ylabel (“Y”(米)

图中包含一个坐标轴。轴包含29个对象的类型为图像,补丁,线。这些对象表示膨胀区域、规划路径、路径状态清除。

输入参数

全部折叠

路径度量的信息,指定为pathmetrics对象。

另请参阅

对象

功能

介绍了R2019b