planning overview
Kong Liangqian Lv6

Introduction

notation

$X_i=\{x_{t-t_{obs}},…,x_{t-1},x_t\}$: 障碍物$i$的历史状态特征,每一个$x$有多维特征,2D或者3D的位置信息,heading, speed等

$X_{EV}$: ego vehicle的历史特征

$X_{SV}$: Surrounding Vehicles的历史特征

$\overline{X}_{SV}=\{X_1,X_2,…,X_m\}$: 周围所有车的历史特征

$Y_i = {y_{t+1}, y_{t+2}, . . . , y_{t+tpred} }$: 障碍物$i$的未来信息,一般也称为未来轨迹

$I$: 除未来轨迹和历史特征,其他场景信息,包括语义信息,交通灯,交通标志等

$\overline{X}=\{\overline{X}_{SV}, X_{EV}\}$: 所有障碍物车的历史体特征

任务定义

预测: 出一个概率分布

通过观测在$\overline{X}$中的m个障碍物的历史轨迹,出n个在$\overline{Y}$中的未来轨迹。$P_{pred}$为概率的一个分布,即解释了在预测中固有的不确定性。

规划:整一条好的轨迹给控制

我们定义一个函数$f$,用于做从输入$\overline{X}_{SV}, X_{EV}, I$到未来轨迹的$Y_{EV}$的映射

很多场景下,还会使用预测的结果$\overline{Y}_{SV}$作为输入

PLANNING

input 表征

在自动驾驶系统的规划阶段,输入表示主要分为两类:可解释的中间表示和隐含特征。

  • 可解释的中间表示:这种表示通常用于模块化的自动驾驶系统。planning模块基于感知模块输出的,经过后处理的的场景表示。栅格化和稀疏表示是模块化自动驾驶系统中planning模块常用的可解释输入表示。

  • 隐含特征:对于直接将传感器信息映射到未来动作的端到端自动驾驶系统,规划系统的输入$(X_{EV},\overline{X}_{SV})$和$I$将由潜在隐含特征。使用这种潜在隐含特征处是不需要手动工程化设计模块之间的接口。手工制作的接口必须适用于潜在驾驶场景的长尾分布,且任何被接口丢弃的信息都无法恢复。

    举个例子:如果一辆车当前被遮挡,但是可以通过其在另一辆车上的车灯反射来推断其存在,那么,使用边界框表示法、占用字段或者可供性这些方法将无法将这种信息传递给下游模块

    相反,隐含特征表示允许不确定性传播,使下游模块能够补偿早期阶段的错误。然而,隐含特征表示的主要缺点是缺乏可解释性。在出现故障的情况下,评估系统的哪一部分导致了错误非常困难。这使得调试和调整纯端到端系统特别困难。可解释的端到端系统试图通过产生额外的中间表示来弥补这一点。与模块化堆栈不同,这些可解释的中间输出不被规划器使用。相反,它们仅用于额外的监督和模型内省。

Output 表征

planning的输出通常是一系列的未来状态或者控制动作

  • 未来状态 :为什么是一系列的未来状态呢,因为通过预测未来的多个姿态,而不仅仅是下一个立即的姿态,可以提供更多的信息,帮助系统更好地学习和理解驾驶环境,从而提高其对未知情况的适应能力。这种方法有助于提高自动驾驶系统的稳定性和可靠性

  • 未来动作:如果输出是一系列的控制行为,考虑到每辆车的动力学特性可能会影响自动驾驶系统的行为。因此,将一种车辆的自动驾驶系统行为直接推广到其他车辆可能会受到限制。这是因为不同车辆的动力学特性可能会有所不同,这可能会影响自动驾驶系统的性能和行为。

GOAL conditioning

planning中,能否到达目的地是判断一条轨迹是否合适的重要指标。

如何把导航信息给到系统呢?目前有以下几种方式是比较流行的

  1. 把每一条lane标上是on-route还是off-route的状态,这相当于又通过多条lane的组合组成了route。
  2. 提供一组稀疏的目标点的位置来描述route
  3. 从GPS中获得,类似于左转右转这样的指令

我们定义了四种方式来描述这个goal信息如何应用到planning系统中

  • input features: 无论以什么方式表达导航信息,直接针对导航信息进行编码。如on-route和off-route的方式可以作为额外一层语义信息加入栅格化地图中。向量化的表达方式可以表达出道路中心线。需要注意的是,这样的直接编码方式难以保障一定能到达目的地

  • Separate submodules: 分拆为子模块,这些子模块只与高级命令一起使用,它们充当特定命令之间的切换开关。这种设置避免了数据集被单一驾驶模式(如车道跟随)所主导,因为每个模块只针对单一的高级命令进行训练。然而,这种方法需要预先定义固定数量的高级命令。

    这种方法的主要优点是可以避免数据集偏向某一种驾驶模式,但缺点是需要预先定义一定数量的高级命令,这可能限制了系统的灵活性

  • Hand-crafted routing cost: 第三种方式通过优化一个自己设计route-cost来规划轨迹。可以优先选择在route上能够走更多距离的轨迹,距离可以通过如下方式定义

    • 在给定稀疏目标位置的情况下,距离可以表示当前位置到目标点剩余的距离
    • 对于标注的车道,可以使用沿着这些车道的距离或者需要遵循这些车道所需的车道变更次数来衡量距离

    planner可以较好的权衡导航完成度和舒适性和安全性等其他考量因素,可以灵活的应对复杂的情况。例如,为了防止碰撞,它可以选择驶出道路。然而,安全性和舒适性与距离之间的权衡可能是不理想的。这意味着在某些情况下,为了保证安全和舒适,可能需要牺牲一定的进展速度。这可能会导致车辆的行驶速度降低,从而影响整体的行驶效率。这是自动驾驶系统在规划路径时需要考虑的一个重要因素。

  • route attention: 这可以通过从输入特征中移除地图的非路线部分,或者利用空间注意力机制来关注地图的相关部分来实现。

早期模型还没有加入导航,后期submodules 和 input features 占主导地位,现在的模型逐渐引入route-attention方式

planning 范式

回顾方程(5),本节主要聚焦于函数$f$如何建立。

一般我们都分为两个部分来建立该函数,第一部分一般是一个生成器$g$,生成一组合适的候选轨迹$\hat{Y}_{EV}^i, i=1,…,N$, 第二部分是建立一个选择器$h$, 在候选轨迹中选择一条轨迹$Y_{EV}$, 所以planning函数可以写为

下面讨论三种不同的范式来处理planning任务

  • Cost function optimization. 因为planning本来就是要寻找一条安全的,舒适度高的,通行效率高的轨迹,因此我们可以设计一个损失函数,来权衡这些指标来寻找一条最合适的轨迹,基于cost函数的planning方法完全依赖于函数$h$怎么选择

    这里c是一个损失函数。g在这里基本就是一个简单的采样器需要保证轨迹的可行性和符合运动学规律。一般可以通过随机采样来生成,或者通过查看真实世界中的驾驶行为(专家演示)并对其进行聚类来生成。

    传统方法是完全基于自己定义cost函数来出轨迹的。在此基础之上,PILOT把模仿学习作为NN的初始解,可以以更快的方式来找到最优解。但是这种方式处理长尾问题上依然有很大的挑战

    基于NN的方法直接从专家开车的方式中去学习一种cost函数,

  • Regression: 回归的方式没有选择这一步,即$h$为一个identity。$g$用于生成一条轨迹$Y_{EV}=\hat{Y}_{EV}^1$。回归方法直接从人驾数据中学习出未来要走的轨迹,这种监督学习的方式也被称为behaviour cloning(BC). 虽然这种方式可能优于手动设计cost的方式,但是它对数据分布偏移的敏感度较强,需要加入一些高级训练方法。

    这种方式出来的轨迹无法保证运动学和可行性,尤其是在一些Corner case中。但是可以通过回归action的方式,来保证运动学可行性。

  • Hybrid planning: 这是上面两种方式的组合。首先通过一个轨迹生成器$g$回归出各个轨迹,然后通过cost函数选择出一条最好的轨迹。比如有的文章会从生成的轨迹中检查是否碰撞来剔除不合适的轨迹,类似的,在论文GC-PGP中,它在利用goal-conditioned的预测模型给出一系列可能的未来轨迹,然后从中选择出一条。

    在这种混合模式的情况下,我们通常不能很清楚的知道,选出这条轨迹的原因中,哪一部分是生成器的原因给出的,哪一部分是由于cost function来选择的。

Benchmark

本节讨论如何去评价planning的结果到底好还是不好。一般有两个方式,开环评测和闭环评测

开环评测

开环评测的过程和评测一条预测轨迹一样,他对比$Y_{EV}$和人驾数据$Y_{GT}$, 有两个主要问题

  1. 自车是否真的学会了跟着导航走。
  2. 把累积误差给消除了。

所以开环评测无法真正的评价出planning的结果到底是好还是不好。

闭环评测

闭环模拟与开环模拟的区别:

  • 模拟方式: 闭环模拟允许规划器控制自动驾驶车辆,更接近真实世界驾驶情况。
  • 复杂性: 由于规划器会达到没有预测轨迹的状态,闭环模拟的复杂性更高。
  • 轨迹比较: 规划的轨迹($Y_{EV}$)可能与实际行驶的闭环轨迹$Y_{CL}$不同,因为存在高频重新规划和控制器跟踪不完美的情况。
  • 评估指标: 评估闭环模拟时不使用位移误差,而是使用描述进展、舒适度和安全性的不同指标。
 Comments