战斗包子
如何突击应付一下规控面试

如何突击应付一下规控面试

自动驾驶“大脑”揭秘:从模块化到数据驱动的规控框架

1. 自动驾驶规控框架:解耦 vs 统一

模块解耦 (Modular)

这套架构是自动驾驶领域的“经典范式”,它将复杂的驾驶任务拆分为一系列独立的子模块,串联工作,各司其职。

  • 输入: 激光雷达 (Lidar) / 摄像头 (Camera) / 毫米波雷达 (Radar)
  • 中间算法: 感知 (Perception) \rightarrow 定位 (Localization) \rightarrow 规划 (Planning) \rightarrow 控制 (Control)
  • 输出: 转向 (Steering) / 加速 (Acceleration) / 刹车 (Brake)

优点:

  • 过程可控,高度可解释: 每个模块的输入和输出都清晰定义。如果车辆刹车太急,工程师可以精确定位到是规划模块的决策问题,还是控制模块的执行问题。
  • 方便调试与迭代: 可以对单个模块(如感知)进行独立的优化和升级,而不影响其他部分。

缺点:

  • 信息损失: 信息在模块间传递时是“有损”的。例如,感知模块将丰富的 3D 传感器数据压缩为几个“检测框”和“类型”,规划模块并不知道这个“框”的置信度是 99% 还是 51%。
  • 长尾问题与架构臃肿:

    到底什么是“长尾问题” (Long-Tail Problem)?
    它是指那些发生概率极低、但种类繁多的边缘驾驶场景。例如:

    • 一个塑料袋在高速公路上迎面飞来。
    • 前方卡车掉落一个床垫。
    • 一个cosplay成路障的行人。

    为了处理每一个长尾场景,工程师被迫在规划模块中手动添加大量的 if-else 规则补丁(例如:if 看到塑料袋 then 忽略;if 看到床垫 then 紧急刹车)。随着解决的长尾问题越来越多,规划模块的规则库变得无比庞大、混乱,架构变得臃肿不堪,最终难以维护和扩展。


端到端 (End-to-End)

这套架构是“新势力”的代表(如特斯拉),它试图用一个(或少数几个)庞大的神经网络模型,来模拟人类驾驶时“看到即反应”的直觉过程。

  • 输入: Lidar / Camera / Radar (原始数据或特征)
  • 中间算法: 一个或多个大型神经网络 (Deep Neural Network)
  • 输出: Steering / Acceleration / Brake (有时是轨迹点)

优点:

  • 信息无损传递: 原始的传感器信息被直接(或以特征形式)输入到网络中,网络可以自行学习哪些细微特征(如行人的微小姿态变化)对驾驶决策是重要的,避免了中间模块的信息压缩损失。
  • 擅长处理“模糊”场景: 对于那些难以用规则定义的、需要“直觉”的复杂博弈场景(如十字路口无保护左转),数据驱动的模型可能表现更好。

缺点:

  • 黑盒与不可解释性: 这是最大的问题。如果车辆做出错误决策,很难回溯是网络中的哪个参数出了问题,这在安全至上的汽车行业是巨大的挑战。
  • 数据需求量极大: 需要海量的、覆盖各种场景的驾驶数据(尤其是长尾场景)来进行训练。
  • 泛化性不确定: 如果车辆遇到了一个训练数据中从未见过的全新长尾场景,其反应可能是灾难性的、不可预测的。

2. 轨迹生成方式:如何画出“下一秒”的路径

无论采用哪种框架,规划模块的核心任务之一是生成轨迹。这要求轨迹不仅要安全(不碰障碍物),还要舒适(乘客不晕车)且高效(符合动力学)。

搜索 (Search-based)

将世界看作一幅地图(栅格地图或状态空间),然后使用图搜索算法找到一条最优路径。

  • 代表算法: A* (A-star), D*, Hybrid A* (混合A*)
  • 工作方式: Hybrid A* 算法会考虑车辆的运动学约束(如不能横着走),在 3D 空间 (x,y,θ)(x, y, \theta) 中搜索一条从当前位置到目标的、成本最低的路径。
  • 优缺点: 优点是完备性(只要有解就能找到)和最优性(在给定成本函数下)。缺点是在开阔空间或高维空间中计算量巨大

采样 (Sampling-based)

当环境极其复杂、搜索算法“算不过来”时,采样法提供了一种“另辟蹊径”的思路。

  • 代表算法: RRT (Rapidly-exploring Random Trees), RRT*。
  • 工作方式: 算法在空间中“随机”撒点(采样),并尝试将这些点连接起来,快速探索可行空间,直到连接到目标。
  • 优缺点: 优点是速度极快,特别擅长在高维和复杂(如非结构化越野路面)的环境中快速找到一条可行的路径。缺点是找到的路径通常不是最优的(RRT* 会优化)。

数值优化 (Numerical Optimization-based)

这是目前业界最主流的高质量轨迹生成方法。它将轨迹规划问题“翻译”成一个数学优化问题。

  • 工作方式:
    1. 定义轨迹: 将轨迹表示为一组数学参数(例如,一个五次多项式 f(t)f(t) 的系数)。
    2. 定义目标函数 (Cost): 定义一个“成本”,例如:Cost=w1×(安全)+w2×(舒适)+w3×(效率)\text{Cost} = w_1 \times (\text{安全}) + w_2 \times (\text{舒适}) + w_3 \times (\text{效率})
    3. 定义约束 (Constraint): 定义车辆必须遵守的“红线”,例如:不能超过道路边界、不能超过最大加速度、必须避开障碍物。
    4. 求解: 使用数学求解器(如 QP 或 NLP 求解器)找到一组参数,使得在满足所有约束的前提下,成本 (Cost) 最小
  • 优缺点: 优点是能生成极其平滑、舒适、且满足车辆动力学的高质量轨迹。缺点是计算量较大,且可能陷入局部最优(找到一个“好”解,但不是“最好”解)。

3. 决策和规划的算法框架

在生成具体轨迹之前,车辆必须先做“决策”(比如,是“超车”还是“跟车”)。规划框架就是指如何组织决策和轨迹生成的过程。

时空解耦 (Spatio-temporal Decoupling)

这是最经典、最容易理解的规划方式。它将一个复杂的规划问题强行拆解为两个更简单的、串行的步骤。

  • 别名: 横纵向解耦 (Lateral/Longitudinal Decoupling)。
  • 工作流程:
    1. 横向规划 (Path Planning): 先不考虑速度,只在 2D 地图上规划出一条几何路径(例如,是保持在车道中间,还是规划一条换道曲线)。
    2. 纵向规划 (Speed Planning):上一步规划好的固定路径上,规划速度。通常使用 ST 图 (Spatio-Temporal Graph) 来寻找一个最优的速度曲线,以避开路径上的动态障碍物。
  • 优点:
    • 计算简单: 将一个高维问题(x,y,tx, y, t)降维成两个低维问题(x,yx, ys,ts, t),计算速度快。
    • 逻辑清晰: 易于理解和调试。
  • 缺点:
    • 次优解: 由于先规划路径再规划速度,这种“割裂”会导致规划出的轨迹不是全局最优的。例如,一个在横向规划时看起来“完美”的路径,在纵向规划时可能发现无论如何都会与障碍物碰撞。

时空联合 (Spatio-temporal Joint)

这是对“解耦”方法的改进。它认为横向和纵向的决策必须同时进行,因为它们是强耦合的(例如,“打方向盘换道”和“加速”必须同时考虑)。

  • 工作流程:
    • 不分先后,同时规划车辆在未来一段时间内 (x,y,v,a,t)(x, y, v, a, t) 的完整轨迹。
    • 这通常通过数值优化(如上所述)来实现,在一个统一的优化问题中,同时求解路径和速度。
  • 优点:
    • 更优的解: 能够规划(“规避”)时空解耦法无法处理的复杂场景,规划出更安全、更高效的轨迹。
    • 处理动态场景: 在处理高速公路汇入、密集障碍物规避时表现更出色。
  • 缺点:
    • 计算复杂度高: 求解一个高维的联合优化问题,对算力要求极高。
    • 调试困难: 难以平衡规划的“探索性”(尝试不同的轨迹)和“实时性”(必须在 100 毫秒内出结果)。

数据驱动 (Data-Driven Planning)

这是目前最前沿的规划框架,它试图用数据和模型的力量,来克服传统“规则”规划的局限性,尤其是解决长尾问题

  • 核心思想: 驾驶决策不应该完全依赖工程师写的“规则”,而应该从海量数据中“学习”如何像人类一样驾驶。
  • 实现路径(由浅到深):
    1. 辅助传统规划 (Model-based):
      • 用深度学习模型来优化传统规划的“输入”
      • 示例: 训练一个神经网络来预测其他车辆的意图(“它 3 秒后会换道”),然后将这个“预测轨迹”作为“虚拟障碍物”输入给一个时空联合的优化规划器。这是目前最主流的融合方案。
    2. 模仿学习 (Imitation Learning):
      • 训练一个神经网络,使其直接模仿人类“老司机”的驾驶决策。
      • 示例 (规划层): 输入传感器数据(或 BEV 特征),模型直接输出一条未来几秒的驾驶轨迹(x,yx, y 坐标点)。
      • 优点: 模型的决策“自带”人类驾驶的“常识”和“风格”,在处理复杂博弈时(如环岛)可能更像“人”。
      • 缺点: 模型的上限取决于“老司机”的水平;且模型只会“模仿”,遇到新场景时可能鲁棒性不足。
    3. 强化学习 (Reinforcement Learning):
      • 在模拟器中训练一个“AI 智能体”,让它自己“试错”几万亿公里。
      • 工作方式: 通过设置“奖励”(如安全到达)和“惩罚”(如碰撞、急刹车),让 AI 自己学习在什么情况下做什么决策(规划)的“收益”最高。
      • 优点: 理论上的“天花板”最高,有可能超越人类水平。
      • 缺点: 模拟器与现实的差距(Sim-to-Real Gap)难以弥合;奖励函数极难设计。

4. 总结

自动驾驶的“大脑”——规控系统,正处在一次深刻的变革中。

本文所展现的框架,清晰地揭示了规划控制技术从“手工规则”到“数据驱动”,从“串行解耦”到“并行联合”的演进趋势。数据驱动,正在成为解决传统模块化架构“长尾问题”的必然选择,也是通往 L4/L5 级自动驾驶的必经之路。



🎁 福利:自动驾驶规划岗面试“送命题”

如果你能清晰地回答出以下问题,那么恭喜你,你已经对自动驾驶规控领域有了深刻的理解。

1. 宏观架构与理念 (Macro-Architecture & Philosophy)

  1. “请对比一下模块化(Modular)和端到端(End-to-End)架构的优缺点。”
    • 考察点: 对行业两条主流路线的基本理解。
  2. “你刚才提到了‘长尾问题’,请具体解释一下它是什么?为什么它会导致模块化架构变得‘臃肿’?”
    • 考察点: 是否抓住了模块化架构的真正痛点(即 if-else 补丁的无限叠加)。
  3. “既然端到端有信息无损的优势,为什么现在(大部分)的主机厂和方案商没有完全采用它?它的核心瓶颈是什么?”
    • 考察点: 对技术落地的现实思考。答案应围绕:可解释性安全性验证海量数据泛化能力

2. 轨迹生成算法 (Trajectory Generation Algos)

  1. “请对比一下基于搜索、基于采样和基于数值优化的轨迹生成方法。你会在什么场景下分别使用它们?”
    • 考察点: 知识的广度。
  2. “(追问)如果要做一个‘停车场自主泊车’的路径规划,你倾向于用哪种?如果是在‘高速公路巡航’呢?”
    • 考察点: 技术的落地与选型。
    • 提示: 泊车(低速、复杂、非结构化) \rightarrow Hybrid A* 或 RRT*。高速(结构化、动态、需平滑) \rightarrow 数值优化。
  3. “在使用‘数值优化’方法时,你的‘成本函数’ (Cost Function) 通常会包含哪些项?”
    • 考察点: 对优化方法实践的理解。
    • 提示: 安全 (离障碍物的距离)、舒适 (加速度/加加速度Jerk的变化)、效率 (跟车距离、巡航速度)、规范 (离车道中心的距离)。

3. 规划框架 (Planning Frameworks)

  1. “请解释一下‘时空解耦’和‘时空联合’规划。它们的关键区别和取舍 (Trade-off) 是什么?”
    • 考察点: 对核心规划框架的理解。
    • 提示: 关键在于“解耦”是先路径后速度,导致次优解;“联合”是同时求解,效果好但计算量大
  2. “在‘时空解耦’规划中,你经常会听到‘ST 图’,请解释一下它是什么,以及它是如何用来做速度规划的?”
    • 考察点: 对经典工具的掌握。
    • 提示: S (空间) - T (时间) 图,将动态障碍物在未来一段时间的轨迹投影到自车规划好的路径上,形成“S-T 障碍物”,然后规划器在 S-T 空间中搜索一条“躲开”这些障碍物的曲线。

4. 数据驱动与情景题 (Data-Driven & Scenarios)

  1. “(前沿问题)如果不做‘端到端’,数据驱动(深度学习)能为‘传统规划器’提供什么帮助?”
    • 考察点: 对混合方案的思考,这是目前业界的主流。
    • 提示: 预测(其他车辆的意图和轨迹)、学习成本函数(用数据学习 Cost Function 的权重)、生成候选轨迹(用模型生成几条“像人”的轨迹,再由优化器筛选)。
  2. “(情景题 1)你的车在高速上遇到一个‘塑料袋’,模块化的规划系统可能会因为感知将其报为‘未知障碍物’而紧急刹车。你会如何从架构上‘修复’这个问题?”
    • 考察点: 解决长尾问题的思路。
    • 提示: 从感知(增加分类)、到规划(增加规则)、再到数据驱动(学习“可碾过”属性)。
  3. “(情景题 2)为什么‘拉链式汇合’ (Zipper Merge) 或‘无保护左转’对传统规划器来说是公认的难题?”
    • 考察点: 对规划博弈的理解。
    • 提示: 这类场景需要与他车进行“博弈”(试探、谦让、强硬),而传统基于规则的系统很难描述这种博弈,而数据驱动(尤其是模仿学习)更擅长处理这种“类人”的交互。
本文作者:战斗包子
本文链接:https://paipai121.github.io/2025/10/29/工作/如何突击应付一下规控面试/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可