自动驾驶技术栈:初学者心智模型
如果你来自软件或机器学习背景,自动驾驶汽车(AV)内部的多数组件对你来说应该都很熟悉——检测器、跟踪器、优化问题、坐标变换以及大量的传感器数据。但一开始难以理解的是,这些组件如何连接成一个统一的系统,让一个两吨重的物体在现实世界中无需监督地行驶。
这篇文章将帮你建立这个心智模型。我会依次讲解自动驾驶的分级、经典 AV 流水线、传感器及其融合原因,以及主要的功能模块(感知、定位、预测、规划、控制)。我会保持在入门到中等深度,不涉及任何单一组件的内部数学原理。
1、SAE 自动驾驶分级
几乎每场关于自动驾驶汽车的严肃讨论都始于 SAE J3016 [1] 定义的分级标准。它描述了从 L0 到 L5 的六个级别,依据谁负责驾驶任务以及执行任务的条件。
- L0:无自动化。 人类做所有事。可能有预警系统,但系统不驾驶。
- L1:驾驶辅助。 系统控制转向或加速/制动之一,但不能同时控制两者。自适应巡航控制是典型例子。
- L2:部分自动化。 系统同时控制转向和加速/制动,但人类必须持续监督并随时接管。目前市场上大多数"自动驾驶"风格的功能都是 L2。
- L3:有条件自动化。 系统在定义的运行设计域(ODD)内执行全部动态驾驶任务,但人类必须在系统请求时随时准备接管控制。
- L4:高度自动化。 系统在其 ODD 内处理一切,无需人类干预。在该 ODD 之外,系统根本不运行。大多数机器人出租车部署目标为 L4。
- L5:完全自动化。 系统可以在任何条件下、在任何有能力的驾驶员能开的地方行驶。目前尚无任何产品达到这一级别。
最重要的分界线在 L2 和 L3 之间。在此之下,人类是后备方案。从 L3 往上,机器在运行时负责。这一转变彻底改变了系统必须如何设计和验证的方式。
2、经典 AV 流水线
组织自动驾驶系统最常见的方式是模块化流水线 [2]。数据单向流动,从原始测量到执行器指令:
(1) 感知 → (2) 认知 → (3) 定位 → (4) 预测 → (5) 规划 → (6) 控制
每个模块消费前一个模块的输出,并为下一个模块提供清晰的接口。这种模块化使系统可测试:你可以单独评估感知模块,更换规划器而不影响检测器,并为每个团队分配明确的所有权。代价是错误会传播——感知错误变成预测错误,再变成规划错误。
3、传感器与传感器融合
AV 不依赖单一传感器,因为没有哪个传感器能独立胜任。通常的传感器套件结合了多种互补的模态 [3]。
摄像头 成本低、分辨率高、语义丰富。它们看到颜色、纹理、车道标线和交通灯。弱点是深度(单个摄像头无法直接测量距离)以及在低光、眩光和恶劣天气下的鲁棒性。
LiDAR 以点云形式提供精确的 3D 几何信息,测距好、深度直接。它对光照的敏感性远低于摄像头。缺点是成本高、远距离角密度低,以及在暴雨、雾或雪中性能下降。
雷达 通过多普勒效应直接测量距离,更重要的是径向速度。它在恶劣天气和远距离下表现良好,但角分辨率低,因此在描述物体形状方面较弱。
IMU(惯性测量单元)提供高频加速度和角速度,用于跟踪其他传感器更新之间的自车运动。GPS/GNSS 提供地图上的绝对位置,但存在米级误差,在城市峡谷或隧道中可靠性差。
以上每一种都不足够。传感器融合就是将它们结合起来,用一种传感器的优势弥补另一种的弱点。雷达回波确认摄像头检测到的物体正向你移动;LiDAR 几何信息锐化了摄像头分类的边界框;IMU 桥接了低频率 GPS 定位之间的间隙。融合可以在早期(检测前合并原始测量)、晚期(每种模态产生检测结果后再合并)或介于两者之间进行。选择对精度、延迟和故障行为有实际影响,并且仍然是一个活跃的研究领域。
4、感知:将像素和点云变为物体
感知是机器学习最集中的地方,可能也是你最快认出的部分。它的工作是将原始传感器数据转换为场景的结构化描述。三个核心任务构成其主体。
目标检测 定位并分类车辆周围动态和静态障碍物:其他汽车、行人、自行车和交通标志。在 AV 中,检测通常在 3D 空间完成,生成带有位置、尺寸和航向的有向边界框,而不仅仅是 2D 图像框。
分割 为每个像素(语义分割)或每个点(点云分割)分配类别标签,有时还会分离个体实例 [4]。系统通过这种方式推理可行驶路面、车道边界、人行道和植被。
跟踪 将检测结果在时间上关联起来,使物体在帧间保持一致的标识。跟踪将一系列独立的快照转化为带有速度和加速度的轨迹,这正是下一阶段所需要的。
5、定位与建图
感知告诉车辆周围有什么。定位告诉车辆它在哪里——而且它需要的答案远比 GPS 能提供的精确得多。车道级驾驶要求厘米级而非米级的精度。
主流方法使用 HD 地图 [5]。这些不是给人看的导航地图;它们是密集的、机器可读的表示,编码了车道几何、车道连通性、停车线、交通灯位置等语义层。车辆通过将其实时 LiDAR 或摄像头观测结果与存储的特征进行匹配,从而在该地图上定位自身,即使在 GPS 不可靠时也能获得精确位姿。
相关的概念是 SLAM(同步定位与建图)。概念上,SLAM 在未知环境中构建地图,同时估计车辆在该地图中的位置。HD 地图本身通常最初就是通过这种方式构建的,当先验地图不完整时车辆也可以这种方式运行。对于在已知运行区域行驶的 AV,常见模式是一次性离线构建 HD 地图,在驾驶过程中在线与之匹配定位。
6、预测与运动规划
仅仅知道每个智能体当前在哪里不足以安全驾驶。车辆必须预测未来几秒内它们的位置。预测估计周围智能体的未来轨迹,并且本质上是多模态的 [5]:接近十字路口的汽车可能转弯或直行,一个好的预测器应表示两种可能性及其概率,而不是做出单一猜测。
规划随后决定车辆应该做什么。它通常分为两个尺度。行为或决策规划选择高层动作(跟车、变道、让行、停车)。运动或轨迹规划生成实际的路径和速度剖面,即一系列状态,这些状态无碰撞、遵守交通规则、保持在车辆物理限制内并使乘客舒适。规划器直接消费预测输出,因为安全规划取决于其他智能体预期会做什么。
7、控制
最后一个模块——控制——接收规划的轨迹并计算执行器执行的底层命令:转向角、油门和刹车。PID 和模型预测控制(MPC)等经典控制器在此仍然是标准。控制以高频率运行,通过纠正车辆实际位置与规划应处位置之间的差异来形成闭环。
8、端到端 vs. 模块化流水线
我描述的流水线是模块化视图,它在已部署系统中仍然是主导范式,因为它可解释、可调试且易于分配责任。
与之竞争的是端到端学习范式,其中单个神经网络或多或少直接将传感器输入映射到驾驶动作,无需手工设计的模块边界。其前景在于模型可以学习工程师不会手工设计的表示和权衡,并且错误被联合优化而非局部修复。代价是可解释性和验证:当系统失败时,很难说是哪部分出了问题,而且黑箱驾驶策略难以通过安全认证。在实践中,该领域正朝着混合设计方向发展,即保持一定的模块化结构,同时联合学习技术栈的更大组成部分。这场争论远未尘埃落定。
9、难点:长尾问题
如果上述架构看起来可行,那是因为驾驶中容易的 95% 确实是可行的。困难在于长尾问题:那些罕见、奇怪的情况——系统只是偶尔遇到但仍必须正确处理。高速公路中间的床垫、穿着奇装异服的人、标志矛盾的施工区域、逆行的应急车辆。
这些边缘情况之所以困难,正是因为它们罕见——这意味着可学习的数据很少,测试的机会也很少。这联系到该领域的核心开放问题:安全验证。统计上证明系统足够安全以移除人类需要巨大的里程数,而普通的路测并不足以覆盖危险情况。目前大量工作投入仿真、场景生成和形式化方法以攻克这一缺口。
10、结束语
自动驾驶汽车不是一个模型。它是一个感知环境、建立场景理解、精确定位自身、预测他人行为、规划安全运动并执行这些规划的系统——全部在紧密的循环中实时完成。模块化流水线为你提供了一种清晰的推理方式,即使实际系统通过可学习组件模糊了边界。
原文链接: The Self-Driving Car Stack: A Mental Model for Engineers New to Autonomy
汇智网翻译整理,转载请标明出处