4. 矿区静态障碍物与可通行性分析
无人矿卡在矿区道路上行驶时,面对的并不是一张干净的地图,而是一张被挡墙、安全岛、边坡、堆料和固定设备反复切割的“破碎地形”。路径规划算法能否给出安全、平滑且高效的轨迹,很大程度上取决于我们如何把这些静态障碍物准确地“翻译”成地图上的几何与代价信息。本节围绕三个问题展开:静态障碍物如何建模、可通行区域与禁行区域如何划分、通行代价图层如何设计。
一、静态障碍物的分类与建模方式
矿区静态障碍物按几何形态大致可分为三类。第一类是面状障碍,如挡墙、边坡坡面、堆料场料堆,它们占据连续的大面积区域,通常用多边形或栅格占据表示。第二类是线状障碍,如道路边缘的护栏、电缆沟盖板边界、安全岛轮廓,适合用折线或窄带多边形描述。第三类是点状或块状障碍,如固定式电杆、水泵房、破碎站基座、加油机,用矩形或圆形包围盒即可。
建模时不能只画“看得见”的轮廓。以挡墙为例,墙体本身是实体,但车辆靠近时还需要保留侧向安全余量;边坡则要区分坡顶线与坡底线,坡面区域整体不可通行,坡顶外侧还需留出防滑坡安全距离。堆料场的料堆边界会随装卸作业变化,建模时应采用“当前实测轮廓 + 预留变化带”的方式,而不是一次建死。固定设备除了本体包围盒,还要考虑其检修通道和人员活动范围,这些区域在设备运行时同样应视为禁行。
二、膨胀处理:从几何边界到车辆可通行边界
障碍物轮廓只是几何边界,车辆是有尺寸的刚体,因此必须做膨胀处理。工程上常用的是闵可夫斯基和思想:将障碍物多边形与车辆外接轮廓(含安全余量)做膨胀,得到“配置空间障碍”。对无人矿卡而言,膨胀半径不是简单取车宽的一半,而应取:
膨胀半径 R = max(车宽/2, 车长/2 × sin(最大转向角)) + 定位误差 + 控制跟踪误差 + 安全余量
举例说明(示例参数,非实测):某 90 吨级矿卡车宽 5.2 m、车长 10.8 m,最大转向角对应横向摆幅约 1.1 m,定位误差取 0.3 m,跟踪误差取 0.4 m,安全余量取 0.5 m,则膨胀半径约为 2.6 + 1.1 + 0.3 + 0.4 + 0.5 ≈ 4.9 m。这意味着挡墙的实际禁行边界要比墙体轮廓外扩近 5 m。若膨胀不足,规划出的轨迹虽然几何上不碰墙,但车辆转弯时后轮扫掠或跟踪偏差仍可能造成剐蹭;若膨胀过大,则会把本可通行的窄路段直接“堵死”,因此膨胀半径需要结合具体车型和定位精度标定。
膨胀后的地图还要做连通性检查:把膨胀后的禁行区叠加到路网上,检查是否存在被误封的通道。常见做法是对可通行栅格做连通域标记,若某段道路被切成孤立小块,说明膨胀参数或障碍物轮廓有误,需要回查。
三、可通行区域与禁行区域的划分
膨胀完成后,地图上的每个栅格或每个多边形区域需要被赋予通行属性。工程上通常划分为三级:自由通行区(道路中心带,无障碍且满足全部安全余量)、受限通行区(靠近障碍物膨胀边界、窄路会车段、坡道口,允许通行但代价升高)、绝对禁行区(障碍物本体、膨胀核心区、边坡坡面、人员活动区)。划分时要注意“受限通行区”不是简单的过渡带,它往往对应会车让行、限速通过等具体规则,需要在代价图层中体现,而不是只做二值化处理。
一个实用的做法是:先由障碍物膨胀结果生成禁行掩膜,再用道路中心线与路宽生成可通行走廊,两者求差得到实际可通行区域;对走廊内宽度小于“车宽 + 2×安全余量”的路段标记为受限区,并记录其最小宽度和长度,供规划器判断是否需要单向通行或会车调度。
四、通行代价图层设计
可通行性分析最终要落到一张或多张代价图层上。建议至少设计三层:静态障碍代价层(离障碍物越近代价越高,可用距离场或膨胀梯度生成)、道路结构代价层(道路中心线附近代价低,靠近路肩代价升高,坡道、弯道附加惩罚)、作业语义代价层(装卸区、加油点、检修区等区域按作业规则赋予不同代价或禁行时段)。三层按权重叠加:
总代价 = w1 × 障碍距离代价 + w2 × 道路结构代价 + w3 × 作业语义代价
示例权重:w1=0.5, w2=0.3, w3=0.2(需按矿区实际标定)
代价图层应保持与栅格分辨率一致,并随堆料变化、设备检修计划定期更新。更新后要重新做连通性检查与最短路径抽样验证,确认没有因代价调整而出现“绕远路”或“穿禁区”的异常结果。只有把障碍建模、膨胀处理、区域划分和代价设计串成一条闭环,后续的路径搜索与避障决策才有可靠的地图基础。