vehicleCostmap

Costmap代表车辆周围规划空间

描述

vehicleCostmap对象创建表示车辆周围规划搜索空间costmap。该costmap保存有关环境的信息,比如障碍物或地区车辆无法穿越。要检查是否有冲突,利用通货膨胀半径costmap膨胀障碍指定CollisionChecker属性。该costmap通过路径规划算法中使用,如pathPlannerRRT,发现无碰撞车辆遵循的路径。

所述costmap被存储为单元的2-d的网格,通常称为入住电网要么入住地图。在costmap每个网格单元具有表示通过网格单元进行导航的成本范围[0,1]的值。每个网格单元的状态是自由占据, 要么未知如通过所确定的FreeThresholdOccupiedThreshold属性。

下图显示了与样品的成本和网格单元的状态的costmap。

创建

描述

costmap = vehicleCostmap(C创建使用矩阵的成本值的车辆costmapC

costmap = vehicleCostmap(mapWidthmapLength创建表示宽度的区域的车辆costmapmapWidth和长度mapLength世界单位。默认情况下,每个网格单元处于未知状态。

costmap = vehicleCostmap(mapWidthmapLengthcostVal还指定一个默认的成本,costVal到网格中的每个单元格。

costmap = vehicleCostmap(occMap创建来自占用地图的车辆costmapoccMap。这句法的使用需要导航工具箱™。

costmap = vehicleCostmap(___'MapLocation',mapLocation在指定mapLocation该costmap的左下角坐标。指定'MapLocation',mapLocation后根据前述任一输入的,并在之间的任意顺序名称,值对参数。

costmap = vehicleCostmap(___名称,值使用名称,值自变量对指定FreeThresholdOccupiedThresholdCollisionCheckerCELLSIZE属性。例如,vehicleCostmap(C, 'CollisionChecker',ccConfig)使用一个inflationCollisionChecker宾语,ccConfig,以表示车辆形状并检查碰撞。创建对象后,您可以更新所有这些属性除CELLSIZE

输入参数

展开全部

成本值,指定为在[0,1]的范围内的实数值的矩阵。

创建一个时vehicleCostmap对象,如果不指定C或均匀的成本值,costVal,然后每个网格单元的默认成本值是FreeThreshold+OccupiedThreshold)/ 2

数据类型:|

宽度costmap的,在世界上单位,指定为正实标。

costmap的长度,以世界单位,指定为正实标。

在costmap施加到所有的细胞均匀成本值,指定为在[0,1]的范围内的实数标量。

创建一个时vehicleCostmap对象,如果不指定costVal或成本值矩阵,C,然后每个网格单元的默认成本值是FreeThreshold+OccupiedThreshold)/ 2

占用地图,指定为occupancyMap要么binaryOccupancyMap宾语。这种说法的使用需要导航工具箱。

Costmap位置,指定为以下形式的两个元素的实值向量[MapX控件mapY]。这个载体指定costmap的左下角的坐标位置。

例:'MapLocation',[8 8]

属性

展开全部

阈值,低于该网格单元是自由的,指定为[0,1]的范围内的实数标量。

成本网格单元C可以有以下状态之一:

  • 如果C<FreeThreshold,网格单元状态是自由

  • 如果CFreeThresholdCOccupiedThreshold,网格单元状态是未知

  • 如果C>OccupiedThreshold,网格单元状态是占据

阈值,高于该网格单元被占用时,指定为[0,1]的范围内的实数标量。

成本网格单元C可以有以下状态之一:

  • 如果C<FreeThreshold,网格单元状态是自由

  • 如果CFreeThresholdCOccupiedThreshold,网格单元状态是未知

  • 如果C>OccupiedThreshold,网格单元状态是占据

碰撞检查结构中,指定为InflationCollisionChecker宾语。要创建这个对象,请使用inflationCollisionChecker功能。使用的属性InflationCollisionChecker对象,您可以配置:

  • 所使用的膨胀半径膨胀障碍在costmap

  • 圈的数量用于包围车辆计算膨胀半径时

  • 每个圆的沿所述车辆的纵向轴线放置

  • 车辆的尺寸

默认情况下,CollisionChecker使用默认InflationCollisionChecker对象,这是使用语法创建inflationCollisionChecker()。该碰撞检查配置包围车辆一圈。

此属性是只读的。

车辆周围costmap的程度,指定为以下形式的四元,非负整数向量[XMINXMAXYMINYMAX]。

  • XMINXMAX描述世界坐标图的长度。

  • YMINYMAX描述世界坐标图的宽度。

每个正方形单元的边长,在世界单位,指定为正实数标量。例如,边长1意味着一个网格,其中每个单元是大小为1×1米的正方形。较小的值提高搜索空间的内存消耗增加成本的解决方案。

您可以指定CELLSIZE当您创建vehicleCostmap宾语。但是,在创建对象之后,CELLSIZE变为只读。

此属性是只读的。

costmap网格的大小,指定为以下形式的双元件,正整数向量[NROWSNCOLS]。

  • NROWS在costmap网格单元的行数。

  • NCOLS在costmap网格单元的列数。

对象函数

CheckFree公司 检查车辆costmap为无碰撞姿势或点
checkOccupied 检查车辆costmap为占据姿势或点
getCosts 获取车辆costmap细胞的成本价值
setCosts 在车辆costmap单元集合的成本价值
情节 情节车辆costmap

例子

全部收缩

创建一个10×20米costmap被划分成的尺寸0.5逐0.5米见方的细胞。指定的0.5所有单元缺省开销。

mapWidth = 10;mapLength = 20;costVal = 0.5;CELLSIZE = 0.5;costmap = vehicleCostmap(mapWidth,mapLength,costVal,'CELLSIZE',CELLSIZE)
costmap = vehicleCostmap与属性:FreeThreshold:0.2000 OccupiedThreshold:0.6500 CollisionChecker:[1x1的driving.costmap.InflationCollisionChecker] CELLSIZE:0.5000 MapSize:[40 20] MapExtent:0 10 0 20]

马克在costmap的障碍。显示costmap。

occupiedVal = 0.9;的Xypoint = [2,4];setCosts(costmap,的Xypoint,occupiedVal)图(costmap)

马克在costmap的无障碍区。再次显示costmap。

freeVal = 0.15;[X,Y] = meshgrid(3.5:CELLSIZE:5,0.5:CELLSIZE:1.5);setCosts(costmap,[X(:),Y(:)],freeVal)情节(costmap)

算法

为了简化检查车辆姿态是否碰撞,vehicleCostmap充气障碍物的大小。碰撞检测算法的步骤如下:

  1. 计算膨胀半径,在世界单位,从车辆的尺寸。默认通货膨胀半径等于最小组重叠需要完全包围车辆圆的半径。圆的中心点沿着所述车辆的纵向轴线所在。增加圈数减少的膨胀半径,这使得能够更精确的碰撞检测。

    通货膨胀半径,一中心 通货膨胀半径,三个中心

  2. 转换膨胀半径到多个网格单元,[R。圆了非整数值[R到下一个最大的整数。

  3. 充气障碍物使用尺寸[R。标签的所有细胞膨胀区域被占用。

    该图显示占用的单元格中的暗红色。在膨胀区中的细胞淡红色着色。实心黑线示出了原始通货膨胀半径。在左侧的图中,[R是3。在右侧的图中,[R为2。

    充气网格单元格,一中心 充气网格单元格,三中心

  4. 检查是否车辆躺在充气网格单元的中心点。

    • 如果任何中心点位于上膨胀网格单元,则车辆姿势是占据。该checkOccupied函数返回真正。一个被占领的姿势并不一定意味着冲突。例如,车辆可能会躺在充气网格单元而不是在实际被占用的网格单元。

    • 如果没有中心点位于充气网格单元,以及含有中心点的每个电池的成本值小于FreeThreshold,那么车辆姿态自由。该CheckFree公司函数返回真正

    • 如果没有中心点位于充气网格单元,以及含有中心点的任何电池的成本值大于FreeThreshold,那么车辆姿态未知。都CheckFree公司checkOccupied返回

因为至少有一个中心点在膨胀的区域下面的姿势在碰撞考虑。

在构成碰撞,一中心 在构成碰撞,三中心

兼容性注意事项

展开全部

警告在R2019b开始

扩展功能

介绍了在R2018a