三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

为什么现在大家搞 Anchor Trajectory、Diffusion Policy、World Model,而不是直接像传统规划一样撒一堆 Reeds-Shepp / Dubins 曲线,然后挑一

为什么现在大家搞 Anchor Trajectory、Diffusion Policy、World Model,而不是直接像传统规划一样撒一堆 Reeds-Shepp / Dubins 曲线,然后挑一

有个疑问:为什么现在大家搞 Anchor Trajectory、Diffusion Policy、World Model,而不是直接像传统规划一样撒一堆 Reeds-Shepp / Dubins 曲线,然后挑一条最优的?

传统撒点规划解决的是“可行轨迹搜索”问题,而扩散模型解决的是“驾驶行为分布建模”问题。

这是一个很好的问题。实际上你是在问:

为什么现在大家搞 Anchor Trajectory、Diffusion Policy、World Model,而不是直接像传统规划一样撒一堆 Reeds-Shepp / Dubins 曲线,然后挑一条最优的?

答案是:

传统撒点规划解决的是“可行轨迹搜索”问题,而扩散模型解决的是“驾驶行为分布建模”问题。

两者目标其实不一样。


Question.1 Reeds-Shepp 本质在干什么

RS曲线解决的是:

给定

  • 起点姿态
  • 终点姿态

求:

min ⁡ L \min LminL

满足:

∣ κ ∣ ≤ κ m a x |\kappa| \le \kappa_{max}κκmax

即:

最短可行路径问题

例如:

停车位 | | | ego

RS会产生:

左转 右转 倒车 前进

组合路径。


它不考虑:

  • 行人
  • 其他车辆
  • 红绿灯
  • 驾驶习惯
  • 社会交互

只考虑:

我的车能不能从A到B


Question.2 为什么自动驾驶不能只靠RS

假设路口:

Car B ↓ Car A → Ego

RS会得到:

方案1: 直接穿过去 方案2: 轻微绕行 方案3: 停车等待

从几何角度:

三条都合法。


但真正驾驶员会:

等Car B先走

原因是:

社会规则。


而:

RS不知道社会规则。

它只知道:

path_length curvature

所以:

RS生成的是:

p ( p a t h ∣ s t a r t , e n d ) p(path|start,end)p(pathstart,end)

而驾驶需要:

p ( p a t h ∣ s c e n e ) p(path|scene)p(pathscene)

这完全不是一个东西。


Question.3 Anchor Trajectory在干什么

例如4096个轨迹:

直行 左变道 右变道 减速 停车 让行 ...

实际上是在学习:

p ( τ ∣ s c e n e ) p(\tau|scene)p(τscene)

其中:

τ = t r a j e c t o r y \tau = trajectoryτ=trajectory

网络输出:

轨迹1 0.5 轨迹2 0.3 轨迹3 0.1 ...

这相当于:

未来驾驶行为词典

而不是:

几何路径词典

Question.4 Diffusion 为什么又比 Anchor 强

Anchor有一个问题:

词汇表有限。

例如:

4096条

覆盖不了所有情况。


扩散模型直接学习:

p ( τ ) p(\tau)p(τ)

或者:

p ( τ ∣ s c e n e ) p(\tau|scene)p(τscene)

不需要离散化。


训练:

真实轨迹 ↓ 加噪声 ↓ 学习去噪

推理:

高斯噪声 ↓ 迭代去噪 ↓ 轨迹

得到:

左绕 右绕 等待 缓慢通过

多个模式。

因此天然是:

连续空间多模态采样器。


Question.5 那扩散和RS的关系是什么

其实非常接近:

都在采样轨迹。

区别:

RS采样的是:

运动学可行轨迹

扩散采样的是:

人类驾驶轨迹

RS:

p ( τ ∣ v e h i c l e ) p(\tau|vehicle)p(τvehicle)

Diffusion:

p ( τ ∣ v e h i c l e , s c e n e , h u m a n ) p(\tau|vehicle,scene,human)p(τvehicle,scene,human)


Question.6 能不能直接撒很多RS曲线

当然可以。

很多系统就是这么干的。

例如:

  • Hybrid A*
  • State Lattice
  • EM Planner
  • Apollo Planning

都是:

撒轨迹 ↓ 打分 ↓ 选最优

例如:

5000条RS轨迹

完全没问题。


但问题来了:

如果是复杂交互:

行人突然穿行 前车礼让 路口博弈

需要撒多少?

可能:

50万条 500万条

才能覆盖。


搜索空间爆炸。


Question.7 扩散其实是在学习“如何撒点”

这是最核心的一点。

传统:

随机撒

或者:

规则撒
RS1 RS2 RS3 ... RS50000

扩散:

直接学:

人类会撒在哪里

然后只生成:

几十条 几百条

高概率轨迹。


相当于:

暴力搜索

变成

学习引导搜索

Question.8 RL + RS 能不能替代轨迹规划

严格说:

RL + RS 仍然属于轨迹规划。

例如:

RS生成1000条候选 ↓ RL网络评分 ↓ 选择最佳

这叫:

Learning-based Planner

或者:

RL-guided Planning


它没有消灭规划。

只是把:

Cost Function

变成:

Neural Network

Question.9 为什么现在大量论文用 Diffusion + RL

因为Diffusion和RL分工明确:

Diffusion负责:

Generate

生成合理候选轨迹。


RL负责:

Evaluate

评估长期收益。


流程:

Scene ↓ Diffusion ↓ 20条高质量轨迹 ↓ RL Value Network ↓ 选择最优

而不是:

Scene ↓ 50万条RS ↓ 搜索

计算量小很多。


从自动驾驶发展的角度看:

  • Dubins / Reeds-Shepp:解决“车能不能这么走”。
  • Hybrid A*:解决“怎么搜索可行轨迹”。
  • Anchor Trajectory:解决“人通常会怎么走”。
  • Diffusion Policy:解决“连续空间里可能怎么走”。
  • RL:解决“长期来看哪条轨迹收益最高”。

因此RL + RS 并不会让轨迹规划消失,它更像是“传统规划 + 学习评分器”;而 Diffusion 想做的是直接学习轨迹分布,把大量无意义的 RS 搜索提前过滤掉。

← 返回列表