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

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

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

  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 小时前
DSpark:让大模型"写得更快"的秘密武器
人工智能·deepseek
JavaGuide3 小时前
比 iTerm2 更适合 Claude Code/Codex 的终端,我换成 Ghostty 了
人工智能·后端
threerocks3 小时前
神级 Skill,作品个个儿爆,我开源了长期自用的手绘风格库
人工智能·aigc
小爷毛毛_卓寿杰4 小时前
我把一个 3B 模型塞进了 Xinference,然后它干掉了 DeepSeek V3.2
人工智能·开源·github
秦先生在广东4 小时前
Agent 闭环才是真正的护城河:Anthropic “300 个 Agent“ 背后被忽视的秘密
人工智能
Bigfish_coding4 小时前
前端转agent-【python】- 14 记忆系统优化:摘要与遗忘
人工智能
Bigfish_coding4 小时前
前端转agent-【python】-13 Ollama Python流式输出教程:stream=True 与 async 实践
人工智能
字节跳动数据库7 小时前
文章分享——相似函数处理方法
人工智能·后端·程序员
Bigfish_coding7 小时前
前端转agent-【python】-12 LangChain 入门实战:RAG + LCEL 链式调用
人工智能
程序员cxuan7 小时前
读懂 Claude Code 架构分析系列,第一篇,开始!
人工智能·后端·架构