主要内容

inflationCollisionChecker

基于充气的Costmap的碰撞检查配置

描述

inflationCollisionChecker函数创建一个InflationCollisionChecker具有车辆Costmap的碰撞检查配置的对象。具有这种配置的车辆肋师幅度膨胀了车辆环境中的障碍物的尺寸。这种通货膨胀基于指定的InflationCollisionChecker属性,例如车辆的尺寸和包围车辆所需的圆的半径。有关更多详细信息,请参阅算法。路径规划算法等pathplannerrrt.,使用这个costmap碰撞检查配置来避免膨胀的障碍物,并计划通过环境的无碰撞路径。

使用InflationCollisionChecker对象设置CollisionChecker你的财产vehicleCostmap对象。类的返回值受到此冲突检查配置的影响checkFreecheckOccupied所使用的函数vehicleCostmap。这些值表明车辆姿态是否为免费的或者占据

创建

描述

ccConfig = inflationCollisionChecker创建一个InflationCollisionChecker目的,ccConfig,它保存车辆成本图的碰撞检查配置。该对象使用一个圆包围车辆。车辆的尺寸对应于默认值驾驶员对象。

ccConfig = inflationCollisionChecker (vehicleDims)指定车辆的尺寸,其中vehicleDims是一个驾驶员对象。的vehicleDims输入设置驾驶员的属性ccConfig

例子

ccConfig = inflationCollisionChecker (vehicleDims,numCircles)还指定用于包围车辆的圆数。的numCircles输入设置numcircles.的属性ccConfig

例子

ccConfig = inflationCollisionChecker (___,名称,价值)设置CenterPlacements通货膨胀属性使用名称 - 值对和来自前述语法中的任何一个的输入。将每个属性名称括在引号中。

例子:充气机会(CentalPlacements',[0.2 0.5 0.8],'FinnationRadius',1.2)

属性

展开全部

用于包围车辆并计算膨胀半径的圆数,指定为一个正整数。典型值为1 ~ 5。

  • 为了更快但更保守的碰撞检查,减少圆圈的数量。这种方法提高了性能,因为路径规划算法较少碰撞检查。

  • 对于较慢但更精确的碰撞检查,增加圆圈数。当规划紧张的角落或狭窄的走廊时,这种方法是有用的,例如在停车场中。

沿着车辆的纵向轴线的圆形中心的标准化放置,指定为1-by-numcircles.在[0,1]范围内的实值向量。

  • 值0将圆形中心放在车辆后部。

  • 值1将圆形中心放在车辆前部。

指定CenterPlacements当你想要将圆与车辆上的确切位置对齐时。如果你离开CenterPlacements未指定的,对象计算中心展示位置,使圆圈完全封闭车辆。如果更改中心展示位置的数量,numcircles.是否更新到元素数量中CenterPlacements

车辆尺寸用于计算膨胀半径,指定为a驾驶员对象。默认情况下,InflationCollisionChecker对象使用默认的尺寸驾驶员对象。车辆尺寸以世界单位计算。

膨胀半径,用非负实数表示。默认情况下,对象根据膨胀半径的值计算膨胀半径numcircles.,CenterPlacements, 和驾驶员。有关更多详细信息,请参阅算法

对象的功能

情节 情节碰撞配置

例子

全部收缩

利用优化快速搜索随机树(RRT*)算法规划狭窄停车位的车辆路径。在RRT*路径规划器使用的costmap中尝试不同的冲突检查配置。

加载并显示停车场的肋骨。costmap是一个vehicleCostmap对象。默认,vehicleCostmap使用碰撞检查配置,根据车辆的一个圆半径来膨胀障碍物。成本图夸大了障碍(停车位边界)。

data =负载('停车艇门映射.mat');costmap = data.parkingLotCostmap;图绘制(costmap)标题(“用一个圆圈进行碰撞检查”)

图中包含一个轴。带有一个圆圈的标题碰撞检查的轴包含2个类型图像的对象。该对象代表膨胀区域。

inflationCollisionChecker为costmap创建一个新的碰撞检查配置。

  • 为了减少障碍物的膨胀,增加包围车辆的圈数。

  • 若要指定车辆的尺寸,请使用驾驶员对象。

中的冲突检查配置CollisionChecker成本图的财产。

vevicledims =车辆施用(4.5,1.7);% 4.5米长,1.7米宽numcircles = 3;ccconfig =充气机会(驾驶员,numcircles);costmap.colisionChecker = CcConfig;

使用新的碰撞检查配置显示CostMap。膨胀区域减少。

图绘制(costmap)标题(“用三个圆圈进行碰撞检查”)

图中包含一个轴。带有三个圆圈的标题碰撞检查的轴包含2个类型图像的对象,修补程序。该对象代表膨胀区域。

定义规划问题:车辆在停车场的左门口附近开始,并在停车位结束。

elepling = [11 10 0];%[米,米,度]守门= [31.5 17 90];

用一个pathplannerrrt.反对规划通往停车位的道路。绘制计划的路径。

规划师= pathPlannerRRT (costmap);refPath =计划(计划、startPose goalPose);持有绘图(Refpath)持有离开

图中包含一个轴。带有三个圆圈的标题碰撞检查的轴包含11个类型图像,贴片,散点,线,多边形。该对象代表膨胀区域。

为costmap创建一个碰撞检查配置。手动指定圆心,使其完全包围车辆。

使用a定义车辆的尺寸驾驶员对象。

长度= 5;%米宽度= 2;%米vevicledims =车辆施用(长度,宽度);

定义三个圆形中心和用于碰撞检查的充气半径。在车辆中点放置一个中心。在车辆的任一端将其他两个中心偏移其他两个中心。

distfromside = 0.175;中心缩短= [distfromside 0.5 1-distfromside];通货膨胀率= 1.2;

创建并显示碰撞检查配置。

ccConfig = inflationCollisionChecker (vehicleDims,'中心暂存'centerPlacements,“InflationRadius”,通胀radius);图绘图(Ccconfig)

图中包含一个轴。轴包含20个对象类型的线,多边形,散点,文本。这些对象代表圆,圆的中心。

在这种配置中,车辆的拐角不封闭在圆内。要完全封闭车辆,增加通胀半径。显示更新的配置。

ccconfig.inflationradius = 1.3;情节(Ccconfig)

图中包含一个轴。轴包含20个对象类型的线,多边形,散点,文本。这些对象代表圆,圆的中心。

使用此碰撞检查配置创建一个10×20级CostMap。

costmap = vehiclecostmap(10,20,0.1,“CollisionChecker”, ccConfig);

尖端

  • 为了直观地验证圆形完全包围了车辆,使用情节函数。如果圆圈没有完全包围车辆,一些自由姿态返回checkFree(或未被占用的姿势返回checkOccupied)可能会发生碰撞。

算法

通货膨胀的属性InflationCollisionChecker确定世界单位的金额,通过它来膨胀障碍。默认,通货膨胀等于完全封闭车辆所需的最小重叠圆的半径,如以下属性所确定的:

有关该碰撞检查配置如何定义CostMap中膨胀区域的更多详细信息,请参阅算法一部分vehicleCostmap

参考

[1] Ziegler,J.和C.Verter。“智能车辆运动规划的快速碰撞检查。”IEEE智能车辆研讨会。2010年6月21日至24日。

扩展功能

介绍了R2018b