自动驾驶系统本质上是一个"感知世界 → 理解环境 → 做决策 → 控制车辆"的闭环系统。
行业里一般按模块划分为:
- 感知(Perception)
- 定位(Localization)
- 预测(Prediction)
- 规划(Planning)
- 控制(Control)
- 系统与通信(Middleware/CAN/ROS/Apollo)
- 地图与导航(HD Map)
- 安全冗余(Safety)
理解成"人的驾驶过程":
- 眼睛耳朵 → 感知
- 知道自己在哪 → 定位
- 判断别人要干什么 → 预测
- 想怎么开 → 规划
- 手脚操作方向盘油门刹车 → 控制
一、整体协作流程(核心)
自动驾驶是一个实时循环系统:
传感器采集
↓
感知模块
↓
定位模块
↓
预测模块
↓
规划模块
↓
控制模块
↓
车辆执行
↓
再次采集环境
整个循环通常:
- 10ms
- 20ms
- 50ms
执行一次
高速 NOA 场景里很多模块是 50Hz~100Hz 工作。
二、各模块详细机理
1. 感知模块(Perception)
这是自动驾驶的"眼睛"。
负责:
- 看车
- 看人
- 看车道线
- 看红绿灯
- 看障碍物
- 看交通标志
核心输入来自传感器:
常见传感器
摄像头 Camera
作用:
- 识别车道线
- 红绿灯
- 行人
- 交通牌
优点:
- 信息丰富
- 成本低
缺点:
- 夜晚/逆光差
- 距离估计不稳定
激光雷达 LiDAR



作用:
- 获取3D点云
- 精确测距离
原理:
发射激光
→ 打到物体
→ 激光反射回来
→ 计算飞行时间
→ 得到距离
毫米波雷达 Radar
作用:
- 测距离
- 测速度
特别适合:
- 雨天
- 雾天
- 高速场景
多传感器融合
- Camera 看得懂语义
- LiDAR 测距准
- Radar 测速度准
所以要融合。
融合方法
时间同步
保证:
Camera 时间
LiDAR 时间
Radar 时间
一致
否则:
车已经动了。
空间标定
解决:
LiDAR坐标系
→ Camera坐标系
通过外参矩阵:
R(旋转)
T(平移)
实现坐标变换。
数据融合
经典:
- 卡尔曼滤波
- EKF
- UKF
- Deep Fusion
例如:
Camera发现一个车
LiDAR也发现一个车
→ 判断是否同一目标
→ 合并
2. 定位模块(Localization)
自动驾驶必须知道:
我现在在哪
精度通常:
- GPS:米级
- 自动驾驶:厘米级
定位机理
GPS
卫星定位。
但城市峡谷会漂移。
IMU
惯性测量单元:
- 加速度计
- 陀螺仪
积分得到运动轨迹。
缺点:
误差会累计漂移。
激光定位
利用实时点云VS高精地图匹配。
常见:
- NDT
- ICP
定位融合
通常:
GPS
+ IMU
+ LiDAR
+ Wheel Odometry
通过 EKF 融合。
核心思想:
不同传感器互补。
3. 预测模块(Prediction)
这是重要的模块
例如:
- 前车会不会变道
- 行人会不会横穿
- 电动车会不会鬼探头
预测机理
输入:
历史轨迹
输出:
未来轨迹
例如:
过去3秒轨迹
→ LSTM/Transformer
→ 未来5秒轨迹
输出:
Trajectory A: 70%
Trajectory B: 20%
Trajectory C: 10%
因为人的行为是概率性的。
4. 规划模块(Planning)
这是"大脑"。
决定:
车应该怎么开
规划分层
全局规划
类似导航:
A点 → B点
使用:
- A*
- Dijkstra
生成路线。
行为规划
决定:
- 超车
- 跟车
- 变道
- 停车
- 红灯等待
例如:
前方慢车
→ 是否变道?
轨迹规划(核心)
生成:
未来几秒车辆轨迹
例如:
x,y,v,a
必须满足:
- 不撞车
- 不压线
- 平滑
- 舒适
常见算法
Frenet坐标系
自动驾驶经典。
把道路转换成:
s:沿道路方向
d:横向偏移
便于规划。
轨迹优化
目标函数:
最小曲率
最小加速度
最小jerk
5. 控制模块(Control)
规划只是"想"。
控制才是真正:
打方向
踩刹车
踩油门
控制机理
目标:
让车跟踪规划轨迹
横向控制
控制方向盘。
常见:
Pure Pursuit
找前视点。
Stanley
自动驾驶经典。
MPC(模型预测控制)
高阶自动驾驶大量使用。
纵向控制
控制:
- 加速
- 刹车
常见:
- PID
- MPC
PID控制
思想:
- P:当前误差
- I:历史误差
- D:未来趋势
6. 控制如何真正让车动起来?
控制器输出:
方向盘角度
油门百分比
制动力
发送到:
CAN总线
车辆 ECU 执行
7. 高精地图(HD Map)
高精地图不是普通导航地图。
它包含:
- 车道级信息
- 红绿灯位置
- 停止线
- 路沿
- 坡度
Apollo里的典型协作
Apollo:
感知:
识别红绿灯
定位:
确定距离停止线还有30m
预测:
前车减速
规划:
决定停车
控制:
输出刹车
然后:
CAN发送
→ 车辆制动