自动驾驶各模块协作与本质

自动驾驶系统本质上是一个"感知世界 → 理解环境 → 做决策 → 控制车辆"的闭环系统。

行业里一般按模块划分为:

  1. 感知(Perception)
  2. 定位(Localization)
  3. 预测(Prediction)
  4. 规划(Planning)
  5. 控制(Control)
  6. 系统与通信(Middleware/CAN/ROS/Apollo)
  7. 地图与导航(HD Map)
  8. 安全冗余(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发送
→ 车辆制动
相关推荐
小雨青年3 分钟前
GitHub Spark:自然语言能把全栈 AI 应用做到什么程度
人工智能·github
AI袋鼠帝4 分钟前
比Codex快4倍!终于有开源模型卷本地Agent执行效率了~
人工智能
j_xxx404_7 分钟前
MySQL库操作硬核解析:字符集、校验规则、大小写比较、备份恢复与连接排查
运维·服务器·数据库·人工智能·mysql·ai·oracle
小锋java12349 分钟前
分享一套锋哥原创的基于LangChain4j的RAG医疗健康知识智能问答系统(SpringBoot4+Vue3+Ollama)
java·人工智能
陈天伟教授10 分钟前
图解人工智能(52)人工智能应用-GPT 机器作家
人工智能
AIGS00129 分钟前
探索向量空间JBoltAI:工业企业数智化升级的基础设施
java·人工智能·人工智能ai大模型应用
qq_5278878730 分钟前
机器学习训练中Epoch、Batch、Bath_size、Data_size的区别
人工智能·机器学习·batch
林间码客31 分钟前
《人工智能概论》实验6 知识点复习提纲
人工智能
林间码客36 分钟前
《人工智能概论》实验3 知识点复习提纲
人工智能
科技圈快迅36 分钟前
商业旅拍后期修图软件实测:像素蛋糕功能与应用分析
人工智能