自动驾驶TPM技术杂谈 ———— 交通环境行为预测

文章目录

介绍

一般来说,行为预测模块属于自动驾驶系统的决策规划层。自动驾驶在进行决策规划时,首先会从环境感知模块获取道路拓扑结构信息、实时交通信息、障碍物(交通参与者)信息和主车自身的信息,然后根据这些信息对其他动态障碍物未来的运动轨迹做预测。运动预测根据预测时间的长短可以分为长期预测和短期预测,涉及意图识别、行为预测和轨迹预测三个层面的内容。一般来说,若能充分考虑汽车的行驶意图,长期运动预测的结果更加准确。意图、行为和运动状态三者的抽象程度依次降低。

1. 意图为驾驶员作为某种行为的目的;

2. 行为是一段连续运动状态的抽象;

3. 运动状态是车辆所体现出来的一些运动变量(位置、姿态、速度、加速度等)的集合。

交通参与者行为预测

前面提到预测一般分为长期预测和短期预测。在这里长期和短期的定义其实并不明显。一般来说,短期预测的预测时长在1s以内,长期预测的预测时长一般在数秒乃至数十秒。短期预测是,目标体行为意图为变化,或者目标体意图可能发生变化但目标体动力学行为来不及发生变化,此时短程行为可以根据动力学或者运动学推算得到。长期预测时,目标体的行为意图可能发生变化且动力学行为能够随之改变,因此目标体行为受目标意图和周围环境信息影响极大,所以长期预测需要综合考虑目标意图和周围环境。

车辆行为预测

大多数相关研究使用车辆历史轨迹来模拟其行为,基于该行为来预测未来轨迹。然而这种研究方向并未关注可能影响车辆在未来行驶轨迹对应场景中的道路拓扑结构、交通信息等特征。车辆的行驶轨迹由两个因素共同作用的结果:首先是驾驶员的行为,其次是外部环境因素。因此衍生了多种不同的轨迹预测思路:

1. 基于物理模型的轨迹预测

2. 基于行为模型的轨迹预测

3. 基于神经网路的轨迹预测

4. 基于交互的轨迹预测

5. 基于仿生学的轨迹预测

6. 多种途径相结合的轨迹预测

基于物理模型的轨迹预测

该方法时基于物理的运动模型将车辆表示为受物理定律支配的动态实体。适用动力学和运动学模型预测未来运动,将一些控制输入(转向、加速度等),车辆属性和外部条件与车辆状态的演变联系起来。有大量的工作基于物理的车辆运动模型进行轨迹预测,这种方法仍是道路安全背景下最常用的轨迹预测和碰撞风险评估的的方法。车辆模型的复杂程度不一,他们的区别在于模型的动力学和运动学表现、如何处理不确定性、是否考虑道路的几何形状等。

动力学模型

一般来说,动力学模型基于拉格朗日方程考虑影响车辆运动的不同力的作用。车辆受到复杂物理学(驾驶员对发动机、变速器、车轮等作用的影响)的控制,因此动力学模型可能非常复杂并且涉及车辆的众多内部参数。建立这种复杂的模型涉及与车辆控制相关的计算时是有必要的,但是在轨迹预测上,为了简化计算,一般会使用较为简单的模型。基于上述原因,轨迹预测中的动力学模型常常简化为"自行车"模型,这就意味着将四轮车辆简化为两轮车辆,并在二维平面上移动。

运动学模型

运动学模型基于运动参数(位置、速度、加速度等)之间的数学关系来描述车辆的运动,此间忽略影响运动的力。在运动学模型中,摩擦力需要被忽略,并假设每个车轮的速度都与车轮方向相同。在轨迹预测方面,运动学模型比动力学模型更为常用。此外,动力学模型需要使用到的车辆内部参数无法被外部传感器所观察,这也是动力学模型使用受限的原因之一。运动学模型最简单的时恒速度(CV)和恒加速(CA)模型,这两个模型假设车辆是直线运动。恒转速和速度(CRTV)以及恒转加速度和加速度(CTRA)模型通过在汽车状态向量中引入偏航角和偏航率变量来考虑z轴的变化。由于速度和偏航率是分离的,因此模型的复杂度不高。通过考虑转向角而不是状态变量中的横摆率,可以用"自行车"模型来表示汽车模型。这种模型考虑了速度和横摆角之间的相关性,从中可以导出恒定转向角和速度(CSAV)以及恒定加速度和加速度(CSAA)。

上述提到的车辆模型可以以各种方式用于轨迹预测,它们之间的主要区别在于如何处理预测的不确定性。

基于行为模型的轨迹预测

基于行为的模型解决了基于物理模型的不考虑车辆行为的问题。在这种模型下每辆车辆都被看作一个正在进行某种交通行为的客观运动莫表,基于行为先验信息可以帮助推测未来一段时间某种行为的运动特征,因此可以较为准确地实现较长时间的运动预测。基于行为模型的轨迹预测方法常用的有直接通过原型轨迹来预测和先识别驾驶员意图再进行预测这两种方式。

在结构化的道路环境下,车辆的运动轨迹可以根据道路拓扑分类为有限个轨迹簇,这些轨迹簇对应着典型的车辆行为。基于原型轨迹的方法就是将感知到的他车轨迹与先验的运动模式进行匹配,然后根据匹配的结果结合原型轨迹来进行运动预测。通常通过学习的方法,对样本轨迹进行分类学习,从而获得原型轨迹。可以通过谱聚类(Spectral Clustering)方法对采集的轨迹进行分类,也可以通过简单求解样本的均值和标准差来进行分类。基于原型轨迹的预测方法中,感知到的目标历史轨迹和计算得到的运动模式之间的匹配方法是影响预测准确性的关键。在整个过程中,需要定义一个度量来表征一段轨迹与原型轨迹之间的契合程度。有方法通过两条轨迹中的轨迹点之间的欧几里得距离来表示,有方法通过最长共同序列来计算两个轨迹序列之间的相似程度。使用原型轨迹的方法主要问题在于对路面拓扑结构信息的严重依赖。样本轨迹的采集与运动模式的训练都依赖于已知的道路拓扑结构。已训练好的模型只用于具备相似的道路结构的场景中,可扩展性差。此外,这类方法的准确性很大程度上取决于匹配度量的选择,在速度变化较大的场景下指定准确的度量往往是比较困难的。

识别驾驶意图在进行预测的方法中,是基于机器学习的方法来识别车辆的行驶意图,并不依赖原型轨迹。因此,该方法可以适用于任意的道路结构。在利用这一类方法进行驾驶意图的估计时,需要先定义一个有限的行为集(包括但不限于车道保持、变道、超车、转向等),然后根据感知到的道路车辆运动特征对车辆未来的行为进行分类。这些特征包括可以通过传感器观测的交通车状态变量(车速、加速度、位置、航向、转向灯等)、道路结构(十字路口、匝道、高速公路等)、交通信息(交通信号灯、标识牌、交通规则等)。不同的机器学习方法已被应用在车辆行驶意图的分类问题中。贝叶斯网络和其特殊形式隐马尔科夫模型(Hidden Markov Models,HMM)也被广泛应用在行为预测中,这类方法的原理是基于可观测的他车状态信息及环境信息作为证据变量来对车辆的行为意图等隐藏变量进行求解。典型的动态贝叶斯网络如下图所示。其中,最上层为行为层, M t M_t Mt为离散的隐形随机变量,代表着车辆的不同行为;中间层为运动状态层, X t X_t Xt代表车辆的运动状态,无法被直接观测到;最下层为观测层,矢量 Z t Z_t Zt为矢量 X t X_t Xt含有噪声的测量值。从传感器得到 Z t Z_t Zt之后可以通过观察模型来得到道路中他车运动状态变量 X t X_t Xt的估计,再由汽车的运动状态来推断车辆可能的行为 M t M_t Mt。

基于神经网络的轨迹预测

相比通过建立车辆物理模型来分析道路结构、交通规则、驾驶员意图等一系列因素对轨迹预测的影响,用基于大数据学习的方式来涵盖了上述所有复杂因素的车辆运动轨迹进行深度神经网络模型学习,会有更强的表达性,得到更好的效果。进行轨迹预测之前通常需要对采集到的轨迹数据进行预处理,剔除异常噪声轨迹点。预处理步骤可以基于轨迹高斯混合模型(Gaussian Mixture Model,GMM)聚类算法。GMM首先采用K-Means聚类算法对历史轨迹数据聚类,并初步计算模型参数。根据模型参数种类个数可以初步确定聚类簇数量K,然后利用最大似然估计算法迭代优化K-Means初步的聚类结果,最终得到K个聚类簇。同时引入虚拟参考点(Virtual Reference Point,VRP)用于提高模型预测的可靠性。VRP信息可以通过训练得到,而非通过实体参考点推算得到,这避免了无线信道模型的估计或者推送过程引入的误差。

一些方法基于长短期记忆(Long Short Term Memory,LSTM)的神经网络对周围的短期驾驶行为进行学习并进行轨迹预测。该网络接受坐标系下针对周围车辆排好序的传感器测量数据,训练后产生占用栅格地图,地图上包含周围车辆未来时刻可能到达的位置及概率。由于周围车辆信息是通过传感器获取,而自动驾驶车辆本身在不断地运动,因而需要将其速度和航向角输入到搭建好的LSTM网络中以补偿车辆运动带来的坐标变化,从而实现轨迹预测。训练的数据来源于车辆高速公路长时间的行驶过程。LSTM是RNN的一种形式,通过一个存储器单元来代替瓦哥罗的每一个结点,解决了梯度弥散的问题。通过"门(Gate)"来控制丢弃或增加信息,从而实现遗忘或记忆的功能。"门"是一种使信息选择性通过的结构,由一个Sigmoid() 函数和一个点乘操作组成。Sigmoid() 函数的输出值在[0,1]区间,0代表完全丢弃,1代表完全通过。一个LSTM单元有三个这样的门,分别是遗忘门(Forget Gate)、输入门(Input Gate)和输出们(Output Gate)。

1. 存储单元 ------ 决定和累计单元要记忆的内容;

2. 输入门限 ------ 决定输入信息是否被允许进入模组;

3. 输出门限 ------ 决定输出是否被模组向外传送。

基于交互的轨迹预测

基于交互的轨迹预测在对他车环境进行运动预测时,将自车和周围其他车辆看作是相互影响的,考虑了它们之间的行为依赖关系。比起基于行为模型的轨迹预测,它能够提供更加准确可靠的预测结果。考虑交通参与者之间的交互时,其中一种方法是假设所有驾驶员都尽可能避免碰撞,并选择风险最小的驾驶行为。这种方法首先计算各个车辆行驶意图的先验概率分布,然后通过建模车辆之间的交互关系进行风险评估,进而对先验分布进行修正。这种方法在大多数正常驾驶场景下可以取得很好的效果,但是在一些紧急危险的场景下可能会出错。

另外一种考虑车辆交互影响的方法是利用动态贝叶斯网络。这种方法在进行行为推理时将汽车之间(Agent(i)、Agent(j))的交互也考虑进来。Agent(j) 的运动状态 x t − 1 ( j ) x_{t-1}(j) xt−1(j)将对Agent(i)的场景状态ct(i) 产生影响。在数学上实现时车辆之间的交互被分解为成对依赖性的对数线性组合。同时在建模车辆的行为时,将交通规则考虑进去,然后使用统计推理来计算运动状态的后验概率分布。使用动态贝叶斯网络建模车辆之间的交互问题时,常常基于因素状态计算车辆之间的因果依赖关系,并建立局部场景的函数,这种方式可以大大较少计算的复杂度。

在处理交通场景中车辆之间的行为交互,基于博弈论的方法也引起了研究者的兴趣。博弈论可以利用非合作博弈来对车辆的运动进行分析,计算车辆的收益时首先需要考虑不同行为下生成的轨迹本身的成本,然后利用碰撞检测来计算最终的收益。

基于交互的轨迹预测充分考虑了车辆之间的相互影响,可以实现更加准确的预测结果。受限于车辆之间交互关系的处理困难,该方法的研究和拓展较少。同时,复杂场景下计算量也较大。另外,在汽车交互方面的研究一般都是抽象层,而对于轨迹规划来说,需要知道车辆未来运动状态的实体概率分布。

基于仿生学的轨迹预测

Hemicordulia 蜻蜓的大脑细胞(神经元)使得他们能有预谋地追逐和捕捉飞行猎物。蜻蜓的神经元可以从大脑接收到大量的视觉信息中选择单个目标,并随后预测其方向和未来未知。蜻蜓大脑中完成目标跟踪任务的相关神经元增强了它们对被跟踪运动物体前面的一小块"焦点区域"的响应。如果目标随后消失在视野中,角点就随着时间推移而扩展,使得大脑能预测目标最可能出现在哪里。神经元预测基于的是目标先前飞过的路径,这样的发现有助于理解单个神经元是如何基于过去历史做出超前预测的。在未来很有可能对自动驾驶车辆基于视觉的目标轨迹预测产生很大的帮助。

行人行为预测

行人轨迹预测是根据行人过去一段时间的轨迹预测其未来的轨迹。与车辆不同,行人在决策过程中有较大的随机性,在完全相同的场景下,不同的人可能有不同的决策,这使得行人的行为预测有很大的难度,其难点可以概括为如下:

1. 如何使得预测出的行人轨迹及符合物理约束,也符合社会规范。

2. 如何对不同行人之间的相互影响进行建模。

3. 如何预测多条合理的轨迹。

目前行人轨迹预测方法主要有四种:

1. 基于社会力模型。

2. 基于马尔可夫模型。

3. 基于循环神经网络的方法

4. 基于生成对抗网络的方法

安全性评估算法

决策算法面临的最大挑战是如何达到自动驾驶所需要的高安全性和高可靠性。路权(Right of Weight,ROW)是指道路使用者依据法律规定,在一定时间对一定道路空间使用的权力,在自动驾驶中,路权可以用来描述满足车辆当前安全行驶所需的道路空间。车辆的路权是一个流动的扇形区域,与本车的尺寸、速度、周边的车流量、前方拥有的空间密切相关,是本车速度的非线性函数,可用距离和角度表示。在驾驶过程中,人们会出现不同的驾驶行为,如超车、变道或者重新规划路线等,自车可以用利用路权来描述换到三角形区域判断是否可以超车。例如图片中的场景所示,本车道内车间距较小,且没有变大的趋势,路权受限;相邻车道车间距较大,且没有变小的趋势,路权允许执行变道。

路权可以分为期望路权和实际路权。当两者不一致时,需要进行调节来解决冲突。车辆在行驶时需要对路权进行检测和使用,多车交互是车群在任意时刻对路权的竞争、占用、放弃的协同过程。为了评估自动驾驶系统中决策模块的输出结果,Mobileye开发了一套责任敏感安全(Responsibility Sensitive Safety,RSS)模型的体系,希望通过建立数学公式的手段,使得自车有能力判断自身的安全状态,尽可能地避免事故发生。RSS模型的本质是将人类驾驶过程中对安全程度的判断理念和概念转化为具体的数学公式,用来判别什么样的驾驶属于安全的驾驶。在RSS模型定义的时候,Mobileye认为有两个原则必须遵守:

1. 自动驾驶过程不能因为自身的原因引发碰撞或者事故;

2. 当其他车辆造成潜在风险并且可能产生交通事故的时候,自车应采取恰当的应对方式,来避免可能发生的事故。

在实际建立模型的时候,RSS模型通过四条形式化的规则来确保车辆在自动驾驶状态下保证安全以及避免成为制造车祸的一方:

1. 和前车保持安全的距离

2. 给侧边的车或人留出足够的反应时间和空间

3. 在堵车的场景下更谨慎

4. 合理使用路权(路权的使用应优先考虑安全)

现在的决策算法还不能保证做出完全正确的决策,特别是随着路况、车辆性能、传感器配置等各种外界因素的影响。人类驾驶的事故概率是 1 0 − 6 10^{-6} 10−6,有人认为自动驾驶应至少达到 1 0 − 9 10^{-9} 10−9概率,也就是航空业的安全水平才能被广泛大众接受。

相关推荐
地平线开发者2 小时前
地平线走进武汉理工,共建智能驾驶繁荣生态
算法·自动驾驶
小lo想吃棒棒糖3 小时前
自动驾驶的“安全基石”:NVIDIA如何用技术守护未来出行
人工智能·安全·自动驾驶
IRevers3 小时前
【自动驾驶】经典LSS算法解析——深度估计
人工智能·python·深度学习·算法·机器学习·自动驾驶
向哆哆1 天前
YOLO在自动驾驶交通标志识别中的应用与优化【附代码】
人工智能·深度学习·yolo·自动驾驶·yolov8
小黄人20252 天前
自动驾驶安全技术的演进与NVIDIA的创新实践
人工智能·安全·自动驾驶
地平线开发者2 天前
征程 6M 部署 Omnidet 感知模型
算法·自动驾驶
二DUAN帝3 天前
UE实现路径回放、自动驾驶功能简记
人工智能·websocket·机器学习·ue5·自动驾驶·ue4·cesiumforue
陈纬度啊3 天前
自动驾驶ROS2应用技术详解
人工智能·自动驾驶·unix
地平线开发者3 天前
征程 6|工具链量化简介与代码实操
算法·自动驾驶