FeaXDrive:基于扩散模型的自动驾驶轨迹生成与可行性约束优化

自动驾驶轨迹规划扩散模型
于 2026-05-28 03:04:32 修改
·本内容遵循CC 4.0 BY-SA版权协议

1. 项目概述与核心挑战

在自动驾驶的研发一线摸爬滚打十几年,我见过太多“纸上谈兵”的规划算法。它们在仿真排行榜上分数亮眼,但一旦放到真实世界的复杂路况中,生成的轨迹就可能暴露出各种问题:转弯半径过小导致车辆无法执行、轨迹点飘出车道线、或者为了追求“最优”而做出违背物理规律的急转。这些问题背后,都指向一个核心矛盾:如何让规划算法在追求高性能(如效率、舒适度)的同时,始终生成物理上可行、符合车辆运动极限的轨迹? 这就是“轨迹空间可行性”问题,它关乎的不只是分数,更是安全底线。

最近,扩散模型在轨迹生成上展现了惊人的潜力,它能生成多样、平滑的轨迹。但传统的扩散规划器,无论是噪声预测还是轨迹预测,其训练目标往往只盯着最终的基准测试得分(如碰撞率、进度)。这就像教一个学生只为了考试高分,却忽略了他解题步骤是否合理、书写是否规范。结果就是,模型可能学会了一些“投机取巧”的方式获得高分,但生成的轨迹在曲率连续性、与可行驶区域的对齐程度上存在隐患。

FeaXDrive 这个工作,正是直击了这一痛点。它不再把可行性当作事后的“安全检查”,而是将其作为核心设计理念,深度融入到模型训练、推理甚至后优化的每一个环节。其核心思路可以概括为:建立一个以轨迹为中心的扩散模型骨架,然后像给骨骼附着肌肉和神经一样,分层次地注入可行性约束。 具体来说,它在三个关键阶段动手术:

  1. 训练阶段:引入自适应曲率约束训练,让模型从数据中学到“什么样的轨迹是车辆能开出来的”。
  2. 推理阶段:在反向扩散采样时,加入可行驶区域几何引导,像有一个无形的护栏,实时将轨迹拉回安全区域内。
  3. 后训练阶段:改造主流的 GRPO 策略优化方法,使其奖励函数不仅看任务得分,还明确包含对轨迹可行性的偏好,防止强化学习微调“跑偏”。

接下来,我将结合论文中的核心公式与实验结果,为你层层拆解 FeaXDrive 是如何实现这一目标的,并分享在实际工程化中可能遇到的“坑”以及我的思考。

2. 核心架构:轨迹中心扩散模型

要理解 FeaXDrive 的改进,首先要明白它奠定的基础——轨迹中心的扩散模型。这与早期基于噪声预测的扩散规划器有本质区别。

2.1 从噪声中心到轨迹中心:范式的转变

在经典的 DDPM 或 DDIM 中,模型学习的是去噪过程,即预测给定带噪数据中的噪声。在规划任务中,这通常意味着模型直接预测添加到干净轨迹上的噪声。我称之为“噪声中心”范式。它的优化目标是让预测的噪声接近真实添加的噪声。然而,这个目标与最终我们关心的“干净的、可行的轨迹”之间存在一定的语义隔阂。

FeaXDrive 采用了“轨迹中心”的公式。简单来说,它让扩散模型直接去预测干净的轨迹,而不是噪声。这个转变看似微小,却意义重大。在反向扩散的每一步,模型根据当前带噪的轨迹状态和条件(如场景图像、历史状态),直接输出一个对干净轨迹的估计。这样做的好处是:

  • 目标对齐:模型的输出直接就是我们想要的规划结果(轨迹),训练目标与最终任务高度一致。
  • 可行性注入更自然:因为模型直接在轨迹空间进行操作,后续引入的曲率约束、可行驶区域引导等可行性信号,可以直接作用于这个干净的轨迹估计上,形成更直观、更有效的监督。
  • 统一建模基础:它为后续所有可行性感知模块提供了一个统一的、语义清晰的“操作界面”。无论是训练时的损失计算,还是推理时的引导,都可以直接在轨迹变量上进行。

论文中的公式(30)体现了这一点:GRPO 的策略优化项作用于整个去噪链 πθ(zk-1,n | zk,n, c),而 z0,n 就是最终生成的轨迹。轨迹中心的公式让这个优化过程能够更直接地关联到最终轨迹的质量和可行性上。

2.2 自适应曲率约束训练:让模型理解车辆的“物理极限”

这是 FeaXDrive 在训练阶段最核心的改进之一。曲率是描述轨迹弯曲程度的几何量,直接关系到车辆的转向能力和乘坐舒适性。一个曲率超过车辆最小转弯半径的轨迹,是物理上不可执行的。

2.2.1 静态与动态约束的结合

传统方法可能使用一个固定的曲率上限(例如,基于车辆最小转弯半径计算出的几何曲率 κ_geo)。但这是不够的。车辆在不同速度下能承受的侧向加速度是有限的,这导致了动态的曲率约束。高速过弯时,即使曲率没超过几何极限,过大的侧向加速度也可能导致失控。

FeaXDrive 采用了一种速度自适应的曲率约束。它结合了:

  1. 固定几何上限 (κ_geo):由车辆的最小转弯半径决定,这是硬性物理极限。
  2. 动态运动学上限:由最大允许侧向加速度 (a_lat_max) 和当前速度 (v) 决定,计算公式为 κ_dyn = a_lat_max / v²。速度越快,允许的曲率越小。

最终的曲率约束 κ_max 取两者中的较小值:κ_max = min(κ_geo, a_lat_max / v²)。这个设计非常符合实际驾驶直觉:低速时(如泊车),主要受限于转向几何;高速时(如高速匝道),主要受限于侧向加速度带来的稳定性与舒适性。

实操心得:参数设定的工程考量 论文中设定 κ_geo = 0.166 m⁻¹ (对应约6米转弯半径) 和 a_lat_max = 6 m/s²。这两个值需要根据具体车型仔细标定。

  • κ_geo 需要查阅车辆底盘手册,获取准确的最小转弯半径。对于卡车或大巴,这个值会大得多。
  • a_lat_max 的设定更为微妙。6 m/s²(约0.61g)对于乘用车是一个偏激进的舒适性上限,通常舒适性设计会在0.3-0.4g。这个值需要权衡乘坐体验和规划性能。设置过低会限制规划灵活性,过高则可能生成令人不适的轨迹。在实际项目中,我们通常会根据大量实车数据中驾驶员舒适过弯的侧向加速度分布来确定这个值。

2.2.2 约束如何融入训练

在训练时,模型除了要最小化轨迹预测的误差(如 L2 损失),还会受到曲率约束的惩罚。具体而言,如果模型预测的轨迹在任一点的曲率超过了对应的 κ_max,就会在损失函数中增加一项惩罚项。这个过程是“自适应”的,因为 κ_max 随着轨迹上每个点对应的预测速度(或历史速度)动态变化。

通过这种持续的、细粒度的惩罚,模型被强制学习到车辆的运动学包络线,从而在数据分布层面就倾向于生成曲率可行的轨迹。从表4的消融实验可以看出,加入“可行性训练”后,曲率违规率从7.51%骤降至0.13%,效果极其显著。

2.3 可行驶区域引导:推理时的“实时纠偏器”

训练让模型有了生成可行轨迹的“潜意识”,但在复杂的、未见过的场景中,模型仍然可能偶尔“走神”,生成偏离车道的轨迹。FeaXDrive 在推理阶段增加了一个轻量级的可行驶区域引导模块,作为安全网。

这个模块的核心思想是:在反向扩散采样的每一步,当模型预测出一个干净的轨迹估计 ẑ0 后,并不直接将其用于下一步的去噪,而是先计算这个估计轨迹与场景可行驶区域(通常表示为 Signed Distance Field, SDF)的偏差。如果轨迹点落在了非可行驶区域(SDF值为负),则计算一个梯度,将这个点“推回”到可行驶区域内,形成一个修正后的轨迹估计,再继续后续的去噪步骤。

你可以把它想象成在采样过程中引入了一个“势场”,轨迹点一旦靠近或越过可行驶区域边界,就会受到一个将其拉回的力。这个过程是迭代的、渐进的,因此对最终轨迹的形态影响更加平滑自然。

注意事项:引导强度的权衡 这个引导的强度系数是一个需要仔细调节的超参数。引导太弱,纠偏效果不明显;引导太强,可能会过度扭曲轨迹,破坏模型本身学到的合理运动模式,甚至可能导致规划失败(如陷入局部最优)。论文中提及该模块仅增加了4.41ms的延迟,说明其计算是高效的,但调参需要大量的闭环仿真测试。

3. 可行性感知的GRPO后训练

模仿学习(IL)训练出的模型,其性能天花板受限于专家数据。为了进一步提升规划性能(如更快的通行效率、更少的碰撞),业界常采用强化学习(RL)进行后训练。GRPO 是一种高效的策略优化方法,但传统GRPO的奖励函数通常只包含基准测试指标(如进度、舒适度、碰撞等),这可能导致策略为了刷分而牺牲可行性。

3.1 奖励函数的重构

FeaXDrive 的关键创新在于重构了 GRPO 的奖励函数 R(·),使其显式地包含了对轨迹可行性的偏好: R(ẑ0, c) = R_task(ẑ0, c) + λ_fea * R_fea(ẑ0, c) 其中:

  • R_task:衡量任务级规划质量,即传统的基准指标得分。
  • R_fea:代表轨迹可行性偏好,在本文中主要由前述的速度自适应曲率可行性来表征。
  • λ_fea:权衡系数,用于平衡任务性能与可行性。

这意味着,在GRPO的组内比较中,一条即使任务得分稍高但曲率违规严重的轨迹,其综合奖励可能会低于一条得分稍低但完全可行的轨迹。从而引导策略优化朝着“高性能且可行”的方向进化。

3.2 行为克隆正则化:防止“放飞自我”

强化学习微调一个常见风险是“灾难性遗忘”或策略漂移,即模型为了最大化奖励,完全偏离了模仿学习阶段学到的安全、合理的驾驶模式。为了解决这个问题,FeaXDrive 在优化目标中加入了行为克隆正则化项 L_BCL = L_GRPO + λ_BC * L_BC L_BC 约束当前策略与一个固定的参考策略(通常是IL训练好的模型)的输出分布保持接近。λ_BC 控制着保守与探索的强度。这个设计确保了后训练过程是在一个相对安全的“信任域”内进行优化,避免了策略变得激进或不稳定。

3.3 效果验证:在性能与可行性间取得平衡

从论文表5的结果可以清晰看到这种设计的效果:

  • 标准GRPO:将 PDMS 从 88.75 提升到 90.56,但曲率违规率从 0.88% 飙升到 5.79%。这是典型的“刷分”行为,以牺牲可行性换取基准性能。
  • 可行性感知GRPO (FA-GRPO):将 PDMS 提升到 90.00,同时将曲率违规率控制在 2.40%。虽然绝对性能提升略低于标准GRPO,但它用极小的性能损失(PDMS -0.56),换来了可行性的大幅保留(违规率 +1.52% vs. +4.91%)。

这在实际工程中是一个非常重要的权衡。一个违规率高达5.79%的规划器,意味着每100次规划中就有近6次可能产生物理上难以执行的轨迹,这在安全至上的自动驾驶系统中是难以接受的。FA-GRPO 找到了一個更实用的平衡点。

4. 实验分析与工程启示

4.1 整体性能与可行性提升

在 NAVSIM 基准测试上,FeaXDrive 展现出了全面的优势(表2):

  • 仅模仿学习 (IL):FeaXDrive-IL 取得了最高的 PDMS (88.7),尤其是在自我进度 (EP) 和可行驶区域合规率 (DAC) 上领先,说明其基础性能就很扎实。
  • 后训练后:FeaXDrive (FA-GRPO) 的 PDMS 达到 90.0,虽略低于 ReCogDrive w/GRPO (90.5),但其 DAC 高达 98.3,是所有方法中最高的。这表明 FeaXDrive 生成的轨迹与道路结构的贴合度最好。

更关键的是可行性指标(表3):FeaXDrive-IL 的曲率违规率仅为 0.88%,远低于其他扩散基线(~8%)。经过 FA-GRPO 后,违规率上升到 2.40%,但仍远低于 ReCogDrive w/GRPO 的 15.5%。这强有力地证明了整套可行性感知设计的有效性。

4.2 各模块的贡献分解

表4的消融实验像一份清晰的“贡献度报告”:

  1. 轨迹中心化:是性能提升的基础,将 PDMS 从 85.32 提升至 86.56,同时降低了两种违规率。
  2. +曲率约束训练:对基准指标影响甚微,但将曲率违规率从 7.51% 降至惊人的 0.13%。这是解决运动学可行性的核心。
  3. +可行驶区域引导:进一步将 PDMS 提升至 88.75,DAC 提升至 97.46,同时将可行驶区域违规率减半。这是解决几何可行性的关键。

这说明,曲率约束训练和可行驶区域引导解决了不同维度的可行性问题,它们相互补充,共同构建了完整的轨迹空间可行性保障。

4.3 推理效率分析

对于车载计算平台,效率至关重要。图5的延迟分解显示:

  • 总延迟 348.73ms,对于10Hz的规划周期(100ms)来说显然过高,但这主要是受限于庞大的视觉-语言模型(VLM)骨干网络(占70.3%)。
  • 可行性感知组件开销极低:局部SDF构建 16.03ms (4.6%),可行驶区域引导仅 4.41ms (1.3%)。
  • 核心启示:可行性感知的算法开销,在当今以大型感知模型为主导的端到端架构中,占比很小。这意味着为规划系统增加可行性保障,其计算代价是完全可以接受的。未来的优化重点应放在轻量化VLM或更高效的视觉编码器上。

4.4 定性结果展示

图6的对比非常直观。与噪声中心基线相比,FeaXDrive 生成的轨迹:

  • 更平滑:消除了局部几何不规则和抖动。
  • 运动学更合理:转弯曲线曲率变化连续,无急弯。
  • 与道路贴合更好:轨迹始终保持在可行驶区域内。

这些可视化结果与定量指标相互印证,证明了方法在真实场景中的有效性。

5. 实战部署考量与常见问题

将 FeaXDrive 这类研究转化为实际产品,还需要跨越不少工程鸿沟。

5.1 真实场景下的挑战与调优

  1. 传感器噪声与感知不确定性:论文在 NAVSIM 这类高质量仿真数据上验证。现实中,感知提供的可行驶区域边界、障碍物位置都存在噪声和不确定性。直接使用感知边界进行严格的SDF引导,可能会因为感知抖动导致规划轨迹抖动。解决方案:需要对感知输出进行时间滤波和平滑,或者在SDF计算中引入一定的“缓冲带”(Buffer Zone),允许轨迹在边界附近有一定容忍度,避免过度反应。

  2. 动态障碍物交互:当前工作主要关注静态几何可行性。但在拥堵、换道、交叉口等场景,与动态障碍物的交互避让是首要任务,这可能与严格的曲率约束产生冲突。解决方案:需要将动态障碍物的预测与可行性约束进行联合优化。例如,在奖励函数 R_fea 中,除了曲率和可行驶区域,还应加入与动态障碍物的安全距离(TTC)、礼貌性等指标。这要求奖励函数的设计更加复杂和精细。

  3. 车辆模型与参数标定:文中使用的简化自行车模型和固定的 a_lat_max 对于复杂机动(如低速大转角、轮胎非线性区域)可能不够精确。解决方案:对于高性能或特殊车型,需要集成更精确的车辆动力学模型(如双轨模型)来计算可行的加速度/曲率包络。a_lat_max 甚至可以设计为随路面附着系数(估算)动态调整。

5.2 故障排查与调试技巧

  1. 轨迹曲率突然尖峰

    • 可能原因:曲率约束损失权重过大,导致模型在训练初期难以优化;或是在某些极端场景(如急弯)数据不足。
    • 排查:可视化训练过程中损失曲线,观察曲率约束损失是否震荡或居高不下。检查数据集中曲率分布,确保覆盖足够的高曲率场景。
    • 解决:尝试使用退火策略,在训练初期给曲率约束一个较小的权重,随着训练进行逐渐增加。或者,对高曲率场景进行数据增强。
  2. 可行驶区域引导导致轨迹“卡住”或振荡

    • 可能原因:引导强度系数过大;SDF计算存在数值不稳定(如边界处梯度突变);规划场景过于复杂(如死胡同)。
    • 排查:在典型失败场景(如窄路掉头)进行单步调试,观察每一步轨迹修正的幅度和方向。检查SDF场的平滑性。
    • 解决:降低引导强度;对SDF场进行高斯平滑滤波;引入基于优化(如CEM)的备用规划器,当扩散规划器多次引导失败时触发。
  3. FA-GRPO 后训练效果不显著或变差

    • 可能原因:可行性奖励 R_fea 与任务奖励 R_task 的量级不匹配,导致其中一个主导了优化方向;行为克隆权重 λ_BC 设置不当。
    • 排查:记录和分析训练过程中各组奖励分量的均值、方差。观察策略熵的变化,判断是过于保守还是过于激进。
    • 解决:对 R_taskR_fea 进行归一化,使其具有可比的数量级。动态调整 λ_BC,在训练初期保持较大值以稳定策略,后期适当减小以允许更多探索。

5.3 扩展与未来方向

FeaXDrive 为我们提供了一个优秀的框架,但仍有扩展空间:

  • 更统一的可行性建模:将更多可行性因素(如加加速度、轮胎摩擦圆、交通规则)统一纳入 R_fea 的设计中。
  • 轻量级场景先验:探索不依赖高精度地图的轻量级场景表示(如在线构建的局部占据栅格),以提升系统的泛化能力。
  • 与预测模块的耦合:目前的规划是开环的(假设其他交通参与者轨迹不变)。更先进的系统需要与预测模块紧密耦合,进行联合的、考虑交互的可行性评估与规划。

在我个人看来,FeaXDrive 最大的价值在于它提供了一种系统性的思维:将安全性、可行性这类硬约束,从传统的事后校验或惩罚项,提升为贯穿模型设计始终的核心优化目标。它告诉我们,一个可靠的自动驾驶大脑,不仅要比谁开得快、开得顺,更要比谁开得“稳”、开得“准”。这项工作的思路,对于任何将深度学习应用于安全关键决策的领域(如机器人、金融风控),都具有重要的借鉴意义。在实际项目中,我们或许不会完全照搬其架构,但这种“可行性贯穿”的设计哲学,是每一位算法工程师都应该深入思考和实践的。