Costmap代表车辆周围规划空间
该vehicleCostmap
对象创建表示车辆周围规划搜索空间costmap。该costmap保存有关环境的信息,比如障碍物或地区车辆无法穿越。要检查是否有冲突,利用通货膨胀半径costmap膨胀障碍指定CollisionChecker
属性。该costmap通过路径规划算法中使用,如pathPlannerRRT
,发现无碰撞车辆遵循的路径。
所述costmap被存储为单元的2-d的网格,通常称为入住电网要么入住地图。在costmap每个网格单元具有表示通过网格单元进行导航的成本范围[0,1]的值。每个网格单元的状态是自由,占据, 要么未知如通过所确定的FreeThreshold
和OccupiedThreshold
属性。
下图显示了与样品的成本和网格单元的状态的costmap。
costmap = vehicleCostmap(
创建使用矩阵的成本值的车辆costmapC
)C
。
costmap = vehicleCostmap(
创建来自占用地图的车辆costmapoccMap
)occMap
。这句法的使用需要导航工具箱™。
costmap = vehicleCostmap(___'MapLocation',
在指定mapLocation
)mapLocation
该costmap的左下角坐标。指定'MapLocation',mapLocation
后根据前述任一输入的,并在之间的任意顺序名称,值
对参数。
costmap = vehicleCostmap(___,
使用名称,值
)名称,值
自变量对指定FreeThreshold
,OccupiedThreshold
,CollisionChecker
和CELLSIZE
属性。例如,vehicleCostmap(C, 'CollisionChecker',ccConfig)
使用一个inflationCollisionChecker
宾语,ccConfig
,以表示车辆形状并检查碰撞。创建对象后,您可以更新所有这些属性除CELLSIZE
。
CheckFree公司 |
检查车辆costmap为无碰撞姿势或点 |
checkOccupied |
检查车辆costmap为占据姿势或点 |
getCosts |
获取车辆costmap细胞的成本价值 |
setCosts |
在车辆costmap单元集合的成本价值 |
情节 |
情节车辆costmap |
为了简化检查车辆姿态是否碰撞,vehicleCostmap
充气障碍物的大小。碰撞检测算法的步骤如下:
计算膨胀半径,在世界单位,从车辆的尺寸。默认通货膨胀半径等于最小组重叠需要完全包围车辆圆的半径。圆的中心点沿着所述车辆的纵向轴线所在。增加圈数减少的膨胀半径,这使得能够更精确的碰撞检测。
通货膨胀半径,一中心 | 通货膨胀半径,三个中心 |
---|---|
|
|
转换膨胀半径到多个网格单元,[R。圆了非整数值[R到下一个最大的整数。
充气障碍物使用尺寸[R。标签的所有细胞膨胀区域被占用。
该图显示占用的单元格中的暗红色。在膨胀区中的细胞淡红色着色。实心黑线示出了原始通货膨胀半径。在左侧的图中,[R是3。在右侧的图中,[R为2。
充气网格单元格,一中心 | 充气网格单元格,三中心 |
---|---|
|
|
检查是否车辆躺在充气网格单元的中心点。
如果任何中心点位于上膨胀网格单元,则车辆姿势是占据。该checkOccupied
函数返回真正
。一个被占领的姿势并不一定意味着冲突。例如,车辆可能会躺在充气网格单元而不是在实际被占用的网格单元。
如果没有中心点位于充气网格单元,以及含有中心点的每个电池的成本值小于FreeThreshold
,那么车辆姿态自由。该CheckFree公司
函数返回真正
。
如果没有中心点位于充气网格单元,以及含有中心点的任何电池的成本值大于FreeThreshold
,那么车辆姿态未知。都CheckFree公司
和checkOccupied
返回假
。
因为至少有一个中心点在膨胀的区域下面的姿势在碰撞考虑。
在构成碰撞,一中心 | 在构成碰撞,三中心 |
---|---|
|
|