主要内容

plannerRRTStar

创建一个最佳RRT路径规划(RRT *)

自从R2019b

描述

plannerRRTStar对象创建一个渐进最优RRT规划师,RRT *。RRT *算法收敛于最优解的状态空间距离。同时,它的运行是一个常数因子的运行时RRT算法。RRT *用于解决几何规划问题。几何规划问题要求任何两个随机状态的状态空间可以连接。

创建

描述

规划师= plannerRRTStar (stateSpace,stateVal)创建一个RRT *计划从状态空间对象,stateSpace验证器对象状态,stateVal。的状态空间stateVal必须是一样的吗stateSpacestateSpacestateVal还设置了StateSpaceStateValidator的属性规划师对象。

例子

规划师= plannerRRTStar (___,名称=值)集属性使用一个或多个名称参数除了输入参数在前面的语法。您可以指定BallRadiusConstant,ContinueAfterGoalReached,MaxNumTreeNodes,MaxIterations,MaxConnectionDistance,GoalReachedFcn,GoalBias属性名称参数。

属性

全部展开

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

国家计划验证器,指定为一个状态验证器对象。您可以使用状态验证器对象等validatorOccupancyMap,validatorVehicleCostmap,validatorOccupancyMap3D

常数用来估计附近邻居搜索半径,指定为一个积极的标量。半径估计如下:

r = 最小值 ( γ ( 日志 ( n ) n ) 1 d , η )

地点:

  • γ——的价值BallRadiusConstant财产

  • n——目前在树上的节点数量

  • d——状态空间的维度

  • η——的价值MaxConnectionDistance财产

γ被定义为:

γ = 2 d ( 1 + 1 d ) ( V F r e e V B 一个 l l )

地点:

  • V免费的——在搜索空间近似自由体积

  • V——单位球的体积d

上面的公式定义BallRadiusConstant“适当”的大小对于一个给定的空间,也就是说,随着节点数量的增长和半径减少填充空间,预期数量的邻居对数生长。更高的值将导致更高的平均数量内的邻居d球每迭代,从而导致更多的重新连接的候选人。然而,这种建议值低于最低可能导致一个附近的邻居,未能产生渐近最优的结果。

例子:BallRadiusConstant = 80

数据类型:|

决定如果规划师继续优化目标达到后,指定为真正的。规划师也就终止,不管这个属性的值如果迭代的最大数量或最大数量的树节点。

例子:ContinueAfterGoalReached = true

数据类型:逻辑

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

例子:MaxNumTreeNodes = 2500

数据类型:|

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

例子:MaxIterations = 2500

数据类型:|

最大长度的运动允许在树上,指定为一个标量。

例子:MaxConnectionDistance = 0.3

数据类型:|

回调函数,以确定是否达到目标,指定为一个函数处理。您可以创建自己的目标函数。函数必须遵循这样的语法:

函数= myGoalReachedFcn,除非这个细胞(规划师,现状后,goalState)

地点:

  • 规划师——创建计划对象,指定为plannerRRTStar对象。

  • 现状后——当前状态,指定为三个元素的向量。

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

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

使用自定义GoalReachedFcn在代码生成工作流中,该属性必须设置为自定义函数在调用计划之前处理函数初始化后,它不能改变。

数据类型:函数处理

选择目标状态在状态的概率抽样,指定为一个真正的标量在区间[0,1]。属性定义了选择实际的目标状态的概率随机选择过程中状态的状态空间。你可以通过设置小的概率值等0.05

例子:GoalBias = 0.1

数据类型:|

对象的功能

计划 计划两个国家之间的路径
复制 创建副本规划师对象

例子

全部折叠

创建一个状态空间。

党卫军= stateSpaceSE2;

创建一个occupancyMap使用创建的状态空间的状态验证器。

sv = validatorOccupancyMap (ss);

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

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

设置验证验证器的距离。

sv。V一个lidationDistance = 0.01;

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

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

创建RRT路径规划和允许进一步优化后的目标是达到了。减少最大迭代和增加最大连接距离。

规划师= plannerRRTStar (ss、sv、ContinueAfterGoalReached = true,MaxIterations = 2500,MaxConnectionDistance = 0.3);

设定开始和目标状态。

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

计划路径和默认设置。

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

可视化结果。

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

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

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

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

充气(omap, 1)

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

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

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

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

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

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

指定开始和目标提出了。

开始= 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)

引用

Karaman [1], s和大肠Frazzoli。“Sampling-Based算法最优运动规划。”国际机器人研究杂志》上。30卷,7号,2011年,页846 - 894。

扩展功能

版本历史

介绍了R2019b