主要内容

plannerRRT

创建一个RRT计划器用于几何规划

描述

plannerRRT对象创建一个快速探索随机树(RRT)规划器,以解决几何规划问题。RRT是一种基于树的运动规划器,它从给定的状态空间中随机抽取样本,逐步构建搜索树。树最终跨越了搜索空间,并将开始状态连接到目标状态。树木生长的一般过程如下:

  1. 计划器采样一个随机状态x兰德在状态空间中。

  2. 规划者找到一个状态x附近它已经在搜索树中,并且最接近(基于状态空间中的距离定义)x兰德

  3. 规划者从x附近x兰德,直到一个州x是达到了。

  4. 然后新的状态x添加到搜索树中。

对于几何RRT,两种状态之间的展开和连接可以在不违反规划对象状态空间中规定的约束条件下解析地找到。

创建

描述

例子

规划师= plannerRRT (stateSpace,stateVal)从状态空间对象创建RRT规划器,stateSpace,以及一个状态验证器对象,stateVal。的状态空间stateVal一定是一样的stateSpacestateSpacestateVal还设置了StateSpaceStateValidator的属性规划师

属性

全部展开

规划器的状态空间,指定为状态空间对象。可以使用状态空间对象,例如stateSpaceSE2,stateSpaceDubins,stateSpaceReedsShepp。属性还可以自定义状态空间对象导航。StateSpace对象。

规划器的状态验证器,指定为状态验证器对象。可以使用状态验证器对象,例如validatorOccupancyMapvalidatorVehicleCostmap

搜索树中的最大节点数(不包括根节点),指定为正整数。

数据类型:|

最大迭代次数,指定为一个正整数。

数据类型:|

树中允许运动的最大长度,以标量指定。

数据类型:|

回调函数来评估目标是否达到,指定为函数句柄。你可以创造你自己的目标达到的功能。函数必须遵循以下语法:

函数isReached = myGoalReachedFcn(planner,currentState,goalState)

地点:

  • 规划师—已创建的规划器对象,指定为plannerRRT对象。

  • 现状后-当前状态,指定为三元素实向量。

  • goalState-目标状态,指定为一个三元素实向量。

  • isReached—一个布尔变量,指示当前状态是否已达到目标状态,返回为真正的

数据类型:函数处理

在状态抽样过程中选择目标状态的概率,在[0,1]中用实标量表示。该性质定义了从状态空间中随机选择状态过程中选择实际目标状态的概率。您可以先将概率设置为一个较小的值,例如0.05

数据类型:|

对象的功能

计划 规划两个州之间的路径
复制 创建计划器对象的副本

例子

全部折叠

创建状态空间。

党卫军= stateSpaceSE2;

创建一个occupanyMap使用创建的状态空间的基于状态验证器。

sv = validatorOccupancyMap (ss);

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

负载exampleMaps地图= occupancyMap (simpleMap 10);sv。地图=地图;

设置验证器的验证距离。

sv。ValidationDistance = 0.01;

将状态空间边界更新为与映射限制相同的状态空间边界。

ss.StateBounds = [map.XWorldLimits; map.YWorldLimits;[-ππ]];

创建路径规划器并增加最大连接距离。

规划师= plannerRRT (ss、sv);计划。MaxConnectionDistance = 0.3;

设定开始和目标状态。

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

使用默认设置规划路径。

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

可视化结果。

显示(map)情节(solnInfo.TreeData (: 1) solnInfo.TreeData (:, 2),“。”);%树扩张情节(pthObj.States (: 1) pthObj.States (:, 2),的r -,“线宽”, 2)%画出路径

图中包含一个轴。标题为“占用网格”的坐标轴包含图像类、线类三个对象。

参考文献

[1] S.M. Lavalle和J.J. Kuffner。“随机Kinodynamic计划。”国际机器人研究杂志。Vol. 20, Number 5, 2001, pp. 378 - 400。

扩展功能

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

介绍了R2019b