主要内容

plannerPRM

创建概率路线图路径规划器

    描述

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

    创建

    描述

    例子

    规划师= plannerPRM (stateSpacestateVal从状态空间对象创建一个PRM计划器,stateSpace和一个状态验证器对象,stateVal.的状态空间stateVal一定和stateSpacestateSpace而且stateVal还设置了StateSpace而且StateValidator属性。

    规划师= plannerPRM (___名称=值除前面语法中的输入参数外,还使用一个或多个名值对参数设置属性。您可以指定MaxNumNodesMaxConnectionDistance属性作为名称-值对。

    属性

    全部展开

    计划器的状态空间,指定为状态空间对象。您可以使用状态空间对象,例如stateSpaceSE2stateSpaceDubins,stateSpaceReedsShepp.方法还可以自定义状态空间对象导航。StateSpace对象。

    计划器的状态验证器,指定为状态验证器对象。您可以使用状态验证器对象,例如validatorOccupancyMap而且validatorVehicleCostmap.方法还可以自定义状态验证器对象导航。StateValidator对象。

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

    两个相连节点之间的最大距离,以米为单位的正标量指定。距离大于这个值的节点将不会在图中被连接。

    对象的功能

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

    例子

    全部折叠

    从示例地图创建一个占用地图,并将地图分辨率设置为10 cell /米。

    地图=负载(“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);

    指定开始和目标状态。

    Start = [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] = plan(计划,开始,目标);

    可视化结果。

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

    图中包含一个axes对象。标题为占用网格的轴对象包含103个类型为图像、直线的对象。

    在工作区中加载一个城市街区的3-D占用地图。指定将单元格视为无障碍的阈值。

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

    膨胀占用地图,以增加一个缓冲区的安全操作周围的障碍。

    充气(omap, 1)

    创建具有状态变量边界的SE(3)状态空间对象。

    ss = stateSpaceSE3([0 220;0 220;0 100;inf inf;inf inf;

    使用创建的状态空间创建一个3d占用地图状态验证器。将占用映射分配给状态验证器对象。指定采样距离间隔。

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

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

    规划师= plannerPRM (ss、sv);

    指定起始姿势和目标姿势。

    Start = [40 180 25 0.7 0.2 0 0.1];目标= [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机器人与自动化汇刊1996年8月,第12卷第4期,第566-580页。

    扩展功能

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

    版本历史

    介绍了R2022a

    另请参阅

    功能

    Baidu
    map