一、课程导论与基础知识:障碍物检测概述、目标关联的定义、传感器介绍与坐标系空间变换

大家好,欢迎来到这门课。

说实话,自动驾驶这个领域,我摸爬滚打也有七八年了。从最早在实验室里调一个激光雷达点云,到后来在量产车上处理各种corner case,踩过的坑真不少。今天这第一节课,咱们不急着写代码,先把地基打牢。

你想想看,一辆车要在路上跑,它得先知道「周围有什么」。这就是障碍物检测要干的事。而知道了「有什么」之后,还得知道「这是不是刚才那个家伙」,这就是目标关联。这两件事,是感知系统的左膀右臂。

1.1 障碍物检测概述

障碍物检测,说白了就是回答三个问题:有没有东西?在哪儿?是什么?

我在早期项目里,曾经只用单目摄像头做检测。结果有一次,一个白色的卡车车厢横在路中间,算法愣是没认出来——因为纹理太少了。嗯,从那以后我就明白,单一传感器总有盲区。

现在的检测方法,大致分两类:

  • 传统方法:基于几何特征,比如激光雷达的聚类、摄像头的边缘检测。鲁棒性差,但可解释性强。
  • 深度学习方法:端到端,比如YOLO、PointPillars。效果好,但有时候「死得不明不白」。

我个人习惯是,量产项目里两者结合。用深度学习做初检,用传统方法做校验和兜底。

核心要点:障碍物检测不是「检出率越高越好」,而是「漏检率越低越好」。一个没检测到的静止车辆,比十个误检都危险。

1.2 目标关联的定义

目标关联,也叫数据关联。它解决的是「同一性」问题。

举个例子:上一帧在50米处有个行人,这一帧在48米处又出现一个行人。你怎么知道他们是同一个人?

这其实是个匹配问题。常用的方法有:

  1. 最近邻法:找距离最近的。简单,但容易跟丢。
  2. 匈牙利算法:全局最优匹配。我当年第一次实现这个算法时,debug了整整两天,最后发现是代价矩阵算错了。
  3. 概率数据关联:考虑所有可能性,加权平均。精度高,但计算量大。

你可能会问:为什么不用深度学习直接做?其实现在也有端到端的方法,但工业界用得最多的还是传统方法。为什么?因为稳定、可调试。

避坑指南:我曾经在一个项目中,目标关联的阈值设得太宽松,结果把两个并排行驶的车辆关联成了同一个目标。后果就是自车急刹车,差点造成追尾。阈值这东西,得根据场景反复调。

1.3 传感器介绍

自动驾驶的三大主力传感器,各有各的脾气。

传感器 优点 缺点 我的经验
激光雷达 测距准,3D信息丰富 贵,受天气影响大 雨雪天点云会「糊」,得做滤波
摄像头 纹理信息丰富,便宜 缺乏深度,受光照影响大 逆光时检测率会掉10%以上
毫米波雷达 测速准,全天候 角度分辨率低,点稀疏 对静止目标容易「视而不见」

我个人建议,别指望任何一个传感器「包打天下」。融合才是王道。

1.4 坐标系与空间变换

这是最容易出错的地方,没有之一。

一辆车上,至少有这几个坐标系:

  • 传感器坐标系:每个传感器自己的「眼睛」
  • 车体坐标系:通常以后轴中心为原点
  • 世界坐标系:比如UTM坐标

空间变换,就是在这几个坐标系之间来回转换。核心公式就一个:

// 齐次坐标变换
// P_world = T_vehicle_to_world * T_sensor_to_vehicle * P_sensor

// 示例:将激光雷达点云转换到车体坐标系
Eigen::Matrix4d T_sensor_to_vehicle;
T_sensor_to_vehicle << 
    0.999, -0.017,  0.017,  0.5,
    0.017,  0.999,  0.017,  0.0,
   -0.017, -0.017,  0.999,  1.2,
    0.0,    0.0,    0.0,    1.0;

Eigen::Vector4d p_sensor(1.0, 0.0, 0.5, 1.0);
Eigen::Vector4d p_vehicle = T_sensor_to_vehicle * p_sensor;

这里有个坑:旋转矩阵的顺序。是先绕X轴转,还是先绕Z轴转?不同厂家给的标定参数,顺序可能不一样。我吃过这个亏,结果点云全飞了。

警告:坐标系变换的精度,直接决定了融合效果。标定误差超过1厘米,融合后的目标位置就可能偏差几十厘米。别问我怎么知道的。

知识体系总览

下面这张图,是我自己梳理的本章知识结构。你可以把它当作一张「地图」,后面每节课都会回到这里。

课程导论与基础知识 障碍物检测概述 有没有东西?在哪儿?是什么? 传统方法 vs 深度学习方法 目标关联的定义 同一性匹配问题 最近邻 | 匈牙利 | 概率数据关联 传感器介绍 激光雷达 | 摄像头 | 毫米波雷达 各有优劣,融合为王 坐标系与空间变换 传感器坐标系 → 车体坐标系 → 世界坐标系 齐次坐标变换:P_world = T * P_sensor 核心思想:单一传感器有盲区,单一算法有局限 多传感器融合 + 多算法互补 = 可靠感知

这张图把今天的内容串起来了。你看,障碍物检测和目标关联是「上下层」关系,传感器是「输入」,坐标系变换是「桥梁」。后面每一章,都会在这张图上添砖加瓦。

学习建议:坐标系变换这块,我建议你亲手写一遍代码。别用现成的库,就从矩阵乘法开始写。写一遍,比看十遍都管用。

好了,第一节课就到这里。内容不多,但都是后面所有章节的基石。你把这些概念吃透了,后面学起来会轻松很多。

可可精品资料库