3. 环境感知与障碍物表示
局部规划器要回答“往哪走、能不能过”,前提是它拿到一份可计算的环境描述。传感器给出的是原始观测,规划器需要的是障碍物位置、形状、速度与不确定性。本节围绕这条“传感器→点云/栅格→代价地图→膨胀→动态跟踪与预测”的转换链展开,重点说明每类传感器的适用边界、栅格与代价地图的构建方式,以及动态障碍物如何以接口形式交给规划器。
一、四类传感器的分工与互补
激光雷达(LiDAR)通过飞行时间测距,输出三维点云,水平视场常见 360°(机械式)或 90°~120°(固态/半固态),测距精度可达厘米级,适合构建高精度栅格与几何轮廓。缺点是雨雾、扬尘、玻璃与镜面会造成丢点或虚假回波,且点云数据量大。毫米波雷达利用多普勒效应,能直接测出径向速度,穿透雨雾能力强,探测距离可达 150~250 m,但角分辨率低、点云稀疏,易产生多径虚假目标,适合中远距离与高速场景的速度估计。视觉相机成本低、纹理信息丰富,可做语义识别(区分行人、车辆、锥桶),但受光照、逆光、雨雪影响大,单目测距精度差,需依赖标定与深度估计。超声波传感器量程通常 0.2~5 m,成本极低,对近距离补盲(如低速泊车、贴边行驶)有效,但波束角大、易受温度与风速影响,刷新率低。
工程上很少只用一种传感器。典型配置是:激光雷达负责近中距几何建图,毫米波雷达负责远距速度与恶劣天气冗余,视觉负责语义与分类,超声波负责最后 1~2 m 的贴边保护。融合时需先做时间同步(如统一到同一时间戳,误差控制在 10 ms 内)和外参标定(雷达到车体、相机到雷达的旋转平移矩阵),否则同一障碍物会在不同传感器中落在不同位置。
二、点云到栅格地图
点云是离散的三维点集合,直接用于碰撞检测计算量大。常见做法是投影到二维栅格:以车体为中心建立局部栅格,分辨率取 0.05~0.2 m。对每个点,根据其高度过滤地面点(如高度低于 0.2 m 视为地面),再将其投影到对应栅格并标记为占据。未被任何点命中但被射线穿过的栅格标记为空闲,其余为未知。这样得到三态栅格:占据、空闲、未知。
栅格概率更新常用贝叶斯或对数几率(log-odds)形式。设某栅格被占据的先验概率为 p,观测到占据时用对数几率累加:
L(t) = L(t-1) + log(p_occ / (1 - p_occ)) - log(p_free / (1 - p_free))
p(t) = 1 / (1 + exp(-L(t)))
例如取 p_occ = 0.7、p_free = 0.4,则一次占据观测约增加 0.85 的对数几率。连续多次观测后,概率会稳定收敛,从而抑制单帧噪声。栅格地图的代价是内存随范围平方增长,因此局部规划通常只维护车体周围 20~50 m 的滚动窗口。
三、代价地图与障碍物膨胀
栅格只回答“是否占据”,代价地图则回答“通过这里要付出多少代价”。它在占据栅格基础上叠加多层:静态层(建图得到的固定障碍)、障碍层(当前传感器检测到的障碍)、膨胀层(按机器人半径外扩)、代价层(离障碍越近代价越高)。规划器在代价地图上搜索时,会自然远离高代价区域。
膨胀是保证安全的关键。设机器人外接圆半径为 R,膨胀半径通常取 R 加安全余量 δ(如 0.1~0.3 m)。膨胀后,障碍物边缘向外扩展 R+δ,规划器只需把机器人当作质点处理,就能避免擦碰。膨胀代价常按距离衰减:紧贴障碍处代价最高(如 253),向外逐格递减到 0。这样即使路径必须靠近障碍,也会选择代价较低的一侧。
需要注意:膨胀半径过大会把窄通道“堵死”,导致无解;过小则安全余量不足。实际调参时,可先按机器人实际轮廓确定 R,再根据定位误差和控制误差确定 δ。若定位误差约 0.1 m、控制跟踪误差约 0.1 m,δ 取 0.2 m 较为稳妥。
四、动态障碍物跟踪与预测接口
静态栅格无法表达运动物体。动态障碍物需要先检测(聚类或深度学习框),再关联(把当前帧检测与上一帧轨迹匹配),最后滤波估计状态。常用方法是卡尔曼滤波:状态量取 [x, y, vx, vy],观测为位置。预测时,匀速模型给出未来 1~3 s 的轨迹点;若目标可能转向,可切换到匀加速或交互多模型(IMM)。
交给规划器的接口应包含:目标 id、当前位置、速度矢量、外接尺寸、类别(行人/车辆/未知)、置信度,以及未来若干时刻的预测位置。更新频率建议 10~20 Hz,且时间戳必须与规划器当前时刻对齐,否则预测会“超前”或“滞后”。置信度低的目标可只做减速避让,不触发急停,避免误检导致频繁刹车。
把上述环节串起来,局部规划器拿到的就是一张带代价的局部栅格,外加一份动态目标列表及其预测轨迹。前者回答“哪里能走”,后者回答“哪里即将不能走”。两者时间戳一致、坐标系统一(通常为车体坐标系,x 向前、y 向左),规划器才能在同一框架下做避障决策。