主要内容

ispathvalid

确定是否有计划路径是无障碍物

描述

例子

ispathvalid(pathmetricsobj.返回逻辑1(真实)如果计划的路径是免费的或逻辑的0(假)如果路径无效。

例子

全部收缩

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

加载并将映射分配给状态验证器

从示例映射创建占用映射并设置地图分辨率。

加载examplemapsmat.;%simplemap.mapresolution = 1;%细胞/仪表地图= itemancymap(SimpleMap,MapResolution);

创建杜宾斯状态空间。

SENARYPACE =标准尼磺税素;

基于占用映射创建状态验证器,以存储Dubins状态空间中的参数和状态。

StateValidator = ValidatoroccupAccemap(标准空间);

将映射分配给验证器。

StateValidator.map = map;

设置验证器的验证距离。

StateValidator.ValidationDistance = 0.01;

更新状态空间绑定与地图限制相同。

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

计划路径

创建RRT * Path Planner并允许进一步优化。

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

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

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

为路径规范器定义开始和目标状态[x,y,theta]vectors。Xy是笛卡尔坐标,还有笛卡尔舞θ.是定向角度。

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

从起始状态计划到目标状态的路径。计划函数返回一个纳瓦路目的。

RNG(100,'twister'%可重复的结果[PATH,SOLUTIONINFO] =计划(计划者,开始,目标);

计算和可视化路径指标

创建路径指标对象。

pathmetricsobj = pathmetrics(path,statevalidator);

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

ispathvalid(pathmetricsobj)
ans =.逻辑1

计算路径的最小间隙。

清关(Pathmetricsobj)
ans = 1.4142

评估路径的平滑度。靠近的值0.表示一个更平滑的路径。直线路径返回一个值0.

平滑度(pathmetricsobj)
ANS = 1.7318.

可视化路径的最小间隙。

show(pathmetricsobj)图例('计划道路''最小清关'

图包含轴。轴包含5个类型图像的对象,贴片,线。这些对象代表计划路径,最小间隙。

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

加载并将映射分配给状态验证器

装载停车场的肋骨。绘制Costmap以查看停车场和车辆应该避免的膨胀区域。

加载停车镇序司机映射.MAT;costmap =停车艇门;绘图(Costmap)Xlabel('x(米)')ylabel('Y(米)'

图包含轴。轴包含2个类型的图像,贴片。该对象代表膨胀区域。

创建一个标准尼替代金斯对象并增加最小的图灵半径4.米。

SENARYPACE =标准尼磺税素;标量值..MinturningRadius = 4;%仪表

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

StateValidator = ValidatorVehiclecostMap(SerialPace);

将停车场CostMap分配给状态验证器对象。

statevalidator.map = costmap;

计划路径

定义车辆的开始和目标姿势[Xyθ.] vectors。世界单位(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));

创建一个纳瓦路对象使用Dubins状态空间对象和指定的状态姿势

路径= NavPath(SyentsPace,Pose);

计算和可视化路径指标

创建一个途径目的。

pathmetricsobj = pathmetrics(path,statevalidator);

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

ispathvalid(pathmetricsobj)
ans =.逻辑1

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

清关(Pathmetricsobj)
ans = 0.5000.
show(pathmetricsobj)图例('膨胀区域''计划道路''最小清关')xlabel('x(米)')ylabel('Y(米)'

图包含轴。轴包含6个类型图像,贴片,线条对象。这些物体代表膨胀区域,计划路径,最小间隙。

计算和可视化平滑路径。靠近的值0.表示一个更平滑的路径。直线路径返回一个值0.

平滑度(pathmetricsobj)
ans = 0.0842.
show(pathmetricsobj,'度量标准',{'平滑'}) 传奇('膨胀区域''路径平滑')xlabel('x(米)')ylabel('Y(米)'

图包含轴。轴包含3型图像,贴片。这些物体代表膨胀区域,路径平滑度。

可视化每种状态的间隙。

show(pathmetricsobj,'度量标准',{'不确定'}) 传奇('膨胀区域''计划道路''公路声明')xlabel('x(米)')ylabel('Y(米)'

图包含轴。轴包含29个类型图像,贴片,线。这些物体代表膨胀区域,计划路径,路径态的清除。

输入参数

全部收缩

路径指标的信息,指定为a途径目的。

也可以看看

对象

职能

在R2019B中介绍