2. 感知系统基础
自动驾驶感知系统并不是“一个传感器看世界”,而是由多种物理原理不同的传感器共同构建环境认知。摄像头擅长语义与纹理,激光雷达擅长三维几何,毫米波雷达擅长速度与恶劣天气穿透,超声波负责近距补盲,GNSS/IMU 提供全局位姿与运动基准。理解它们的数据特点,是后续做时间同步、坐标变换、融合与任务调度的前提。
一、五类传感器的物理原理与数据形态
摄像头通过光学成像把三维场景投影到二维像平面,输出稠密像素阵列。它的优势是分辨率高、成本低、语义信息丰富,能识别车道线、交通标志、行人意图;缺点是单目缺乏绝对深度,受逆光、雨雾、夜间影响大,且存在透视畸变与运动模糊。
激光雷达(LiDAR)主动发射激光脉冲并测量飞行时间,得到高精度三维点云。机械旋转式、半固态与固态方案在视场角和线束上差异明显。点云具有精确的 XYZ 坐标和反射强度,但密度随距离衰减,雨雪雾会产生噪点,且数据量庞大。
毫米波雷达利用毫米波频段的电磁波回波,通过多普勒效应直接测量目标径向速度,在测距、测速上稳定,穿透雨雾能力强。其角分辨率相对较低,金属反射与多径效应会带来虚假目标,点云稀疏但每点都带速度信息。
超声波雷达工作在 40kHz 左右,测距短(通常 0.2~5m),成本极低,主要用于泊车与近距障碍物检测。它易受温度、风速和地面反射影响,不适合高速场景。
GNSS/IMU提供全局定位与惯性测量。GNSS 给出经纬度、高程与速度,但城市峡谷中易失锁;IMU 以高频输出加速度和角速度,短时精度高但存在积分漂移。二者组合可输出连续位姿,是定位与建图的基准。
二、感知任务分类与传感器匹配
感知任务通常分为四类:检测回答“有什么、在哪里”,输出 2D/3D 边界框与类别;分割回答“每个像素/点属于什么”,输出语义、实例或可行驶区域;跟踪回答“它往哪走”,通过数据关联维持目标 ID 并估计轨迹;定位回答“我在哪”,输出自车位姿与地图匹配结果。
不同任务对传感器的依赖不同。检测与分割高度依赖摄像头和激光雷达;跟踪需要雷达的速度信息与连续帧关联;定位则依赖 GNSS/IMU 与激光雷达/视觉里程计的组合。下表给出典型匹配关系:
| 感知任务 | 主要传感器 | 典型输出 | 关键难点 |
|---|---|---|---|
| 检测 | 摄像头、激光雷达、毫米波雷达 | 2D/3D 框、类别、置信度 | 小目标、遮挡、类别不平衡 |
| 分割 | 摄像头、激光雷达 | 语义图、实例掩码、可行驶区域 | 边界精度、实时性、标注成本 |
| 跟踪 | 毫米波雷达、激光雷达、摄像头 | 目标 ID、轨迹、速度 | ID 切换、遮挡恢复、数据关联 |
| 定位 | GNSS/IMU、激光雷达、摄像头 | 自车位姿、地图匹配、里程计 | 城市峡谷、漂移、地图更新 |
三、典型场景:高速跟车中的多传感器协作
在高速跟车场景中,毫米波雷达以 20Hz 输出前车距离与相对速度,负责稳定测速;摄像头以 30Hz 识别车道线与车辆类型,提供语义;激光雷达以 10Hz 补充三维轮廓,区分相邻车道车辆。跟踪模块把雷达点与视觉框关联,维持前车 ID;定位模块用 GNSS/IMU 与激光雷达匹配车道级地图,确定自车所在车道。四类任务在同一时间轴上协同,才能输出稳定的跟车决策。
数据流要点:传感器原始数据 → 时间同步与坐标变换 → 单传感器感知 → 目标级/特征级融合 → 统一环境模型 → 规划控制。任何一环缺失,都会导致下游任务退化。
四、常见误区与复盘
- 误区一:摄像头可以替代激光雷达。摄像头缺乏绝对深度,逆光与夜间性能下降,纯视觉方案需要极强算力与数据闭环支撑。
- 误区二:雷达点云稀疏就没用。雷达的径向速度是摄像头和激光雷达难以直接提供的,在跟踪与碰撞预警中价值极高。
- 误区三:GNSS 定位足够准。城市峡谷中 GNSS 可能失锁数秒,必须依赖 IMU 与里程计短时递推。
- 误区四:超声波可以用于高速避障。超声波测距短、响应慢,仅适合低速泊车与近距补盲。
复盘建议:在系统设计初期,先列出每个感知任务所需的“最小传感器集合”,再评估冗余与成本。例如检测任务至少需要摄像头 + 雷达,定位任务至少需要 GNSS/IMU + 激光雷达或视觉里程计。明确数据特点后,再决定融合层级与同步策略,可避免后期大规模返工。
# 典型传感器输出频率参考
camera: 30 Hz # 2D 图像,语义丰富
lidar: 10 Hz # 3D 点云,几何精确
radar: 20 Hz # 距离 + 径向速度
ultrasonic: 10 Hz # 近距 0.2~5m
gnss: 10 Hz # 全局经纬度、高程
imu: 100 Hz # 加速度、角速度
掌握五类传感器的数据特点与四类感知任务的匹配关系,是后续学习时间同步、坐标变换、融合架构与数据流工程的基础。只有先看清“每个传感器能提供什么、不能提供什么”,才能在系统层面做出合理的冗余设计与任务调度。