inflationCollisionChecker

碰撞检查costmap配置基于通货膨胀

描述

inflationCollisionChecker函数创建一个InflationCollisionChecker对象,其保持车辆costmap的碰撞检查配置。车辆costmap这个配置膨胀的车辆环境中的障碍物的大小。此通货膨胀基于所指定的InflationCollisionChecker属性,如在车辆和圆的半径的尺寸需要以封闭车辆。有关详细信息,请参阅算法。路径规划算法,如pathPlannerRRT时,使用该costmap碰撞检查配置通过环境,以避免充气的障碍和计划无碰撞路径。

使用InflationCollisionChecker反对设置CollisionChecker财产你vehicleCostmap宾语。该碰撞检查配置影响的返回值CheckFree公司checkOccupied功能使用vehicleCostmap。这些值指示车辆姿态是否是自由要么占据

创建

描述

ccConfig = inflationCollisionChecker创建InflationCollisionChecker宾语,ccConfig中,保持车辆costmap的碰撞检查配置。该目的使用一个圆以封闭车辆。车辆对应的到默认的值的尺寸vehicleDimensions宾语。

ccConfig = inflationCollisionChecker(vehicleDims)指定车辆,其中的尺寸vehicleDimsvehicleDimensions宾语。该vehicleDims输入集VehicleDimensions财产ccConfig

ccConfig = inflationCollisionChecker(vehicleDimsnumCircles还指定用于包围车辆圆圈的数量。该numCircles输入集NumCircles财产ccConfig

ccConfig = inflationCollisionChecker(___名称,值设置CenterPlacementsInflationRadius使用名称 - 值对,并从任一前述语法的输入特性。在引号中每个属性的名称。

例:inflationCollisionChecker( 'CenterPlacements',[0.2 0.5 0.8], 'InflationRadius',1.2)

属性

展开全部

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

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

  • 对于速度较慢,但​​更精确的碰撞检查,增加圈数。规划围绕急转弯或通过狭窄的走廊,如在停车场的路径时,此方法非常有用。

沿车辆的纵向轴线圆心的归一化的位置,指定为1逐NumCircles范围内的实数值的矢量[0,1]。

  • 值0放置在后部车辆的圆心。

  • 如果值为1,放置在车辆的前部的圆心。

指定CenterPlacements当你想用在车辆上的精确位置对齐圈。如果你走CenterPlacements未指定,对象计算中心刊登位置,使得圆完全包围车辆。如果你改变中心的展示位置的数量,NumCircles被更新为元素的数量CenterPlacements

车辆的尺寸用于计算膨胀半径,指定为vehicleDimensions宾语。默认情况下,InflationCollisionChecker对象使用默认的尺寸vehicleDimensions宾语。整车外形尺寸是世界单位。

通货膨胀半径,指定为非实数。默认情况下,该对象计算基于所述值的膨胀半径NumCirclesCenterPlacementsVehicleDimensions。有关详细信息,请参阅算法

对象函数

情节 情节碰撞配置

例子

全部收缩

通过使用优化的迅速随机树(RRT *)算法规划车辆的路径,以窄的停车点。在由RRT *路径规划使用的costmap尝试不同的碰撞检查配置。

加载和显示停车场的costmap。该costmap是vehicleCostmap宾语。默认情况下,vehicleCostmap使用了仅基于一个包围车辆圆的半径膨胀障碍物的碰撞检查配置。该costmap overinflates障碍(停车位边界)。

数据=负载('parkingLotCostmap.mat');costmap = data.parkingLotCostmap;图图(costmap)称号(“碰撞一圈检查”

利用inflationCollisionChecker以创建costmap一个新的碰撞检查配置。

  • 为了减小的障碍通货膨胀,增加圆圈包围车辆的数目。

  • 要指定车辆的尺寸,使用vehicleDimensions宾语。

指定要在碰撞检查配置CollisionChecker在costmap的财产。

vehicleDims = vehicleDimensions(4.5,1.7);%4.5米长,1.7米宽numCircles = 3;ccConfig = inflationCollisionChecker(vehicleDims,numCircles);costmap.CollisionChecker = ccConfig;

显示与新碰撞检查配置costmap。膨胀区域被减少。

图图(costmap)称号(“碰撞与三环检查”

定义一个规划的问题:车辆启动停车场附近,并结束停车位的左侧入口。

startPose = [11 10 0];%[米,米,度]goalPose = [31.5 17 90];

用一个pathPlannerRRT反对计划停车点的路径。绘制规划路径。

规划人员= pathPlannerRRT(costmap);refPath =计划(规划师,startPose,goalPose);保持图(refPath)保持

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

通过使用定义的车辆的尺寸vehicleDimensions宾语。

长度= 5;%米宽度= 2;%米vehicleDims = vehicleDimensions(长度,宽度);

定义三个圆心和半径通货膨胀要用于碰撞检测。发生在车辆的中点一个中心。抵消在车辆的任一末端以相等量的另两个中心。

distFromSide = 0.175;centerPlacements = [distFromSide 0.5 1- distFromSide];inflationRadius = 1.2;

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

ccConfig = inflationCollisionChecker(vehicleDims,...'CenterPlacements',centerPlacements,'InflationRadius',inflationRadius);图图(ccConfig)

在这种配置中,在车辆的角部不是圆内包围。完全封闭车辆,增加了通货膨胀的半径。显示更新后的配置。

ccConfig.InflationRadius = 1.3;图(ccConfig)

使用此碰撞检查配置来创建一个10×20米costmap。

costmap = vehicleCostmap(10,20,0.1,'CollisionChecker',ccConfig);

提示

  • 为了直观地验证圆圈完全包围车辆,使用情节功能。如果圆圈不要完全封闭的车辆,一些免费的姿势被退回CheckFree公司(或未占用的姿势返回由checkOccupied)实际上可能是在碰撞。

算法

InflationRadius财产InflationCollisionChecker确定的量,在世界单位,通过该膨胀的障碍。默认情况下,InflationRadius等于最小组重叠需要完全包围车辆圆的半径,如由下面的性质来确定:

有关此碰撞检查配置在costmap如何界定膨胀区域的详细信息,请参阅算法vehicleCostmap

参考

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

扩展功能

介绍了在R2018b