第一章 自动驾驶概述

大家好,我是你们这门课的老朋友。在正式开始之前,我想先聊聊我为什么选择做自动驾驶。

几年前,我还在做传统的ADAS(高级辅助驾驶)开发。那时候,车道保持、自适应巡航这些功能,说白了就是给车装了个“拐杖”。但真正让我下定决心转行做决策规划的,是一次在高速上的经历——系统突然对前方静止的卡车识别失误,差点酿成事故。那一刻我意识到,光有感知和控制的“肌肉”远远不够,真正决定车辆“智商”的,是决策规划这个“大脑”。

好,咱们言归正传。第一章,我们先搭个框架,看看自动驾驶到底是个什么东西。

1.1 自动驾驶分级标准(SAE L0-L5)

你想想看,如果两个人聊自动驾驶,一个说“我的车能自动泊车”,另一个说“我的车能全程不用管”,这根本不在一个频道上。所以,国际自动机工程师学会(SAE)搞了个分级标准,把自动驾驶分成了L0到L5六个等级。

我习惯把这个标准理解为“谁在开车”的问题:

等级 名称 核心特征 谁在开?
L0 无自动化 驾驶员全程操作,系统只提供警告(如碰撞预警)
L1 驾驶辅助 系统能控制方向盘或加减速之一(如定速巡航) 人为主,系统辅助
L2 部分自动化 系统同时控制转向和加减速,但人必须时刻监控 人监控,系统执行
L3 有条件自动化 系统在特定条件下(如高速)完全接管,但需要人随时接管 系统开,人备着
L4 高度自动化 系统在限定区域(如园区、固定路线)完全自主,无需人干预 系统全权负责
L5 完全自动化 任何道路、任何天气,系统都能开,甚至不需要方向盘 系统全权负责

核心观点:目前市面上量产车大多在L2到L2+之间。L3是个分水岭——责任从人转移到了系统。我在项目中遇到过,很多公司号称L3,其实只是L2.5,因为真正的L3需要解决“接管难题”:系统搞不定时,怎么安全地把控制权交还给昏昏欲睡的驾驶员?

1.2 自动驾驶系统架构(感知-决策-控制)

自动驾驶系统怎么工作?我打个比方:就像你开车去公司。

  • 感知:你的眼睛看路、看红绿灯、看行人。对应到车上,就是摄像头、激光雷达、毫米波雷达这些传感器。
  • 决策:你的大脑判断“前面红灯,该减速了”、“左边有车加塞,我让一下”。这就是决策规划模块干的事。
  • 控制:你的手脚执行大脑指令——踩刹车、打方向盘。对应到车上,就是转向、油门、刹车等执行器。

这三者缺一不可。但说实话,很多人容易忽略一个关键点:感知和决策之间有个巨大的鸿沟

感知模块输出的是“障碍物列表”、“车道线方程”这些数据。但决策模块需要的是“我该走哪条路”、“我该加速还是减速”这样的意图。怎么把原始数据变成驾驶意图?这就是咱们这门课要解决的核心问题。

我的经验:刚开始做决策规划时,我总想着把感知数据直接喂给规划器。结果发现,感知的一点噪声(比如障碍物位置抖动几厘米),就能让规划出的路径剧烈抖动。后来我加了一层“状态估计”和“场景理解”,才把这个问题压下去。嗯,这里要注意,数据预处理比算法本身更重要。

1.3 决策规划模块的核心地位与挑战

为什么说决策规划是“大脑”?我给你讲个真实案例。

有一次,我们测试车在园区里遇到一个“鬼探头”——一个小孩突然从两辆车之间冲出来。感知模块在50毫秒内就检测到了,控制模块的刹车响应也很快。但问题出在哪?决策模块花了200毫秒才决定“是急刹还是绕行”。这200毫秒的犹豫,差点出事。

你看,感知再准、控制再快,决策慢了或者决策错了,一切都白搭。这就是决策规划的核心地位——它决定了车辆的行为是否安全、是否合理、是否舒适。

那决策规划面临哪些挑战?我总结了几点:

  1. 不确定性:感知有误差,预测有偏差,其他交通参与者行为不可预知。你想想看,你连旁边司机下一秒会不会打转向灯都不知道,机器怎么知道?
  2. 实时性:车辆以60km/h行驶,每秒跑16.7米。决策必须在几十毫秒内完成,否则就是“黄花菜都凉了”。
  3. 安全性:这是底线。决策规划必须保证在任何情况下都不会导致碰撞。说白了,就是“宁可停车,不可撞人”。
  4. 舒适性:乘客不是来坐过山车的。急加速、急刹车、急转向,都会让人晕车。我见过一些算法,安全是安全了,但开起来像新手司机——一脚油门一脚刹车,乘客直骂娘。
  5. 场景复杂性:城市道路有红绿灯、人行横道、环岛、施工区……每个场景都需要不同的决策逻辑。我曾经为了处理一个“无保护左转”的场景,写了整整两周的规则代码。

避坑指南:千万不要试图用一套算法解决所有场景。我曾经犯过这个错——写了一个通用的决策树,结果在高速上表现很好,到了城市道路就各种“智障”。后来我学乖了,先做场景分类,再针对每个场景设计专门的决策策略。这叫“分而治之”。

好了,第一章就聊这么多。说白了,自动驾驶不是堆传感器,也不是拼控制精度,而是要让机器像人一样“思考”怎么开车。而决策规划,就是这个“思考”过程的核心。

下一章,咱们会深入聊聊决策规划模块的输入输出,以及它和感知、控制模块之间的接口到底长什么样。到时候我会拿出我实际项目中的代码,给大家拆解一下。

记住一句话:算法是骨架,工程是血肉,而经验是灵魂。咱们慢慢来。