vehicleCostmap
表示车辆周围规划空间的成本图
描述
的vehicleCostmap
对象创建开销图,该开销图表示车辆周围的规划搜索空间。成本图包含环境信息,比如障碍物或车辆无法穿越的区域。方法中指定的膨胀半径对障碍物进行膨胀,以检查碰撞CollisionChecker
财产。路径规划算法使用开销图,例如pathPlannerRRT
,为车辆寻找无碰撞路径。
成本图存储为单元格的2-D网格,通常称为占用网格或入住率地图.成本图中的每个网格单元格都有一个范围为[0,1]的值,表示在该网格单元格中导航的成本。每个网格单元格的状态为免费的,被占领的,或未知的,由FreeThreshold
而且OccupiedThreshold
属性。
下图显示了包含样本成本和网格单元状态的成本图。
创建
语法
描述
costmap =车辆ostmap(
使用矩阵中的成本值创建车辆成本图C
)C
.
costmap =车辆ostmap(
从占用地图创建一个车辆成本图occMap
)occMap
.使用此语法需要导航工具箱™。
costmap =车辆ostmap(___“MapLocation”,
指定在mapLocation
)mapLocation
成本图的左下角坐标。指定MapLocation, MapLocation
在上述任何输入后,并在其中的任意顺序名称,值
对参数。
costmap =车辆ostmap(___,
使用名称,值
)名称,值
参数来指定FreeThreshold
,OccupiedThreshold
,CollisionChecker
,CellSize
属性。例如,vehicleCostmap (C ' CollisionChecker ccConfig)
使用一个inflationCollisionChecker
对象,ccConfig
,以表示车辆形状并检查碰撞情况。创建对象后,可以更新除CellSize
.
输入参数
属性
对象的功能
checkFree |
检查车辆成本图中无碰撞的姿势或点 |
checkOccupied |
查看车辆消耗图,查看被占用的姿势或点 |
getCosts |
在车辆成本图中获取电池的成本值 |
setcost |
在车辆成本图中设置电池的成本值 |
情节 |
绘制车辆成本图 |
例子
算法
为了简化车辆姿态是否发生碰撞的检查,vehicleCostmap
膨胀障碍的大小。碰撞检查算法遵循以下步骤:
计算膨胀半径,以世界单位为单位,从车辆尺寸。默认的膨胀半径等于完全包围车辆所需的最小重叠圆圈集合的半径。圆的中心点位于车辆的纵轴上。增加圆圈的数量会降低膨胀半径,从而实现更精确的碰撞检查。
膨胀半径,一个中心 膨胀半径,三个中心 将膨胀半径转换为多个网格单元格,R.的非整数值取整R到下一个最大的整数。
使用膨胀障碍的大小R.将充气区域内的所有单元标记为已占用。
图表以暗红色显示已占用的细胞。充气区域的细胞被涂成浅红色。黑色实线表示原始的膨胀半径。在左边的图表中,R是3。在右边的图表中,R是2。
膨胀网格单元,一个中心 膨胀网格单元,三个中心 检查车辆中心点是否位于充气网格上。
如果任何中心点位于膨胀网格单元上,则车辆姿态为被占领的.的
checkOccupied
函数返回真正的
.一个占据的姿势并不一定意味着碰撞。例如,车辆可能位于膨胀的网格单元上,而不是实际占用的网格单元上。如果在膨胀的网格单元上没有中心点,并且每个包含中心点的单元的成本值小于
FreeThreshold
,则飞行器姿态为免费的.的checkFree
函数返回真正的
.如果没有中心点位于膨胀的网格单元上,并且任何包含中心点的单元的成本值大于
FreeThreshold
,则飞行器姿态为未知的.这两个checkFree
而且checkOccupied
返回假
.
以下姿势被认为是碰撞,因为至少有一个中心点在充气区域上。
姿势为“碰撞,一个中心” | 三中心碰撞 |
---|---|
|
|