2. 激光雷达基础
在3D目标检测工程中,激光雷达不是“拍一张深度图”的相机,而是一台持续输出空间采样点的主动测距传感器。理解它的测距原理、数据组织方式、坐标定义、扫描模式和硬件类型,决定了后续标定、特征提取、检测网络设计与部署调优的上限。本节从工程视角梳理这些基础,并给出可直接用于数据处理的参数与格式说明。
一、测距原理:从飞行时间到相位差
主流激光雷达的测距核心是测量激光往返目标的时间或相位变化。按调制方式可分为三类:
- 脉冲飞行时间(ToF):发射短脉冲,记录回波到达时间
t,距离d = c·t/2。结构简单、量程远,是机械旋转式和多数半固态雷达的基础。 - 调幅连续波(AMCW):发射正弦调制光,通过回波与发射信号的相位差
Δφ计算距离,d = c·Δφ/(4πf)。精度高但存在距离模糊,需多频解算。 - 调频连续波(FMCW):发射线性调频光,利用拍频同时获得距离与径向速度,抗干扰强,适合4D成像雷达。
工程上还需关注回波强度、多回波与最大最小量程。强度反映目标反射率,可用于滤除雨雾噪点;多回波能穿透树叶或玻璃,保留真实结构;量程与角分辨率共同决定点云密度。
二、点云数据格式:从原始包到结构化数组
激光雷达原始输出通常是UDP数据包,包含方位角、通道距离、强度、时间戳等字段。工程中更常用的是结构化点云格式:
| 格式 | 典型字段 | 特点与适用场景 |
|---|---|---|
| PCD | x, y, z, intensity, ring, time | PCL生态标准,支持ASCII/二进制,适合离线调试与算法验证 |
| PLY | x, y, z, nx, ny, nz, rgb | 偏重几何与颜色,常用于可视化与三维重建 |
| KITTI bin | x, y, z, intensity | 浮点二进制,自动驾驶数据集常用,读取快 |
| ROS PointCloud2 | fields, 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)与单位(弧度/度),否则会出现“点云整体倾斜”或“目标框漂移”。
四、扫描模式与常见激光雷达类型
扫描模式决定点云的空间分布与运动畸变特征。机械旋转式通过360°旋转获得环形扫描,水平分辨率高但垂直通道有限;半固态采用MEMS微振镜或转镜,以非重复扫描提升等效分辨率;固态则通过OPA或Flash实现无机械运动,可靠性高但视场与量程仍在演进。
常见类型对比:
- 机械旋转式:如Velodyne HDL-64E,360°水平FOV,适合早期自动驾驶与建图,但体积大、成本高。
- MEMS半固态:如速腾聚创RS-LiDAR-M1,成本低、寿命长,适合量产乘用车,但垂直FOV较窄。
- 转镜式:如禾赛AT128,通过一维转镜实现高线束,兼顾成本与性能。
- FMCW固态:如Aeva Aeries II,输出速度维度,抗互扰,适合4D感知。
不同扫描模式对检测算法的影响:机械式点云均匀但稀疏,需体素化下采样;MEMS非重复扫描导致帧间点分布变化,需注意时序建模;FMCW提供径向速度,可直接用于运动分割与跟踪初始化。
五、工程案例:从原始包到检测输入
以一辆搭载MEMS雷达的测试车为例,数据链路为:雷达UDP包 → 驱动解析为PointCloud2 → 按time做运动补偿 → 变换到车辆坐标系 → 裁剪ROI(如x∈[0,80]m,y∈[-20,20]m)→ 体素化或柱面投影 → 送入检测网络。若忽略运动补偿,40km/h下每帧约11ms的采集时差会造成约0.12m位移,对行人等小目标影响显著。
复盘时建议记录:点云帧率、每帧点数、有效点比例、ring分布、时间戳抖动、外参版本。这些指标能快速定位“检测突然变差”是数据问题还是模型问题。
掌握以上基础后,后续的标定、特征提取与检测网络设计才有稳定的输入前提。实际项目中,建议把测距参数、点云字段、坐标变换矩阵和扫描模式配置统一记录在数据字典中,避免“同一份点云在不同模块被解释成不同含义”。