主要内容

plannerRRTStar

创建一个最优的RRT路径规划器(RRT*)

描述

plannerRRTStar对象创建一个渐近最优RRT计划器RRT*。RRT*算法根据状态空间距离收敛到最优解。而且,它的运行时间是RRT算法运行时间的一个常数因子。RRT*用于求解几何规划问题。几何规划问题要求从状态空间中画出的任意两个随机状态可以相互连接。

创建

描述

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

例子

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

属性

全部展开

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

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

常数用于估计近邻搜索半径,指定为一个正标量。球半径越大,搜索半径减小的速度越慢,树中节点的数量越多。

例子:BallRadiusConstant = 80

数据类型:|

决定计划器是否在目标达到后继续优化,指定为真正的.如果达到了最大迭代次数或树节点的最大数量,规划器也会终止,而不管该属性的值是多少。

例子:ContinueAfterGoalReached = true

数据类型:逻辑

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

例子:MaxNumTreeNodes = 2500

数据类型:|

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

例子:MaxIterations = 2500

数据类型:|

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

例子:MaxConnectionDistance = 0.3

数据类型:|

回调函数确定目标是否达到,指定为函数句柄。你可以创建自己的目标实现函数。函数必须遵循以下语法:

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

地点:

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

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

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

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

使用自定义GoalReachedFcn在代码生成工作流中,该属性必须在调用plan函数之前设置为自定义函数句柄,并且在初始化后不能更改。

数据类型:函数处理

在状态采样期间选择目标状态的概率,指定为范围[0,1]内的实标量。属性定义了在从状态空间中随机选择状态的过程中选择实际目标状态的概率。您可以先将概率设置为一个小值,例如0.05

例子:GoalBias = 0.1

数据类型:|

对象的功能

计划 规划两种状态之间的路径
复制 创建计划器对象的副本

例子

全部折叠

创建状态空间。

ss = stateSpaceSE2;

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

sv = validatoroccuancymap (ss);

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

负载exampleMaps.matmap = occuancymap (simpleMap,10);sv。地图=地图;

为验证器设置验证距离。

sv。ValidationDistance = 0.01;

更新状态空间边界使其与映射限制相同。

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

创建RRT*路径规划器,并允许在目标达到后进一步优化。减少最大迭代次数并增加最大连接距离。

n .计划者,计划者...ContinueAfterGoalReached = true,...MaxIterations = 2500,...MaxConnectionDistance = 0.3);

设置开始和目标状态。

Start = [0.5 0.5 0];目标= [2.5 0.2 0];

使用默认设置规划路径。

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

想象结果。

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

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

mapData = load(“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 = validatoroccuancymap3d (ss,...Map = omap,...ValidationDistance = 0.1);

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

n .计划者,计划者...MaxConnectionDistance = 50,...MaxIterations = 1000,...GoalReachedFcn = @(~,s,g)(norm(s(1:3)-g(1:3))<1),...GoalBias = 0.1);

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

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

将规划的路径形象化。

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

参考文献

卡拉曼,S.和E.弗拉佐利。基于采样的最优运动规划算法。国际机器人研究杂志。2011年第7期,第30卷,第846 - 894页。

扩展功能

版本历史

在R2019b中引入

Baidu
map