自动驾驶笔记(三)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/CSDN_XCS/article/details/82320017

1. 预测简介

无人车在许多物体间穿梭行驶,有时这些物体本身也在运动,例如:行人、车辆。
无人车需要预测这些物体的行为,这样才能保证我们的无人车做出最佳决策。
我们通过生成一条路径 来预测一个物体的行为。

这节课中,我们学习 Apollo如何根据 其他移动物体的状态,以及 无人车的位置 去预测这些移动物体的路径。

预测路径的要求:

  • 实时性:指 我们算法的延迟越短越好。
    一辆 60km/h 的汽车,每(0.25)秒 移动约 (5米)20米。
    所以我们要保证在前方5米 没有障碍物可以安全穿行。
    这里写图片描述
  • 准确性:
    如果我们预测邻近车道的车辆想要并道,我们应该减速;
    如果我们预测它会保持在它的车道上行驶,我们可以保持当前速度。
    我们想要预测足够准确,这样才能帮助无人车做出很好的决策
    这里写图片描述
  • 预测模块也要有学习新行为的能力:
    路况是非常复杂的,想要开发出每种场景的静态模型几乎是不可能的。
    一旦预测模块具有学习能力,算法就能够随着时间的推移提升预测能力。

2. Sebastian介绍预测

预测也是决策的核心之一,因为只要你知道该期待什么,你就会做出更好的决策。
Once you know what to expect, you will make much much better decisions.

3. 不同的预测方式

两种预测方式:

  1. 基于模型的预测
    假设无人车来到一个 T 形路口,看到一辆车从左面驶来,
    此刻我们不确定这辆车 直行还是右转。
    基于模型的方法:我们为此场景构建了两个候选模型,
    这里写图片描述
    一个模型描述了该车右转,我们用绿色的轨迹表示;
    另一个模型描述了该车直行,我们用蓝色的轨迹表示。
    此刻,我们认为任意一种模式发生的概率是相同的。
    我们继续观察车辆的移动(observed behavior),看它与哪条轨迹更加匹配。
    例如:如果我们看到车辆开始变更车道,那么我们更相信最终车辆会直行;
    相应地,如果我们看到车辆保持在当前车道,我们更倾向预测车辆会右转。
    这就是基于模型的预测的工作原理
    优点是:直观,并结合了我们现有的物理知识、交通法规、人类行为等知识
  2. 数据驱动预测
    使用机器学习算法,通过观察结果来训练模型
    一旦模型训练好,我们就可以在现实世界中使用该模型去做出预测。
    这里写图片描述
    优点是:训练数据越多,模型效果越好。

4. 基于车道的预测

Apollo 提供了一种叫做 基于车道序列的 模型驱动方法
为了建立 车道序列,

  • 首先,我们将车道分成多个部分,每个部分覆盖了一个的区域,在这个区域里车辆的运动 is easy to describe.易于描述
  • 然后,对于预测,我们更加关心车辆 如何在这些区域内转换,而不是车辆在一个区域里 的具体行为
  • 最后,我们可以将车辆的行为 划分为一组有限的模式组合,并将这些模式组合描述为车道序列。

这里写图片描述
那么,汽车的直行运动就可以描述为:0-1-3-7


5. 障碍物状态

为了预测物体的运动,我们需要知道物体的状态,
作为人类,当我们驾驶的时候,
我们通过观察一个物体的朝向(heading),位置(position)、速度(speed)、加速度(acceleration)来预测它将会做什么,
同样地,这也是无人车如何观察物体的状态。

除此之外,无人车还考虑:

  • 车道内物体的位置,例如物体到车道边线段的纵向、横向距离。
    这里写图片描述
  • 包含之前时间间隔的状态信息,以便更准确的预测。
    这里写图片描述

6. 预测目标车道

我们使用车道序列框架的目标是:为 道路上的物体(obstacle) 生成轨迹。
这是一个复杂的问题,我们从一个稍微简单的问题开始:
我们预测车道线段之间的过渡

假设 Apollo 在车道段 0 中检查到一辆车,并且我们将预测 在接下来的几个时间段内 它将如何行驶。
现在有两个显而易见的选择(如前所述)(如下图所示)
这里写图片描述
实际上,这个分析使我们前进了一大步!
我们将预测问题简化为了选择问题
现在我们需要做的就是 选择 车辆最有可能采取的车道序列。

我们可以通过计算每个车道序列的概率来进行选择。
我们需要一个模型,它将 车辆状态 和 车道段 作为输入,
模型的目的(输出)是 可能采取每个车道序列的概率

同时,我们希望模型能够学习新的行为,
所以,应该使用观测数据对模型进行经验性训练
在训练中,我们将真实的车辆行为提供给模型,
不仅包含车道段和车辆状态,还包括对象最终选择了哪条车道序列。
这里写图片描述
随着时间 的增加,模型可以不断自我迭代更新,精度不断提高。
每个记录将由 对象采取的车道序列 和 对象的相关状态 组成。
在每个特定的时间点,对象占用一各车道段,并具有特定的状态,
整条记录 由一系列车道段 和对象的相关状态组成。


7. 递归神经网络(RNN)

递归神经网络 是 一种 利用时间序列数据特征预测方法。

在此之前,回顾一下 一般的神经网络:

  • 神经网络 是可训练的多层模型
  • 有时被称为 多层感知网络 MLP (Multilayer Perceptron Network)
  • 其从数据中学习的方式叫做 后向传播(Backward Propagation)

我们可以建立 像这样的 多重结构的 递归神经网络,我们称之为 MLP单元
数据序列中,提取出高级特征
这里写图片描述
每个 MLP单元 将序列的一个元素作为输入,其输出是 对 序列的下一元素的预测值

为了对元素之间的顺序关系建立模型,我们在每个单元之间建立一个额外的连接
这意味着,每个单元根据 原始输入前一个单元的输出 进行预测。
这就是 RNN 的基本结构


8. 递归神经网络 在目标车道预测的应用

Apollo 使用 RNN 建立一个模型来预测 车辆的目标车道(目标车道何意?)
the target line of a vehicle
Apollo 为车道序列提供 一个RNN模型,为相关对象状态 提供另外一个 RNN模型,
Apollo 连接这两个 RNN的输出,并把它们馈送到 另一个神经网络,
该神经网络 会估计每个车道序列的概率。
具有最高概率的车道序列,是我们 预测 目标车辆将遵循的车道序列。
这里写图片描述
为了训练这个网络,我们使用 现有的记录,
每条记录都包含一个车道序列 和 相关的对象状态 以及 一个标签(用于指示对象是否遵循此特定车道序列)
在训练中,我们比较网络输出 和 真实标记,并使用反向传播来训练网络。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/CSDN_XCS/article/details/82320017