2. 激光雷达基础

在3D目标检测工程中,激光雷达不是“拍一张深度图”的相机,而是一台持续输出空间采样点的主动测距传感器。理解它的测距原理、数据组织方式、坐标定义、扫描模式和硬件类型,决定了后续标定、特征提取、检测网络设计与部署调优的上限。本节从工程视角梳理这些基础,并给出可直接用于数据处理的参数与格式说明。

一、测距原理:从飞行时间到相位差

主流激光雷达的测距核心是测量激光往返目标的时间或相位变化。按调制方式可分为三类:

  • 脉冲飞行时间(ToF):发射短脉冲,记录回波到达时间 t,距离 d = c·t/2。结构简单、量程远,是机械旋转式和多数半固态雷达的基础。
  • 调幅连续波(AMCW):发射正弦调制光,通过回波与发射信号的相位差 Δφ 计算距离,d = c·Δφ/(4πf)。精度高但存在距离模糊,需多频解算。
  • 调频连续波(FMCW):发射线性调频光,利用拍频同时获得距离与径向速度,抗干扰强,适合4D成像雷达。

工程上还需关注回波强度、多回波与最大最小量程。强度反映目标反射率,可用于滤除雨雾噪点;多回波能穿透树叶或玻璃,保留真实结构;量程与角分辨率共同决定点云密度。

测距误差主要来自时间测量抖动、时钟漂移、目标反射率变化和背景光。实际标定中常用已知距离靶板拟合距离偏移与尺度因子,写入传感器内参。

二、点云数据格式:从原始包到结构化数组

激光雷达原始输出通常是UDP数据包,包含方位角、通道距离、强度、时间戳等字段。工程中更常用的是结构化点云格式:

格式典型字段特点与适用场景
PCDx, y, z, intensity, ring, timePCL生态标准,支持ASCII/二进制,适合离线调试与算法验证
PLYx, y, z, nx, ny, nz, rgb偏重几何与颜色,常用于可视化与三维重建
KITTI binx, y, z, intensity浮点二进制,自动驾驶数据集常用,读取快
ROS PointCloud2fields, point_step, row_step, data实时消息传输,支持多字段与ring/time,适合在线系统

以ROS PointCloud2为例,读取时需按point_step解析每个点,并注意is_dense与无效点(NaN)处理。下面是一段Python解析示例:

import numpy as np
import sensor_msgs.point_cloud2 as pc2

def read_cloud(msg):
    # 按字段名提取,避免硬编码偏移
    gen = pc2.read_points(msg, field_names=("x","y","z","intensity","ring","time"), skip_nans=True)
    pts = np.array(list(gen), dtype=np.float32)
    return pts  # shape: (N, 6)

点云常见属性包括:ring表示激光通道编号,time表示该点相对帧起始的采集时刻,用于运动补偿。若忽略time,高速运动场景会出现“拖影”与目标形变。

三、坐标系:传感器、车辆与全局

3D检测中至少涉及四类坐标系:

  • 激光雷达坐标系:原点在雷达光学中心,x向前、y向左、z向上(或按厂商定义),点云原始坐标即在此系。
  • 车辆坐标系:原点通常在后轴中心或质心,用于多传感器融合与规划控制。
  • 相机坐标系:用于图像与点云前融合,需通过外参 T_cam_lidar 变换。
  • 全局坐标系:如UTM或地图坐标系,用于多帧拼接与高精定位。

坐标变换遵循刚体变换:P_vehicle = R · P_lidar + t。工程中务必统一旋转顺序(如ZYX)与单位(弧度/度),否则会出现“点云整体倾斜”或“目标框漂移”。

标定检查清单:1)雷达水平安装角是否补偿;2)时间同步是否对齐到同一帧;3)外参是否包含雷达与IMU的杆臂;4)点云裁剪范围是否与检测ROI一致。

四、扫描模式与常见激光雷达类型

扫描模式决定点云的空间分布与运动畸变特征。机械旋转式通过360°旋转获得环形扫描,水平分辨率高但垂直通道有限;半固态采用MEMS微振镜或转镜,以非重复扫描提升等效分辨率;固态则通过OPA或Flash实现无机械运动,可靠性高但视场与量程仍在演进。

常见类型对比:

  • 机械旋转式:如Velodyne HDL-64E,360°水平FOV,适合早期自动驾驶与建图,但体积大、成本高。
  • MEMS半固态:如速腾聚创RS-LiDAR-M1,成本低、寿命长,适合量产乘用车,但垂直FOV较窄。
  • 转镜式:如禾赛AT128,通过一维转镜实现高线束,兼顾成本与性能。
  • FMCW固态:如Aeva Aeries II,输出速度维度,抗互扰,适合4D感知。

不同扫描模式对检测算法的影响:机械式点云均匀但稀疏,需体素化下采样;MEMS非重复扫描导致帧间点分布变化,需注意时序建模;FMCW提供径向速度,可直接用于运动分割与跟踪初始化。

常见误区:把“线束”等同于“垂直分辨率”。实际垂直角分辨率还受安装俯仰、扫描方式和距离影响;远距离目标可能只落在少数通道上,导致漏检。选型时应结合检测距离、FOV与点密度综合评估。

五、工程案例:从原始包到检测输入

以一辆搭载MEMS雷达的测试车为例,数据链路为:雷达UDP包 → 驱动解析为PointCloud2 → 按time做运动补偿 → 变换到车辆坐标系 → 裁剪ROI(如x∈[0,80]m,y∈[-20,20]m)→ 体素化或柱面投影 → 送入检测网络。若忽略运动补偿,40km/h下每帧约11ms的采集时差会造成约0.12m位移,对行人等小目标影响显著。

复盘时建议记录:点云帧率、每帧点数、有效点比例、ring分布、时间戳抖动、外参版本。这些指标能快速定位“检测突然变差”是数据问题还是模型问题。

激光雷达基础:测距 → 点云 → 坐标 → 扫描 → 检测输入 测距原理 脉冲ToF:d = c·t/2 AMCW:相位差 Δφ FMCW:距离 + 速度 强度 / 多回波 / 量程 点云数据格式 PCD / PLY / KITTI bin ROS PointCloud2 x,y,z,intensity,ring,time 按 point_step 解析 坐标系 雷达系 / 车辆系 相机系 / 全局系 P_v = R·P_l + t 旋转顺序 / 单位统一 扫描模式 机械旋转 360° MEMS 非重复 转镜 / 固态 OPA FOV / 线束 / 密度 数据流:UDP包 → 驱动解析 → 运动补偿 → 坐标变换 → ROI裁剪 → 体素化/柱面投影 → 检测网络 关键参数:帧率、点数、ring分布、时间戳抖动、外参版本 机械旋转式 360°水平FOV 点云均匀、成本高 适合建图与早期自驾 MEMS半固态 非重复扫描 成本低、寿命长 适合量产乘用车 FMCW固态 距离 + 径向速度 抗互扰、4D感知 适合高阶自动驾驶

掌握以上基础后,后续的标定、特征提取与检测网络设计才有稳定的输入前提。实际项目中,建议把测距参数、点云字段、坐标变换矩阵和扫描模式配置统一记录在数据字典中,避免“同一份点云在不同模块被解释成不同含义”。