vehicleCostmap
表示车辆周围规划空间的成本地图
描述
的vehicleCostmap
对象创建表示车辆周围规划搜索空间的成本图。成本地图包含环境信息,例如车辆无法穿越的障碍物或区域。方法中指定的膨胀半径对障碍物进行膨胀,以检查是否发生碰撞CollisionChecker
财产。路径规划算法使用成本图,例如pathPlannerRRT
,为车辆寻找无碰撞路径。
成本图以二维网格的形式存储,通常称为网格占用网格或入住率地图。成本图中的每个网格单元格都有一个范围为[0,1]的值,表示在该网格单元格中导航的成本。每个网格单元格的状态为免费的,被占领的,或未知的,由…决定FreeThreshold
和OccupiedThreshold
属性。
下图显示了包含示例成本和网格单元状态的成本图。
创建
语法
描述
成本映射=车辆成本映射(
使用矩阵中的成本值创建车辆成本图C
)C
。
成本映射=车辆成本映射(
从占用地图创建一个车辆成本图occMap
)occMap
。使用此语法需要Navigation Toolbox™。
成本映射=车辆成本映射(___“MapLocation”,
指定在mapLocation
)mapLocation
成本图的左下角坐标。指定MapLocation, MapLocation
在上述任何输入后,并在其中的任意顺序名称,值
对参数。
成本映射=车辆成本映射(___,
使用名称,值
)名称,值
参数来指定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
返回假
。
以下姿势被认为是碰撞,因为至少有一个中心点在膨胀区域上。
姿势为“碰撞,一个中心” | 三中心碰撞 |
---|---|
|
|