主要内容

plannerPRM

创建路径概率路线图计划

自从R2022a

    描述

    概率路线图规划构造了一个路线图,没有开始和目标状态。使用计划函数之间找到一个无障碍路径指定的启动和目标状态。如果计划功能没有找到启动和目标之间的连接路径,它返回一个空的路径。

    创建

    描述

    例子

    规划师= plannerPRM (stateSpace,stateVal)从一个状态空间对象,创建一个人口、难民和移民事务局规划师stateSpace验证器对象状态,stateVal。的状态空间stateVal必须是一样的吗stateSpacestateSpacestateVal还设置了StateSpaceStateValidator规划师的属性,分别。

    规划师= plannerPRM (___,名称=值)集属性使用一个或多个名称-值对参数除了输入参数在前面的语法。您可以指定MaxNumNodesMaxConnectionDistance属性名称-值对。

    属性

    全部展开

    状态空间规划师,指定为一个状态空间对象。您可以使用状态空间对象等stateSpaceSE2,stateSpaceDubins,stateSpaceReedsShepp。您还可以定制一个状态空间对象使用nav.StateSpace对象。

    国家计划验证器,指定为一个状态验证器对象。您可以使用状态验证器对象等validatorOccupancyMapvalidatorVehicleCostmap。您还可以使用定制验证器状态对象nav.StateValidator对象。

    最大数量的节点图,指定为一个积极的标量。通过增加这个值,找到一个路径的机会增加,同时也增加了计算时间的路径规划。

    最大的两个连接节点之间的距离,在米指定为一个积极的标量。节点的距离大于这个值不会被连接图中。

    对象的功能

    复制 创建深plannerPRM对象的副本
    graphData 检索图是有向图对象
    计划 计划开始和目标状态之间的路径的路线图

    例子

    全部折叠

    从一个例子创建一个占用地图地图和地图的分辨率设置为10细胞/米。

    地图=负载(“exampleMaps.mat”).simpleMap;= occupancyMap地图(地图,10);

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

    党卫军= stateSpaceSE2;ss.StateBounds = [map.XWorldLimits;map.YWorldLimits;[-ππ]];

    创建一个验证器的状态stateSpaceSE2使用地图和集验证距离。

    sv = validatorOccupancyMap(党卫军,地图=地图);sv。ValidationDistance = 0.01;

    创建一个plannerPRM对象。

    规划师= plannerPRM (ss、sv);

    作为一个有向图对象检索图。

    图= graphData(计划);

    从图中提取节点和边。

    边缘= table2array (graph.Edges);节点= table2array (graph.Nodes);

    指定开始和目标状态。

    开始= (0.5 - 0.5 0);目标= (2.5 - 0.2 0);

    绘制地图和图表。

    显示(sv.Map)情节(节点(:1),节点(:,2),“*”,“颜色”,“b”,“线宽”,2)i = 1:尺寸(边缘,1)%样本国家在距离0.02米。州=插入(党卫军,节点(边(我,1),:),节点(边(我,2),:),0:0.02:1);情节(状态(:1),状态(:,2),“颜色”,“b”)结束情节(开始(1),(2)开始,“*”,“颜色”,“g”,“线宽”3)图(目标(1),目标(2),“*”,“颜色”,“r”,“线宽”3)

    计划路径和默认设置。设置rng种子可重复性。

    rng (100“旋风”);[pthObj, solnInfo] =计划(计划,开始,目标);

    可视化结果。

    如果solnInfo。IsPathFound插入(pthObj, 1000);情节(pthObj.States (: 1) pthObj.States (:, 2),“颜色”(0.85 0.325 0.098),“线宽”,2)其他的disp (“路径找不到”)结束持有

    图包含一个坐标轴对象。坐标轴对象与标题占用网格,包含X [m], ylabel Y(米)包含103个图像类型的对象,线。

    一块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);

    创建一个与增加最大概率路线图规划连接距离。

    规划师= plannerPRM (ss、sv);

    指定开始和目标提出了。

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

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

    rng (1,“旋风”);

    计划的路径。

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

    可视化规划路径。

    显示(omap)轴平等的视图(55 [-10])%开始状态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)

    引用

    [1]L.E. Kavraki, p . Svestka J.C. Latombe, M.H. Overmars,“概率在高维空间,配置路径规划的蓝图”IEEE机器人和自动化4号,卷。12日,页。566 - 580年,1996年8月。

    扩展功能

    C / c++代码生成
    生成C和c++代码使用MATLAB®编码器™。

    版本历史

    介绍了R2022a

    另请参阅

    功能