checkFree

检查车辆costmap为无碰撞姿势或点

描述

checkFree功能检查是否车辆的姿势或点从车costmap障碍免费。路径规划算法使用checkFree检查沿着路径候选车辆姿势是否通航。

为了简化车辆姿态的碰撞检查,vehicleCostmap根据车辆的充气障碍物InflationRadius,由…指定CollisionChecker成本图的属性。碰撞检查器通过将车辆封闭在一组重叠的半径圆中来计算膨胀半径R这些圆的中心位于车辆的纵轴上。膨胀半径是最小的R需要在这些圈子完全包围了车辆。

车辆姿态是无碰撞时,适用于下列条件:

  • 车辆的圆心没有趴在一个充气网格单元。

  • 每个包含圆心的成本值小于FreeThresholdcostmap。

有关详细信息,请参见算法vehicleCostmap参考页。

例子

免费的= checkFree (costmap,vehiclePoses)检查是否车辆姿势是从上costmap障碍,无碰撞。

免费的= checkFree (costmap,xyPoints)检查是否(x,y)分xyPoints在成本地图上不与障碍物碰撞。

freeMat= checkFree (costmap)返回一个逻辑矩阵,该矩阵指示costmap的每个单元是否空闲。

例子

全部折叠

负荷停车场一个costmap。

data =负载('parkingLotCostmap.mat');parkMap = data.parkingLotCostmap;图(parkMap)

创建以下直线道车辆的姿势。xy是(x,y车辆的后轴的)坐标。θ是后轴相对于该角度x设在。请注意,车辆的尺寸存储在CollisionChecker.VehicleDimensions属性,并且在车辆的后轴与其中心之间存在偏移。

x = 4:0.25:6;y = 3:0.25:5;θ= repmat(45、大小(x));vehiclePoses = [x, y,θ');持有情节(x, y,“b”。)保持

前几项(x,y)后桥的坐标在充气区域内。然而,这并不意味着碰撞,因为车辆的中心可能在膨胀区域之外。检查姿势是否没有碰撞。

自由= checkFree (parkMap vehiclePoses)
自由=9 x1逻辑阵列1 1 1 1 1 1 1 1 1

的所有值免费的1 (真正),所以所有的姿势都无碰撞。车辆的中心并不在任何姿势进入膨胀区域。

输入参数

全部折叠

Costmap,指定为avehicleCostmap宾语。

车辆姿态,指定为的-×3矩阵x,y,Θ)向量。是姿势的数目。

xy在世界单位中指定车辆的位置,例如米。这个位置是车辆后轴的中心。

Θ指定度车辆的朝向的角度相对于所述x设在。Θ是正的,在顺时针方向。

例子:(3.4 - 2.6 0)指定车辆的后桥中心为(3.4,2.6),方向角为0度。

点,指定为的实值矩阵,表示(x,y)的坐标点。

例子:(3.4 - 2.6)在(3.4,2.6)处指定一个单点

例子:[3 2;3 3;4 7]指定三点:(3,2),(3,3),和(4,7)

输出参数

全部折叠

车辆姿态或点是免费的,返回一个1逻辑向量。一个元素的免费的1(真正)对应车辆摆位时vehiclePoses或点xyPoints无碰撞。

Costmap细胞是免费的,返回作为相同大小costmap网格的逻辑矩阵。该尺寸由指定MapSize财产costmap。一个元素的freeMat1(真正)对应的单元格costmap单元格的成本值是否低于FreeThresholdcostmap。

提示

  • 如果您指定的一个很小的值InflationRadius这并没有完全包围飞船checkFree可能会报告说已占据的姿势是无碰撞的。为了避免这种情况,默认值为InflationRadius完全封闭的车辆。

扩展功能

C / c++代码生成
生成使用MATLAB®编码器™C和C ++代码。

介绍了R2018a