可以把无人驾驶理解成三条闭环:算法闭环、数据闭环、验证闭环。
算法闭环是:
传感器 → 标定/同步 → 感知 → 融合/BEV/Occupancy → 跟踪 → 预测 → 决策规划 → 控制 → 执行
数据闭环是:
路采/仿真 → 数据清洗 → 标注/自动标注 → 场景挖掘 → 训练 → 评测 → 回归测试 → 再采集
验证闭环是:
ODD 定义 → 场景库 → 仿真/SIL/HIL/实车 → 安全指标 → Safety Case
1. 先建立全局地图:你要学的 12 大模块
| 模块 | 你要掌握什么 | 典型模型/方法 | 数据集 | 代码库/工具 | 核心指标 |
|---|---|---|---|---|---|
| 数学与工程基础 | 坐标系、矩阵、优化、概率、深度学习、C++/Python/ROS | Kalman Filter、EKF、MPC、Transformer、CNN | 无固定 | PyTorch、ROS 2、CUDA、TensorRT | 延迟、吞吐、稳定性 |
| 传感器与标定 | Camera/LiDAR/Radar/GNSS/IMU/CAN、时间同步、外参内参 | PnP、ICP、手眼标定、BEV 投影 | KITTI、nuScenes、Waymo | Kalibr、ROS、Apollo、Autoware | 重投影误差、同步误差 |
| 感知 | 检测、分割、车道线、红绿灯、占用网络 | YOLO、DETR、PointPillars、CenterPoint、BEVFormer、BEVFusion、OccFormer | KITTI、nuScenes、Waymo、Argoverse 2、SemanticKITTI、BDD100K | MMDetection3D、OpenPCDet、BEVFormer、BEVFusion | mAP、NDS、IoU、mIoU、AMOTA、FPS |
| 多传感器融合 | Camera-LiDAR-Radar 融合、BEV 表达、时序融合 | Point-level fusion、Feature fusion、BEV fusion、Transformer fusion | nuScenes、Waymo、Argoverse 2 | BEVFusion、TransFusion、MMDetection3D | mAP、NDS、鲁棒性、延迟 |
| 跟踪 | 多目标跟踪、ID 保持、速度估计 | SORT、DeepSORT、AB3DMOT、CenterPoint tracking、Kalman + Hungarian | nuScenes、KITTI、Waymo | nuScenes devkit、AB3DMOT | MOTA、MOTP、HOTA、AMOTA、ID Switch |
| 高精地图与定位 | HD Map、车道拓扑、语义地图、SLAM、GNSS/IMU/LiDAR 定位 | NDT、ICP、Factor Graph、Lane Graph、MapTR | Argoverse 2、nuScenes map、Waymo map、KITTI odometry | Autoware、Apollo、Cartographer、LIO-SAM | ATE、RPE、定位误差、地图匹配率 |
| 轨迹预测 | 预测车、人、骑行者未来运动 | VectorNet、LaneGCN、TNT、MTR、Wayformer、HiVT、QCNet | Waymo Motion、Argoverse 2 Motion、nuScenes Prediction、INTERACTION | MTR、QCNet、UniTraj、trajdata | minADE、minFDE、MR、mAP、Brier |
| 决策与规划 | 行为决策、路径规划、速度规划、交互博弈 | FSM、POMDP、A*/Hybrid A*、RRT*、Lattice、Frenet、MPC、IL、RL、Diffusion Planner | nuPlan、Waymo、CARLA、Bench2Drive | Apollo planning、Autoware planning、nuPlan-devkit | 碰撞率、进度、舒适性、TTC、越界率 |
| 控制 | 横纵向控制、轨迹跟踪、车辆动力学 | PID、Pure Pursuit、Stanley、LQR、MPC | 实车/仿真 | Apollo control、Autoware control、CARLA | 横向误差、航向误差、加速度、jerk |
| 端到端 | 从传感器直接到轨迹/控制,或统一感知-预测-规划 | TransFuser、LAV、TCP、UniAD、VAD、ThinkTwice、DriveVLM、VLA/World Model | nuScenes、CARLA、Bench2Drive | UniAD、VAD、TransFuser、OpenDriveLab E2E | Planning L2、collision、Driving Score、Route Completion |
| 仿真 | Log replay、闭环仿真、传感器仿真、场景生成 | CARLA、MetaDrive、SUMO、esmini、OpenSCENARIO、OpenDRIVE | ScenarioNet、nuPlan、CARLA routes | CARLA、MetaDrive、ScenarioNet、SafeBench | Driving Score、Route Completion、infractions、覆盖率 |
| 测评与安全 | SOTIF、功能安全、场景覆盖、回归测试、安全论证 | ISO 26262、ISO 21448、UL 4600、ASAM OpenX | 场景库、事故库、路采数据 | SafeBench、CARLA Leaderboard、nuPlan、Bench2Drive | 风险、暴露率、失败率、ODD 覆盖、残余风险 |
2. 核心公开数据集与平台
2.1 感知/检测/跟踪数据集
KITTI是经典入门数据集,覆盖 stereo、optical flow、visual odometry/SLAM、3D object detection、tracking 等任务,适合小白入门。KITTI 官方说明其数据来自德国 Karlsruhe 城市、乡村和高速场景,并为各 benchmark 提供评测指标。(CVlibs)
nuScenes是多模态自动驾驶数据集,包含 6 个相机、5 个雷达、1 个激光雷达,360° 视野,1,000 个 20 秒场景,并提供 3D 检测、跟踪、预测等任务。它的检测指标包括 mAP、mATE、mASE、mAOE、mAVE、mAAE 和 NDS。(arXiv)
Waymo Open Dataset官方将其分成 Perception Dataset、Motion Dataset、End-to-End Driving Dataset 三类;其中 Perception Dataset 有高分辨率传感器数据和标注,Motion Dataset 用于运动预测,官方 challenge 覆盖 2D/3D 检测、跟踪、语义分割、Motion Prediction、Occupancy and Flow 等任务。(Waymo)
Argoverse 2包含 Sensor、Lidar、Motion Forecasting 等数据集;官方论文说明 Sensor Dataset 有 1,000 个多模态标注序列,Motion Forecasting Dataset 有 250,000 个场景,并且每个场景配有 HD Map。(arXiv)
2.2 规划/闭环评测数据集
nuPlan是面向规划的大规模真实驾驶数据集和 benchmark,官方介绍包含 1,200 小时来自 Boston、Pittsburgh、Las Vegas、Singapore 等城市的人类驾驶数据,主要用于 planner 的真实世界评测。(nuplan.org)
CARLA Leaderboard是闭环自动驾驶评测平台,目标是评估 agent 在真实交通场景中的驾驶能力;官方 Leaderboard 2.1 的主指标是 Driving Score,由 Route Completion 和 Infraction Penalty 相乘得到。(CARLA Autonomous Driving Leaderboard)
Bench2Drive是 NeurIPS 2024 的闭环端到端自动驾驶 benchmark,针对 44 类交互场景、不同天气和城市场景评估端到端方法;其官方 GitHub 发布了完整数据、评测工具、baseline 代码和 benchmark 结果。(arXiv)
2.3 场景库/安全评测平台
ScenarioNet用统一格式管理真实交通场景,可从 Waymo、nuScenes、Lyft L5、nuPlan 等数据集中读取场景,并在 MetaDrive 中复现为可交互仿真。(GitHub)
SafeBench是基于 CARLA 的安全评测平台,目标是用多样化安全关键场景和综合指标系统性评估自动驾驶算法的安全性。(safebench.github.io)
ASAM OpenSCENARIO / OpenDRIVE / OpenXOntology是场景测试和仿真的重要标准体系:OpenSCENARIO 用于描述动态交通参与者行为,OpenDRIVE 常用于描述道路静态结构,OpenXOntology 试图统一 OpenX 标准中的核心概念。(Asam)
3. 每个模块应该怎么学
A. 工程与数学基础
你需要先掌握这些:
- 坐标系:camera、LiDAR、ego、world、map 坐标系。
- 刚体变换:旋转矩阵、四元数、齐次变换。
- 概率估计:Kalman Filter、Bayesian Filter、Particle Filter。
- 优化:最小二乘、QP、MPC、非线性优化。
- 深度学习:CNN、Transformer、BEV、时序建模。
- 工程栈:Linux、Docker、ROS 2、C++、Python、PyTorch、CUDA、TensorRT。
自动驾驶里最常见的坐标变换是:
p w o r l d = T w o r l d e g o T e g o s e n s o r p s e n s o r p_{world}=T_{world}^{ego}T_{ego}^{sensor}p_{sensor}pworld=TworldegoTegosensorpsensor
其中:
T = [ R t 0 1 ] T= \begin{bmatrix} R & t \ 0 & 1 \end{bmatrix}T=[Rt 01]
你一开始不用把所有控制理论都吃透,但必须理解“传感器数据如何变成统一坐标系下的物体、地图和轨迹”。
B. 传感器、标定与同步
你要学什么
Camera 负责语义丰富的视觉信息,LiDAR 负责几何距离,Radar 负责速度和恶劣天气鲁棒性,GNSS/IMU 负责全局定位和姿态估计,CAN/底盘信号负责车辆状态。
模型/方法
| 任务 | 方法 |
|---|---|
| 相机内参 | Zhang 标定法 |
| Camera-LiDAR 外参 | PnP、边缘对齐、互信息、深度投影 |
| LiDAR-LiDAR 外参 | ICP、NDT |
| 时间同步 | 硬同步、软同步、插值、时间戳对齐 |
| 位姿估计 | GNSS/IMU 融合、EKF、Factor Graph |
数据集/代码库
KITTI、nuScenes、Waymo 都能练习多传感器数据读取;Apollo 和 Autoware 是学习车端工程栈的好入口。Apollo 11.0 官方说明其重点升级了感知、定位、规划和开发工具链;Autoware 官方称其为面向自动驾驶的开源软件框架,基于 ROS 并提供完整软件栈。(GitHub)
指标
| 指标 | 含义 |
|---|---|
| Reprojection Error | 相机标定误差 |
| Point-to-plane Error | LiDAR 配准误差 |
| Timestamp Drift | 时间同步漂移 |
| Pose Error | 定位误差 |
| Latency | 从传感器采集到输出的总延迟 |
C. 感知:检测、分割、车道线、占用
感知是无人驾驶入门最重要的一块。你可以按下面顺序学:
2D 检测 → 2D 分割 → LiDAR 3D 检测 → 多视角 Camera 3D 检测 → BEV 融合 → Occupancy
C1. 2D 感知
| 任务 | 模型 | 数据集 | 指标 |
|---|---|---|---|
| 目标检测 | YOLO、Faster R-CNN、DETR、DINO | COCO、BDD100K、Cityscapes、nuImages | AP、mAP |
| 语义分割 | FCN、DeepLab、SegFormer、Mask2Former | Cityscapes、BDD100K | mIoU |
| 车道线 | LaneNet、SCNN、UltraFast、OpenLane 系列 | CULane、TuSimple、OpenLane | F1、IoU、Lane AP |
| 红绿灯/标志 | YOLO、DETR、多任务网络 | BDD100K、Waymo、内部数据 | Precision、Recall、AP |
常用 IoU 是:
I o U = ∣ B p r e d ∩ B g t ∣ ∣ B p r e d ∪ B g t ∣ IoU=\frac{|B_{pred}\cap B_{gt}|}{|B_{pred}\cup B_{gt}|}IoU=∣Bpred∪Bgt∣∣Bpred∩Bgt∣
C2. LiDAR 3D 检测
| 类型 | 模型 |
|---|---|
| Point-based | PointNet++、PointRCNN |
| Voxel-based | VoxelNet、SECOND、Part-A2 |
| Pillar-based | PointPillars |
| Center-based | CenterPoint |
| Two-stage | PV-RCNN、Voxel R-CNN |
OpenPCDet是很适合入门 LiDAR 3D 检测的 PyTorch 代码库,官方介绍它支持多种 one-stage 和 two-stage 3D 检测框架。(GitHub)
C3. Camera-only 3D / BEV 感知
| 方向 | 模型 |
|---|---|
| Monocular 3D | FCOS3D、PGD、SMOKE |
| Multi-view 3D | DETR3D、PETR、BEVDet、BEVDepth |
| BEV Transformer | BEVFormer |
| Occupancy | OccFormer、SurroundOcc、OpenOccupancy 系列 |
BEVFormer是经典 camera-only BEV 方法,官方代码说明其用于多相机自动驾驶感知,支持 3D 检测和语义地图分割;论文提出用时空 Transformer 学习 BEV 表达。(GitHub)
C4. 多传感器融合
| 融合层级 | 代表方法 |
|---|---|
| Raw-level | 原始点云/图像级融合 |
| Point-level | 将图像特征投到 LiDAR 点 |
| Feature-level | 不同模态 backbone 后融合 |
| BEV-level | 相机和 LiDAR 都转成 BEV 后融合 |
| Decision-level | 各自检测后做后融合 |
BEVFusion的核心思想是把多传感器特征统一到 BEV 空间中,论文说明其可支持 3D 检测和 BEV map segmentation 等多任务,并显著优化 BEV pooling 效率。(arXiv)
C5. 感知常用代码库
| 代码库 | 用途 |
|---|---|
| MMDetection | 2D 检测/分割 |
| MMSegmentation | 语义分割 |
| MMDetection3D | 3D 检测、多模态检测、LiDAR 分割 |
| OpenPCDet | LiDAR 3D 检测 |
| BEVFormer | Camera-only BEV 感知 |
| BEVFusion | Camera-LiDAR BEV 融合 |
MMDetection3D 官方文档列出支持 KITTI、nuScenes、Waymo、SemanticKITTI 等数据集,并支持 LiDAR 3D 检测、视觉 3D 检测、LiDAR 语义分割等任务。(mmdetection3d.readthedocs.io)
C6. 感知指标
nuScenes 的 NDS 很重要:
N D S = 1 10 [ 5 m A P + ∑ m T P ∈ T P ( 1 − min ( 1 , m T P ) ) ] NDS=\frac{1}{10}\left[5mAP+\sum_{mTP\in TP}(1-\min(1,mTP))\right]NDS=101