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

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

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

  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发送
→ 车辆制动
相关推荐
冬奇Lab2 分钟前
AI 评测系列(03):LLM-as-Judge——让 LLM 评价 LLM 的正确姿势
人工智能·llm
Miao1213113 分钟前
某海外住宿平台如何在大规模场景下实现指标一致性:Minerva 指标平台实践
大数据·数据库·人工智能
冬奇Lab16 分钟前
每日一个开源项目(第164篇):毕昇(BISHENG)- 面向企业的开源 LLM DevOps 平台
人工智能·开源·agent
声讯电子1 小时前
录音笔AI降噪方案:从录得到到听得清的听觉革命
人工智能·语音识别
小小测试开发1 小时前
Playwright vs Selenium vs Cypress:从浏览器协议到 API 设计的全面对比与实测
人工智能·selenium·测试工具
Ai_easygo1 小时前
AI Agent开发入门——从ReAct到Tool Calling,拆解Agent的底层运行逻辑
前端·人工智能·react.js
IT_陈寒2 小时前
Redis的持久化配置把我坑惨了:你以为数据安全了?
前端·人工智能·后端
miaowu3572 小时前
AI智能体推动数字化转型:从流程自动化到决策辅助的完整路线图
大数据·人工智能·自动化
阿里云大数据AI技术2 小时前
阿里云 Elasticsearch 日志采集与加工服务:让日志链路少一串组件,多一份稳定
人工智能·elasticsearch
ksueh2 小时前
AI写小说长篇创作中的上下文局限与外部记忆系统实践
人工智能