无人驾驶详解之规划篇

路径规划:解决不动的地图

输出:

从a到b的最佳路径

输入:

  1. 地图
    真实情况是由上层提供的地图数据,包括路网和实时交通信息(如果做毕业设计的话,我们可以自定义的建模)

  2. location
    车辆当前位置,由上层传感器定位获取

  3. aim place
    乘客或计划

具体过程:

  1. 将世界地图图化为“节点”和“边缘” 分别代表‘路段’、‘路口’


    无人驾驶详解之规划篇_第1张图片
    世界图化
  2. 采用图论中的算法,处理上述问题

经典算法

  1. A-star算法
    面对路径搜索的爆炸问题,加入cost函数计算两个成本:前往候选节点,从候选节点到目的地的成本
    成本估算可以根据实际情况自定义

轨迹生成:解决移动的不属于地图的物体

目标

生成一系列由路径点所规定的轨迹,为每个路径点分配时间戳和对应速度(加入速度的目的:确保能够按时到达对应的路径点),这部分需要和预测模块的输出相结合,确保生成的路径点与其他车辆的预测轨迹无冲突
生成路径点的3D trajectory:2D Position + Time
如果是飞机的话,生成的应该是4D航迹


无人驾驶详解之规划篇_第2张图片
轨迹生成

评价指标

  1. 避障: 不能与其他车辆,行人等有冲突
  2. 舒适: 路径点之间的过度,速度的变化都必须是平滑的
  3. 可执行: 无物理冲突,例如不能要求立即转弯180度
  4. 合法:遵循相关交通规定

成本函数

在规划出来的满足上述要求的轨迹可能有很多条,使用成本函数,为每条轨迹分配一个成本,通过成本函数将轨迹排序,选出最优轨迹

Frenet坐标

笛卡尔坐标在当前环境无法直观表现车辆特征,引入Frenet坐标系,纵坐标为车道S中心线,横坐标是处处与之垂直的线


无人驾驶详解之规划篇_第3张图片
Frenet坐标

路径速度解耦规划

解耦将轨迹生成分成了两步:

  1. 路径规划

    • 生成候选曲线
      1)首先在路径中生成单元格
      2)然后对单元格中的点进行随机取样
      3)每个单元格取点,将之连线,生成一条候选曲线
      4)重复3)步,构建多条候选曲线


      无人驾驶详解之规划篇_第4张图片
      多条候选曲线
    • 成本函数对路径进行评估(平滑度,安全性,车道中心的偏离等)

    • 成本函数排名,选择成本最低的路径

  2. 速度规划

    • 确定沿这条路线行进的速度(一系列的速度值,构成速度曲线)
      1) 使用工具ST图设计和选择速度曲线:s表示纵向位移,t表示时间,从而表征车辆在不同时间的位置。其中斜率表征当前速度值,曲线越陡,说明更短的时间t有更大的移动距离s


      无人驾驶详解之规划篇_第5张图片
      ST图

      2)为构建最佳速度曲线,将st图离散化为多个网格,每个网格的速度相同
      3)结合预测模块的输出,将其在ST图中做对应表示,具体如下图所示:


      无人驾驶详解之规划篇_第6张图片
      黄色区域是禁止区

      4)限制范围内的最优化选取曲线,限制可能包括:法律,例如限速;车距;汽车本身物理限制,例如加速度限制;
      使用最优引擎!
      无人驾驶详解之规划篇_第7张图片
      选取最优速度曲线

平滑处理

上一步的解耦操作,无论是纵向路径选择还是速度选择,都是基于离散化成网格做的相关操作。生成的路线都是一段一段的。

  • 二次规划技术 quadratic programming

Lattice规划

  1. 建立ST和SL轨迹
    ST轨迹:具有时间戳的纵向轨迹(与上述ST图一致)
    SL轨迹:相对于纵向轨迹的横向偏移
无人驾驶详解之规划篇_第8张图片
lattice规划步骤
  1. 车辆状态分类
    主要分为以下三种:巡航,跟随,停止
    巡航: 完成规划步骤后定速行驶

  2. 轨迹生成:合并ST,SL坐标为笛卡尔坐标系

  3. 基于有限状态机的新算法

你可能感兴趣的:(无人驾驶详解之规划篇)