1. 系统框架

图 1.1 展示了 Planning 在整个自动驾驶系统中的上下游和数据流关系[1].

Apollo Plannig_人工智能

图 1.1 自动驾驶数据流

规划(Planning)接受上游包括定位(Localization)、高精地图(HD Map)、感知(Perception)和预测(Prediction)的信息, 生成轨迹之后交由控制(Control)去执行.

2. 规划的作用

Planning 模块在无人驾驶系统中负责决策和轨迹规划, 主要解决在已知当前位置、周围环境以及目标位置的情况下如何安全、高效、舒适地达到目标位置的问题[1].

Apollo Plannig_Routing_02

图 2.1 规划决策的层级

图 2.1 描述了 Planning 到 Control 的执行流程[2][3]. 即:

  1. 路由寻径(Routing Planning): 负责在宏观路网中形成衔接起点和终点的概略行车路线. 根据当前位置、目标位置、高精地图生成全局 Routing 信息.
  2. 行为决策(Behavioral Layer): 根据周围环境决定当前所处场景, 并针对当前场景做出合理的决策. 其中, 横向决策包括直行, 微微绕行, 借道绕行. 纵向决策包括减速让行, 加速抢行, 停车和跟车.
  3. 轨迹规划(Motion Planning): 在微观层面生成符合行为决策结果的时空连续轨迹. 即根据决策信息、自车状态信息、环境信息、地图信息、Routing 结果, 生成未来 8s 的轨迹信息. 最后 Planning 将生成的轨迹交由 Control 模块跟踪执行 .

3. 路由巡径

Routing 中最重要的是了解地图的拓扑结构, 如何将 A* 算法用于搜索, 以及 Cost 设计. 这里不进行展开. 详细见Routing.

4. 行为决策

行为决策的目的:

  • 保障无人车的行车安全并遵守交通规则
  • 为路径和速度的平滑优化提供限制信息

4.1. 输入输出

输入:

  • Routing信息
  • 道路结构信息: 当前车道, 相邻车道, 汇入车道, 路口
  • 交通信号和标识: 红绿灯, 人行横道, 停车标志
  • 障碍物信息: 障碍物类型, 位置, 大小, 速度, 预测轨迹 输出:
  • 路径信息: 路径长度, 左右限制边界
  • 速度限制和边界
  • 时间上的位置限制边界

4.2. 行为决策模型

行为决策模型分为四类, 其优缺点如下表所示:

Apollo Plannig_决策模型_03

4.3. 决策类型

Apollo Plannig_决策模型_04

5. 轨迹规划

5.1. 横纵解偶

Planning 模块将轨迹规划分解成路径规划和速度规划两个部分[4].

  • 路径规划: 生成车辆的可行驶曲线. 然后使用成本函数, 对每条曲线进行评估. 选择最低成本的路径.
  • 速度规划: 在选择的路径上, 考虑与障碍物的时空交集, 作出超车, 让行, 跟车, 停车等速度决策. 并使用优化算法, 对决策后的速度进行平滑, 最终得到一条最优的速度曲线. 通过将路径和速度曲线结合, 可以构建车辆的行驶轨迹.   

Apollo Plannig_路径规划_05

图 5.1 路径 - 速度规划解耦

5.2. 路径规划

路径规划的步骤:

  1. 对输入的中心线采集点进行平滑, 得到一条方向和曲率都连续的参考线.
  2. 将道路分割成单元格, 对单元格中的点进行随机采样, 通过将单元格中的点进行连接, 得到一组候选路径.
  3. 计算候选路径的成本, 考虑偏离参考线, 碰撞, 速度限制, 舒适度等要求.
  4. 从这些路径中, 选择成本最低的路径.

Apollo Plannig_人工智能_06

图 5.2 路径规划

5.3. 速度规划

速度规划需要使用 ST 图, 横坐标是时间, 纵坐标是行驶距离. 当斜率越大时, 行驶速率越快. 为了构建最佳的速度曲线. 需要把 ST 图网格化. 在每个单元格中, 假设速度不变. 这样得到一个近似的简化的速度曲线.

利用预测规划和 Path 的碰撞检测, 道路上的障碍物可以绘制成在特定时间段内, 阻挡道路的某些部分的矩形(准确的说应该时平行四边形?) 如1图所示.

  1. 绘制障碍物ST图
  2. 规划无碰撞的速度曲线
  3. 选择最佳速度曲线
  4. 速度曲线的平滑

Apollo Plannig_路径规划_07

图 5.3 速度规划