主要内容

pathmetrics

信息对路径度量

自从R2019b

描述

pathmetrics计算路径度量的对象持有信息。使用对象函数计算平滑、间隙和路径的有效性基于一组提出了地图和相关的环境。

创建

描述

pathMetricsObj= pathmetrics (路径)基于输入创建一个对象navPath对象。验证器被认为是一种状态validatorOccupancyMap对象,如果状态空间navPath对象是一个stateSpaceSE2,stateSpaceDubins,或stateSpaceReedsShepp对象。否则,验证器被认为是一种状态validatorOccupancyMap3D对象,如果状态空间navPath对象是一个stateSpaceSE3对象。的路径输入设置的值路径财产。

例子

pathMetricsObj= pathmetrics (路径,验证器)基于输入创建一个对象navPath对象和相关状态验证器检查有效性的路径。的验证器输入设置的值StateValidator财产。

属性

全部展开

路径的数据结构,指定为一个navPath对象的路径度量计算。

验证器对州路径,指定的作为validatorOccupancyMap,validatorVehicleCostmap,或validatorOccupancyMap3D对象。

对于二维状态空间,默认状态验证器validatorOccupancyMap (stateSpaceSE2 binaryOccupancyMap (10))

三维状态空间,默认状态验证器validatorOccupancyMap3D (stateSpaceSE3)

对象的功能

间隙 最小间隙的路径
isPathValid 确定计划路径障碍是免费的
显示 可视化地图环境中路径度量
平滑度 平滑的路径

例子

全部折叠

计算平滑、间隙和规划路径的有效性基于一组提出了地图和相关的环境。

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

从一个例子创建一个占用地图地图,设置地图解决方案。

负载exampleMaps.mat;% simpleMapmapResolution = 1;%细胞/计地图= occupancyMap (simpleMap mapResolution);

创建一个杜宾状态空间。

statespace = stateSpaceDubins;

创建一个状态验证器根据入住率映射到存储参数和状态的杜宾状态空间。

statevalidator = validatorOccupancyMap (statespace);

指定验证器的地图。

statevalidator。地图=地图;

设置验证验证器的距离。

statevalidator。ValidationDistance = 0.01;

更新状态空间边界地图一样的限制。

statespace。StateBounds = [map.XWorldLimits; map.YWorldLimits;[-ππ]];

计划路径

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

规划师= plannerRRTStar (statespace statevalidator);计划。ContinueAfterGoalReached = true;

减少迭代的最大数量和增加的最大连接距离。

计划。MaxIterations = 2500;计划。MaxConnectionDistance = 0.3;

定义启动和路径规划的目标国家(x, y,θ]向量。xy是笛卡尔坐标,θ是定向角。

开始= (2.5,2.5,0);%(米,米,弧度)目标= (22.5,8.75,0);

规划一条从起始状态到目标状态。函数返回一个计划navPath对象。

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

计算和可视化路径度量

创建一个路径度量对象。

pathMetricsObj = pathmetrics(路径,statevalidator);

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

isPathValid (pathMetricsObj)
ans =逻辑1

计算路径的最小间隙。

间隙(pathMetricsObj)
ans = 1.4142

评估路径的平滑。值接近0表明平滑路径。直线路径返回一个值0

平滑(pathMetricsObj)
ans = 1.7318

可视化的路径的最小间隙。

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

图包含一个坐标轴对象。坐标轴对象包含X [m], ylabel Y(米)包含5类型的对象形象,补丁,线。这些对象是计划路线,最小间隙。

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

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

负载的costmap停车场。情节costmap看到停车场和车辆应避免膨胀的领域。

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

图包含一个坐标轴对象。对象包含X轴(米),ylabel Y(米)包含2类型的对象形象,补丁。该对象代表的地区。

创建一个stateSpaceDubins对象和增加最小图灵半径4米。

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

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

statevalidator = validatorVehicleCostmap (statespace);

指定的停车场costmap状态验证器对象。

statevalidator。地图= costmap;

计划路径

启动和目标提出了车辆定义为(x,y,Θ)向量。世界单位(x,y位置是在米。世界单位取向角度Θ在度。

startPose = (5, 90);%(米、米、学位)goalPose = (40, 180);%(米、米、学位)

使用一个pathPlannerRRT(自动驾驶工具箱)对象和计划(自动驾驶工具箱)函数的计划从一开始就对车辆路径目标构成。

规划师= pathPlannerRRT (costmap);refPath =计划(计划、startPose goalPose);

沿着路径插入在每一米。方向的角度转换为弧度。

提出了= 0(大小(refPath.PathSegments, 2) + 1, 3);:提出了(1)= refPath.StartPose;i = 1:尺寸(refPath.PathSegments, 2)姿势(我+ 1)= refPath.PathSegments .GoalPose;结束提出了函数(:,3)=(姿势(:,3));

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

路径= navPath (statespace,姿势);

计算和可视化路径度量

创建一个pathmetrics对象。

pathMetricsObj = pathmetrics(路径,statevalidator);

检查路径的有效性。结果是1(真正的如果计划路径障碍是免费的。0()表示一个无效的路径。

isPathValid (pathMetricsObj)
ans =逻辑1

计算和可视化的最低间隙的路径。

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

图包含一个坐标轴对象。对象包含X轴(米),ylabel Y(米)包含6类型的对象形象,补丁,线。这些对象代表的地区,规划路径,最小间隙。

计算和可视化平滑度的路径。值接近0表明平滑路径。直线路径返回一个值0

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

图包含一个坐标轴对象。对象包含X轴(米),ylabel Y(米)包含3类型的对象形象,补丁。这些对象代表的地区,路径平滑。

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

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

图包含一个坐标轴对象。对象包含X轴(米),ylabel Y(米)包含29图像类型的对象,补丁,线。这些对象代表的地区,规划路径,路径状态的间隙。

计划一条路穿过一个街区使用RRT算法。计算和可视化平滑、间隙和规划路径的有效性。

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

一块3 d占用城市地图加载到工作区。指定阈值考虑细胞无障碍。

mapData =负载(“dMapCityBlock.mat”);omap = mapData.omap;的核心。FreeThreshold = 0.5;

膨胀的入住率地图添加一个缓冲地带安全运行的障碍。

充气(omap, 1)

创建一个SE(3)状态空间对象状态变量的范围。

党卫军= stateSpaceSE3([0 0 220; 220; 100;正正,正正,正正,正正]);

创建一个3 d入住率映射状态验证器使用创建的状态空间。分配入住率validator对象映射到状态。指定采样间隔的距离。

sv = validatorOccupancyMap3D(党卫军,地图=的核心,ValidationDistance = 0.1);

计划路径

创建一个RRT路径规划与增加最大连接距离和最大迭代次数减少。指定一个自定义的目标函数,确定路径到达目标如果欧几里得距离目标低于1米的阈值。

规划师= plannerRRT (ss、sv、MaxConnectionDistance = 50,MaxIterations = 1000,GoalReachedFcn = @ (~ s, g)(规范(s - g (1:3)) (1:3) < 1),GoalBias = 0.1);

指定开始和目标提出了。

开始= 25 [50 180 0.7 0.2 0.1 0];目标= (150 33 35 0.3 0 0.1 - 0.6);

配置的随机数字生成器可重复的结果。

rng (1,“旋风”)

计划的路径。

[pthObj, solnInfo] =计划(计划,开始,目标);

计算和可视化路径度量

创建一个路径度量对象。

pathMetricsObj = pathmetrics (pthObj, sv);

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

isPathValid (pathMetricsObj)
ans =逻辑1

计算路径的最小间隙。

间隙(pathMetricsObj)
ans = 10

评估路径的平滑。值接近0表明平滑路径。直线路径返回一个值0

平滑(pathMetricsObj)
ans = 0.0011

可视化的路径的最小间隙。

显示(pathMetricsObj)轴平等的视图(75 [100])%开始状态scatter3(开始(1,1),开始(1、2),开始(1、3)“g”,“填充”)%的目标状态scatter3(目标(1,1)、目标(1、2)、目标(1、3)“r”,“填充”)%的路径plot3 (pthObj.States (: 1) pthObj.States (:, 2), pthObj.States (:, 3),“r -”线宽= 2)

版本历史

介绍了R2019b