【动手学轨迹预测】1.1 轨迹预测概述
轨迹预测问题可以表述为: 给定场景信息, 基于交通参与者的历史状态, 预测他们未来的状态. 不管是基于物理学的方法, 还是基于深度学习, 强化学习的方法, 轨迹预测的输入输出大体都是类似的.本节将定义轨迹预测的输入输出.

1.1.1 基本概念
当我们参与交通的时候, 通常会观察并猜测周围的交通参与者的行为, 比如说猜测对方是否会加速,变道等等. 基于这些猜测, 我们会进一步采取行动(比如减速避让)来避免潜在的危险. 对于自动驾驶系统, 预测其他交通参与者的行为, 由轨迹预测模块完成.

如上图所示, 轨迹预测的结果受到很多因素的影响:
- 交通参与者的数量和种类 (车辆, 自行车, 行人等)
- 交通参与者的相互影响 (Inter-dependencies between Vehicles, 即车辆之间 或者是车辆和行人之间的相互影响)
- 交通参与者与环境的相互影响 (图中红绿灯对参与者的影响等)
- 历史信息 (自车, 参与者过去的行为信息)
- 观测的不确定性
- 计算资源的多少
1.1.2 轨迹预测方法分类

轨迹预测的方法, 大体可以分为这样几类:
1.1.2.1 基于物理学的预测方法
主要是指基于车辆的物理学来进行预测的方法, 包括基于车辆动力学模型, 车辆运动学模型. 动力学模型的预测方法可能会非常复杂, 但是对于预测方法来说, 复杂的动力学模型带来的效果提升非常有限. 在大部分情况下, 简单的运动学模型(通常使用自行车模型)即可满足预测需求.
基于物理学的预测是最早被使用, 同时也是最简单的预测方法. 主要的方法有:
- 恒速度预测方法
- 恒加速度预测方法
- 恒转向速度预测方法
- …
1.1.2.2 基于经典机器学习的预测方法
经典机器学习是采用数据驱动的预测方法, 主要通过挖掘数据特征来确定概率发布. 主要的方法有:
- 高斯过程(Gaussian Process)
- 支持向量机(SVM)
- 隐马尔科夫过程(HMM)
- 动态贝叶斯网络(Dynamic Bayesian Network)
1.1.2.3 基于深度学习的预测方法
在深度学习逐渐占据主流之后, 基于深度学习的预测方法也成了学界和业界最主流的预测方法.
因为深度学习不仅能考虑目标和环境的物理信息, 还能考虑到他们之间的交互信息, 这极大的提升了预测结果的质量. 这也是本课程主要讲解的预测方法, 主要有以下分类:
- 卷积神经网络(CNN)
- 循环神经网络(RNN)
- 图神经网络(GNN)
- 注意力机制
1.1.2.4 基于强化学习的预测方法
强化学习的预测方法一般是用来生成自车的预测轨迹, 大部分方法都基于马尔科夫过程(MDP)来最大化累计期望收益. 强化学习的预测方法能够更深入的考虑自车与目标的交互过程, 但是需要高昂的计算成本和训练时间.
- 逆强化学习(IRL)
- 深度逆强化学习(DIRL)
1.2 输入和输出定义
轨迹预测问题可以表述为: 给定场景信息, 基于交通参与者的历史状态, 预测他们未来的状态. 不管是基于物理学的方法, 还是基于深度学习, 强化学习的方法, 轨迹预测的输入输出大体都是类似的.
本节将定义轨迹预测的输入输出.
1.2.1 轨迹预测的输入
agent指交通参与者, 可以是预测目标本身, 也可以是预测目标附近的交通参与者.
首先我们将第iii个agent在时刻ttt的状态, 定义为:
Xit={xit,yit,vit,θit,...} \boldsymbol{X}^t_i=\left\{x_i^t, y_i^t,v_i^t,\theta_i^t,...\right\} Xit={xit,yit,vit,θit,...}
状态包括:(x,y)(x,y)(x,y)坐标, 速度, 航向角等等状态信息
- agent的历史状态信息

第iii个agent的历史信息, 可以定义为:
HistoryXi={Xit−h,Xit−h+1,…,Xit} \boldsymbol{HistoryX}_i=\left\{{X}^{t-h}_i, {X}^{t-h+1}_i, \ldots, {X}^{t}_i\right\} HistoryXi={Xit−h,Xit−h+1,…,Xit}
hhh代表历史时间步长, Xit−h{X}^{t-h}_iXit−h代表当前时间之前hhh时间步长的状态, Xit{X}^{t}_iXit代表当前时间的状态.
- 地图信息: lane

如果我们将折线定义为一组向量, 其中第iii个线段的首末点构成向量:
veci={xiend−xistart,yiend−yistart} \boldsymbol{vec}_i=\left\{x_i^{end}-x_i^{start}, y_i^{end}-y_i^{start}\right\} veci={xiend−xistart,yiend−yistart}
那么lane可以定义为:
Lanej={central_vecj,left_vecj,right_vecj,turn_typej,vlimit,...} \boldsymbol{Lane}_j=\left\{{central\_vec}_j,{left\_vec}_j,{right\_vec}_j,turn\_type_j,v_{limit},...\right\} Lanej={central_vecj,left_vecj,right_vecj,turn_typej,vlimit,...}
central_vecj,left_vecj,right_vecj{central\_vec}_j,{left\_vec}_j,{right\_vec}_jcentral_vecj,left_vecj,right_vecj分别代表中心线, 左边界和右边界对应的向量.
turn_typejturn\_type_jturn_typej代表lane的属性:直行, 左转, 右转等等
vlimitv_{limit}vlimit代表lane的最高限速
也可以加入lane的曲率等其他信息
- 地图信息: 特殊区域
地图存在一些特殊的区域, 比如说人行道crosswalk, 禁停区等等, 可以用多边形(n个vecvecvec)表达边界:
polygonj={vec1,vec2,...vecn} {polygon}_j=\left\{{vec}_1,{vec}_2,...{vec}_n\right\} polygonj={vec1,vec2,...vecn}
这样我们可以定义特殊区域为:
Zonej={polygonj,polygon_type} \boldsymbol{Zone}_j=\left\{{polygon}_j,polygon\_type\right\} Zonej={polygonj,polygon_type}
- 地图信息: 红绿灯
t时刻的红绿灯信息定义为:
Lightsjt={position,light_typet} \boldsymbol{Lights}_j^t=\left\{{position},light\_type^t\right\} Lightsjt={position,light_typet}
positionpositionposition是指红绿灯的位置
light_typelight\_typelight_type指红绿灯的状态: 红灯, 绿灯, 黄灯等等
1.2.2 轨迹预测的输出
- 预测轨迹
一般而言, 轨迹预测会输出一条或者多条时间序列下的离散点集, 也就是轨迹. 当输出轨迹不止1条时, 称之为多模态. 如图目标车辆有红色和绿色两条预测轨迹:

将第iii个agent的第jjj条预测轨迹定义为:
Yij={Xit+1,Xit+2,…,Xit+tf} \boldsymbol{Y}_i^j=\left\{{X}^{t+1}_i,{X}^{t+2}_i, \ldots, {X}^{t+t_f}_i\right\} Yij={Xit+1,Xit+2,…,Xit+tf}
tft_ftf代表预测轨迹的时间步长数.
- 意图
有一些预测方法, 也可以输出目标的行为意图(intention), 比如说cut-in,换道等.

参考论文:
- Huang, Yanjun, et al. “A survey on trajectory-prediction methods for autonomous driving.” IEEE Transactions on Intelligent Vehicles 7.3 (2022): 652-674.

更多推荐



所有评论(0)