3. 无人系统传感器与感知数据获取
无人系统的自主能力,起点不是算法,而是“感知数据是否可信、可用、可对齐”。摄像头、激光雷达、毫米波雷达、IMU 与 GNSS 五类传感器,分别从不同物理维度描述环境与自身运动:摄像头提供稠密纹理与语义,激光雷达提供高精度三维几何,毫米波雷达提供全天候距离与径向速度,IMU 提供高频角速度与加速度,GNSS 提供全局绝对位置与时间。它们不是简单叠加,而是通过时间同步与外参标定,被组织成同一时空基准下的观测集合。
一、五类传感器的数据形式与角色
摄像头输出二维图像,常见格式为 8 位三通道 RGB,分辨率如 1920×1080,帧率 30 Hz。它擅长识别车道线、交通标志、行人等语义目标,但单目图像缺少绝对尺度,且受光照影响大。激光雷达输出三维点云,每个点包含 x、y、z 坐标与反射强度,机械式雷达典型帧率 10 Hz,水平视场 360°,垂直视场 40°;它直接给出几何距离,但雨雾天气衰减明显。毫米波雷达输出目标级信息:距离、方位角、径向速度与雷达截面积,更新率可达 20 Hz 以上,穿透雨雾能力强,但角分辨率较低、点云稀疏。IMU 输出三轴角速度与三轴加速度,频率通常 100~1000 Hz,短时积分可估计姿态变化,但存在零偏与随机游走,长时间单独积分会漂移。GNSS 输出经纬度、海拔与速度,更新率 1~10 Hz,提供全局无漂移参考,但在城市峡谷、隧道中易失锁或多路径。
从数据流角度看,五类传感器构成“高频惯性—中频视觉/雷达—低频全局”的互补结构。IMU 是时间骨架,GNSS 是全局锚点,摄像头与激光雷达负责环境几何与语义,毫米波雷达负责运动目标测速。理解这一分工,是后续同步与标定的前提。
二、时空同步:把不同频率的数据对齐到同一时刻
多传感器融合的第一道门槛是时间同步。若摄像头图像与激光雷达点云时间戳相差 50 ms,在 10 m/s 行驶速度下,两者空间位置已错开 0.5 m,足以导致标定与融合失败。工程上通常采用“硬件触发 + 软件时间戳”两级方案:GNSS 的 PPS 秒脉冲作为全局时钟源,触发 IMU 与摄像头曝光,激光雷达与毫米波雷达通过 PTP 或 GPS 时间同步协议对齐到同一时间基准。软件层为每帧数据打上采集时刻的 ROS 时间戳,并记录传感器内部延迟。
对于频率不一致的数据,常用插值或最近邻对齐。例如将 100 Hz IMU 与 10 Hz 激光雷达对齐时,可在激光雷达帧时刻对 IMU 做线性插值,得到该时刻的姿态估计;将 30 Hz 图像与 10 Hz 点云对齐时,通常取时间差小于 10 ms 的最近帧配对。若时间差超过阈值,应丢弃该组合,而不是强行融合。
三、外参标定:确定传感器之间的空间关系
外参标定回答“传感器 A 的坐标系到传感器 B 的坐标系如何变换”。以激光雷达与摄像头为例,需要求取旋转矩阵 R 与平移向量 t,使激光点投影到图像像素坐标。标定过程通常使用棋盘格或 AprilTag 标定板:在多个位姿下同时采集图像与点云,先在图像中检测角点像素坐标,再在点云中提取标定板平面与角点三维坐标,通过 PnP 或最小化重投影误差求解 R、t。典型重投影误差应小于 1 像素,若大于 2 像素则需检查时间同步或标定板提取精度。
IMU 与激光雷达的外参标定更依赖运动激励:让无人系统做“8”字或加减速运动,利用 IMU 积分轨迹与激光雷达里程计轨迹的差异,优化两者之间的旋转与平移。GNSS 与 IMU 的外参通常包含杆臂(lever arm),即 GNSS 天线相位中心到 IMU 中心的偏移,该偏移在转弯时会产生离心加速度观测误差,必须精确测量或在线估计。
四、实战任务:多传感器数据采集与标定
下面给出一个可复现的采集与标定任务流程,以搭载摄像头、16 线激光雷达、毫米波雷达、IMU 与 GNSS 的小型无人车为例。任务目标是获得一组时间同步的多传感器数据包,并完成激光雷达—摄像头外参标定。
步骤 1:检查时间源与触发链路。确认 GNSS 已输出 PPS 与 GPRMC 语句,IMU 与摄像头接入 PPS 触发,激光雷达与毫米波雷达配置 PTP 主时钟为同一台工控机。在终端查看时间同步状态:
# 查看 PTP 同步状态
pmc -u -b 0 'GET TIME_STATUS_NP'
# 预期输出包含 offsetFromMaster 小于 1 ms
步骤 2:采集标定数据。将棋盘格标定板(如 8×6 格,方格边长 0.1 m)放置在无人车前方 2~5 m 范围内,覆盖图像与点云共同视场。缓慢移动标定板,采集至少 15 组不同位姿的数据,每组包含一帧图像与对应点云。注意避免标定板过曝或点云缺失。
步骤 3:提取角点并求解外参。在图像中使用 OpenCV 的 findChessboardCorners 提取角点像素坐标;在点云中分割标定板平面,利用平面边界与已知方格尺寸计算角点三维坐标。调用 solvePnP 求解旋转向量与平移向量,再通过 Rodrigues 转换为旋转矩阵。计算重投影误差:
# 伪代码:重投影误差计算
for each corner i:
uv_pred = K * (R * P_i + t) / z
error_i = ||uv_pred - uv_obs||
mean_error = mean(error_i)
# 判断:mean_error < 1.0 px 为合格
步骤 4:验证与记录。将点云按求得的外参投影到图像上,观察车道线、杆状物等边缘是否对齐。若出现系统性偏移,检查时间同步是否超差;若局部错位,检查标定板角点提取是否准确。最终将 R、t、时间戳、重投影误差写入标定文件,供后续融合模块加载。
完成上述采集与标定后,无人系统才具备“同一时刻、同一坐标系”的多源观测能力。后续的感知融合、定位与决策模块,都建立在这一时空基准之上。判断数据是否可用的核心指标有三个:时间戳偏差是否小于阈值、外参重投影误差是否小于 1 像素、各传感器数据帧是否完整无丢包。只有这三项同时达标,采集到的数据才值得进入下一步处理。