自动驾驶路径规划技术-高速公路路径规划

Path Planning - Highway Driving project

Github: https://github.com/williamhyin/CarND-Path-Planning

Email: williamhyin@outlook.com

知乎专栏: 自动驾驶全栈工程师

Overview

在自动驾驶流程管道中, 我们按顺序处理以下模块:

  1. 感知: 负责使用传感器探测对象
  2. 融合: 负责使用传感器融合提供被检测物体的综合视图
  3. 定位: 负责确定自身车辆所在的位置, 尤其需要精确到在车道中的具体位置
  4. 路径规划: 负责规划车辆轨迹达到一个特定的目标
  5. 指挥与控制: 以规划的路径作为输入, 控制驱动车辆

路径规划模块的输入包括:

  • 传感器融合的对象列表
  • 地图和定位系统

路径规划模块的输出是一组路径点.

路径规划模块通常分解为以下一组子模块:

  • 预测(Predictions): 预测周围被探测物体的轨迹
  • 行为规划器(Behavior planner): 将定义一组候选的高层级目标, 让车辆跟随(车道变化, 减速…)
  • 轨迹生成器(Trajectories planner): 对于每一个可能的高级目标, 都会计算出一条可以跟踪的路径
  • 轨迹成本排序(Trajectories cost ranking): 对于每个轨迹, 成本将被推导出来(取决于可行性、安全性、合法性、舒适性和效率) , 最低总成本的轨迹将被选择


​ overview

Details

预测(Predictions)

预测工作非常有趣, 但是极富挑战, 因为预测本身是多模的, 即存在多个不同概率分布的可能性. 首先预测模块会输入地图数据和传感器融合数据, 然后预测模块会生成并输出一些预测数据. 这些预测数据包含了周围所有其他机动车以及其他移动物体的未来状态. 为了更清楚地说明这一点, 本文结尾Backup有一个示例(json 格式) , 说明预测的输入和输出可能是什么样的. 实际的预测会延伸到10-20s的范围.

预测有两种方式:Model-base / Data-driven Approaches

​ 两种预测方式的对比

在基于模型的方法中, 我们将使用一些简单的轨迹生成器来绘出当驾驶员直行或者右转时的我们的预测轨迹. 然后我们将注意力放在目标车辆的实际行为上, 并使用当前还是个黑盒子的多模估量算法, 我们将对比观察的轨迹和每个模块中我们预期生成的轨迹, 并为每一条可能的轨迹赋予一个几率.

在数据驱动的方法中, 我们就有了一个真正的黑盒算法, 该算法会通过大量训练数据来训练. 一旦训练完成, 我们会把观察到的行为输入其中, 让算法来生成接下来如何运动的预测. 比如每个不同的时段在一个交叉路口的车辆的不同行为.

基于模型的方法需要我们为每种行为建立了运动数学模型, 并将司机行为的理解, 目标车辆的物理限制, 交通路规以及其他限制考虑在内. 数据驱动法使用数据来抽取潜在模式, 这是基于模型法所缺少的. 但是数据驱动的算法使用历史的数据预测未来的情况, 并没有考虑车辆物理学和交通规律.

  1. Data-driven Approaches: 数据驱动法则依赖于机器学习和案例学习
    • example: trajectory clustering

      目前有很多机器学习的算法来预测对象的轨迹, 他们大多数都是为了实现轨迹聚合(trajectory clustering). 算法分为两个阶段. 第一个是离线训练阶段, 在此阶段中, 算法从数据中学习模式, 第二个阶段是在线预测阶段, 在此阶段中, 算法使用模型来生成预测.

      离线阶段, 这个阶段的目标是给一些机器学习算法提供大量的数据来训练它. 可以通过如在交通路口放置一个固定摄像头实现, 清理数据之后会得到很多轨迹. 通过相似性测量可以减少很多轨迹, 最后通过聚类算来聚合这些轨迹. 最后定义原型运动路径.

      主要包括这三步:

      1. 定义相似性- 我们首先需要一个与人类常识定义相一致的相似性定义.
      2. 无监督的聚类- 在这一步, 一些机器学习算法对我们已经观察到的轨迹进行聚类.
      3. 确定原型轨迹- 为每个集群确定一些少数典型的“原型”轨迹.


      ​ 离线聚类

      在线阶段, 需要观察车辆的部分路径, 并使用相似性检测对比原型轨迹, 最后预测未来的轨迹. 在轨迹的初始时间阶段(如在红绿灯前), 不同原型轨迹的概率是相同的, 我们为每个聚合选择最匹配的原型轨迹, 并使用它们来代表车辆的未来轨迹. 随着车辆继续右转, 自身车辆的轨迹与右转原型轨迹越来越契合, 红色聚合对应的可能性快速接近1.

      主要包括这三步:

      1. 观察部分轨迹- 当目标车辆行驶时, 我们可以想象它在后面留下了一个“部分轨迹”.
      2. 比较原型轨迹- 我们可以比较这个部分轨迹与原型轨迹的相应部分. 当这些部分轨迹更加相似时(使用前面定义的相似概念) , 它们相对于其他轨迹的可能性会增加.
      3. 生成预测- 对于每个集群, 我们确定最可能的原型轨迹. 我们将这些轨迹连同相关概率一起广播(见下图).

      ​ 在线检测

  2. Model-based Approaches: 基于模型法使用运动数学模型来预测运动轨迹

    基于模型的方法, 首先对于每个目标, 识别在当前状态下目标的下一步所有可能的行为. 然后为每种行为定义一个过程模型. 行为对应的过程模型就是用数学方式把行为相关的物体移动描述出来, 它是一个函数, 可以用来计算一段时间结束后的物体状态, 从时间t开始到t+1结束. 过程模型会产生一些的不确定状态, 在定义过程模型后可以使用过程模型来计算每种行为的几率大小. 具体计算过程需要获取时间点t-1上的目标状态观察值, 然后运行过程模型计算t时间点的预期状态, 然后将在时间点t的物体实际观测状态与过程模型之前的预测状态进行比较, 使用多模估量算法来过得每种可能动作的几率. 最后为每种行为预测一个轨迹, 通过在过程模型上进行迭代直到预测时间段的结束点就行.

    ​ 基于模型的方法

    你也可以将基于模型的预测问题解决方案看作也具有“离线”和在线部分:

    1. 定义过程模型(离线)

    2. 使用过程模型来比较驾驶员行为和我们每个模型所预计的行为

    3. 通过使用多模算法比较不同行为的可能性来概率的分类驾驶员的意图

    4. 推算过程模型来生成路径

    5. Defining Process models: 使用过程模型的数学技术, 来模型化不同的动作, 比如车道变换和跟随驾驶等

    ​ 过程模型

    我们需要用一些数学公式来表示这些模型:

    1. Using Process Models:过程模型首先用于比较目标车辆的观察行为和我们为每个演习创建的模型所期望的行为. 下面的图片有助于解释过程模型是如何用来计算这些可能性的.

    假设在一个路口有直行和右转两种行为. 我们现在时间点k-1上观察车辆状态, 然后再在时间点k上观察, 为了基于新的观察值来计算新的行为概率, 我们会从时间点k-1时候的状态出发来运行两个过程模型, 我们在时间点k得到两种预期状态, 我们可以在上图看到这两宗预期状态的坐标分布. 这个结果是通过对每个模型的观察值进行可能性度量得到. 而通过上图中的函数我们可以计算每个模型在t时刻点的概率. 很明显在这个路口车辆更像是右转.

    1. Classifying Intent with Multiple Model Algorithm: 使用多模估量器来处理维护预测伴随的不确定性, 也就是说在特定情况下, 目标将做何种动作的几率. 在本节顶部的图像中, 您可以看到一个条形图, 表示随着时间的推移各种集群的概率. 对于基于模型的方法, 多模型算法有着相似的用途: 它们负责维护每次机动概率的信念. 我们讨论的算法被称为自治多模型算法(AMM-Autonomous multiple model algorithm).

    变量M代表过程模型数或者行为数, μk(i)代表某种行为的几率大小.

    1. Trajectory Generation: 一旦我们有了一个过程模型, 轨迹生成就很简单了. 我们只是一遍又一遍地重复我们的模型, 直到我们生成了一个预测, 它跨越了我们应该覆盖的任何时间范围. 注意, 过程模型的每次迭代都必然会给我们的预测增加不确定性.
  3. Hybrid Approaches: 使用数据和过程模型来预测运动

    我们可以将基于模型方法中的多模预测器使用机器学习算法替换, 如Naive Bayes:

    • Intent Classification: 预测过程通过一个密集计算的分类循环完成, 该循环的主要工作是预测司机的动向并生成轨迹

    • Naive Bayes: 预测汽车如何运动(如在T型路口)

      高斯朴素贝利叶是指假设独特的特征变量的概率具有高斯分布

      1. 计算每个特征 / 标签组合的条件概率.

  • 19
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值