1. ADAS数据采集概述

大家好,我是老张。做ADAS系统这些年,我最大的感触就是——数据采集是地基。地基没打好,后面算法、测试、验证全得翻车。今天咱们就聊聊数据采集的那些事儿。

1.1 传感器类型:ADAS的“眼睛”和“耳朵”

ADAS系统依赖多种传感器协同工作。每种传感器都有自己的脾气。我刚开始接触时,也踩过不少坑。

摄像头

摄像头是ADAS最常用的传感器。说白了,它就像人的眼睛。但摄像头有个致命弱点——怕黑、怕强光、怕雨雾。

  • 单目摄像头:成本低,但测距精度一般。我曾在项目中用单目做前向碰撞预警,结果雨天误报率飙升。后来加了双目才解决。
  • 双目摄像头:通过视差测距,精度高。但标定麻烦,两个镜头稍微错位,数据就废了。
  • 环视摄像头:一般4-6个,覆盖车身周围。做自动泊车必备。
我的经验:摄像头选型时,别只看分辨率。动态范围和帧率同样关键。我见过有人用30fps的摄像头做高速场景采集,结果车辆快速变道时,图像全是运动模糊。

激光雷达

激光雷达是“精度担当”。它直接输出3D点云,不受光照影响。但价格嘛...嗯,你懂的。

  • 机械式:旋转扫描,360°视野。但寿命短,震动环境下容易坏。
  • 固态式:没有旋转部件,可靠性高。但视场角有限,一般需要多个组合。

我记得有一次做路采,激光雷达的旋转电机突然卡死。排查了半天,发现是灰尘太多。从那以后,我每次出车前都会检查雷达窗口是否干净。

毫米波雷达

毫米波雷达是“全天候选手”。雨雪雾天照样工作。它主要测距和测速,但角度分辨率低。

  • 24GHz:短距,常用于盲区监测。
  • 77GHz:长距,用于自适应巡航和自动紧急制动。

你想想看,如果只有摄像头,大雾天ACC还能用吗?不能。但毫米波雷达可以。这就是为什么高端车必须配雷达。

超声波雷达

超声波雷达成本最低,但精度也最低。它主要用于近距离探测,比如倒车雷达和自动泊车。

它的原理很简单——发射声波,等回波。但有个问题:温度会影响声速。我曾在冬天做测试,超声波测距偏差了5厘米。后来加了温度补偿才搞定。

1.2 数据采集硬件架构

传感器选好了,怎么把它们连起来?这就涉及到硬件架构了。我个人习惯把架构分成三层:

层级 组件 作用
感知层 摄像头、激光雷达、毫米波雷达、超声波 采集原始数据
传输层 以太网、CAN、LVDS、GMSL 把数据传到处理单元
处理层 工控机、数据记录仪、存储设备 存储和预处理数据

这里有个坑要注意——带宽。摄像头数据量最大。一个200万像素的摄像头,30fps,YUV格式,每秒数据量接近1Gbps。如果同时接6个摄像头,再加上激光雷达的点云...嗯,普通千兆网卡根本扛不住。

避坑指南:我曾经用USB3.0接4个摄像头做路采,结果数据频繁丢帧。后来换成GMSL接口+专用采集卡,问题才解决。记住:采集硬件一定要留足余量。

1.3 数据同步机制:GPS/IMU时间戳对齐

这是数据采集中最头疼的问题。没有之一。

为什么需要同步?因为每个传感器都有自己的时钟。摄像头用系统时间,激光雷达用内部晶振,毫米波雷达用CAN时间。如果不做对齐,你看到的“同一时刻”的数据,可能差了100毫秒。

100毫秒是什么概念?车速60km/h,100毫秒车已经跑了1.67米。做目标融合时,这个误差足以让算法把一辆车识别成两辆。

硬件同步方案

最可靠的方式是用GPS的PPS(秒脉冲)信号。PPS每秒输出一个精确的脉冲,所有传感器都以此校准自己的时钟。

// 伪代码:PPS同步流程
void PPS_Interrupt_Handler() {
    // 收到PPS脉冲
    local_timestamp = GPS_UTC_Time;
    // 校准本地时钟
    adjust_local_clock(local_timestamp);
    // 给每个传感器打时间戳
    for each sensor in sensor_list {
        sensor.set_timestamp(local_timestamp);
    }
}

软件同步方案

如果硬件不支持PPS,那就只能用软件对齐了。常见做法是:

  1. 所有传感器数据都带上本地时间戳
  2. 用GPS/IMU的精确时间作为基准
  3. 通过插值或最近邻匹配,把传感器时间对齐到GPS时间

我建议优先用硬件同步。软件同步虽然省钱,但精度有限。有一次我为了省成本,用了纯软件同步。结果做回放分析时,发现激光雷达和摄像头的数据总是对不上。排查了三天,最后发现是系统时钟漂移了。从那以后,我再也不敢省同步硬件的钱了。

IMU时间戳的特殊性

IMU(惯性测量单元)输出频率很高,一般100Hz以上。它的时间戳问题在于——数据是“积分”出来的。如果时间戳不准,积分误差会累积。

举个例子:IMU输出角速度和加速度,需要积分才能得到姿态和位置。如果时间戳偏差1毫秒,积分10秒后,位置误差可能达到几十厘米。所以IMU的时间戳必须精确到微秒级。

总结一下:数据同步是ADAS数据采集的“灵魂”。硬件同步靠PPS,软件同步靠插值。不管用哪种,都要保证时间戳误差在1毫秒以内。否则,后面所有分析都是白费功夫。

好了,这一章就聊到这儿。下一章咱们讲讲数据存储格式和文件管理。到时候我会分享一个我踩过的坑——关于文件命名不规范导致数据丢失的惨痛教训。敬请期待。