百度Apollo规划决策模块学习记录-1 概述及基本算法


内容为百度技术学院apollo无人驾驶公开课的决策规划课程,资源在b站可以找到。



目录

  • Lecture 1
    • 对规划问题的理解
    • 对运动规划的理解
    • 从最简单的问题入手
    • 仍需考虑的问题
    • 运动规划的几个层次
    • 参考资料
  • Lecture 2
    • 对路径的约束
    • 离散化Configuration
    • Path Planning算法
    • 处理高维问题的方式
    • 无人车问题不是凸问题



Lecture 1

对规划问题的理解

规划问题的本质是搜索

  • 寻找能够使f(x)最小化的x,即argmin f(x)

  • 在车辆运动规划问题中,这个问题具体化为给定车辆现在的状态,找到怎么移动的最优解。

  • 最优解如何定义:通过目标函数定义

对运动规划的理解

对Motion Planning,可以从以下角度/领域来理解:

  • Robotic Fields:机器人学,如何生成让机器人到达目标的轨迹

    方法:RRT、A*、D*、Lattice Planning等

  • Control Theory:控制理论(控制与规划相结合)

    方法:动态规划,MPC,LQC等

  • AI:直接端到端地产生状态到行为的映射

    方法:强化学习等

从最简单的问题入手

对于运动规划的理解,可以从最简单的角度入手——Path Finding Problem,即不考虑时间维度,单考虑找到一条从起点到目标点的可行路径。这类问题有如下分类:

  • Non-informative/Informative Search

    以搜索方式来分类,利用/不利用目标位置等信息

    • BFS、DFS:不管是广度优先搜索还是深度优先搜索,都属于Non-informative Search
    • A*:加入启发式成本,利用起点和目标点之间的信息,属于Informative Search
  • Fully/Partially Observed Environment

    以所处环境来分类,环境全知/部分可知

    • A* 用于Global Routing,因为是Global Optimization,即要求对环境全知

    • 当环境非全知时,可采用增量式搜索,如D*

仍需考虑的问题

  1. 车辆无法执行不平滑的路径,还需考虑运动学模型和动力学模型
  2. 环境不仅非全知,且有动态障碍物
  3. 车辆需要遵守交通规则,如何在模型中融入交通规则
  4. 实时性,要求无人车的反映时间0.2-0.3秒(人驾车时的反映时间0.4-0.5秒)

运动规划的几个层次

  • 路径与轨迹的区别:“Trajectory = Path + Speed Profile”,即轨迹多了时间维度的描述
  • 个人觉得可以分这样的层次:Route(路线)→ Path(路径) → Trajectory(轨迹)
  • Motion Planning的层次
    • Layer 1:Global Routing
    • Layer 2:Motion Planning

参考资料

百度Apollo规划决策模块学习记录-1 概述及基本算法_第1张图片



Lecture 2

对路径的约束

  • Local Constraints 障碍物
  • Differential Constraints 曲率
  • Global Constraints 路径长度尽可能小

离散化Configuration

连续空间不宜解的问题先进行离散化,在离散化空间中尝试解决。将Configuration Space离散化的方式有以下几种:

  • Roadmap

    百度Apollo规划决策模块学习记录-1 概述及基本算法_第2张图片

    这里特别提醒到,最优解常经过障碍物的顶点,在后面处理凸优化问题时候同理,最优解常常是贴着“Constraints”的。

  • Cell Decomposition

    把Configuration Space离散一个个Cell去处理

  • Potential Field


Path Planning算法

  • PRM

    在对环境全知的情况下“撒点”,用点和点之间的连通性表示可达性。

    百度Apollo规划决策模块学习记录-1 概述及基本算法_第3张图片

  • RRT

    当环境非全知时,RRT的增量式搜索可以发挥作用,其思想和PRM相似,所以又称为增量式的PRM(An incremental search ver. of PRM)

    百度Apollo规划决策模块学习记录-1 概述及基本算法_第4张图片

    RRT和PRM的解都是折线,折线显然不满足自动驾驶的平滑性要求,因为折线拐点处相当于没有曲率,也可以认为是曲率无限大。基于这样的缺陷,算法有如下改进:不再用直线去将点连接,用平滑的线连接。

    百度Apollo规划决策模块学习记录-1 概述及基本算法_第5张图片

    但实际上这样的算法也有几个局限:

    1. 无法应对动态障碍物
    2. 最终解仍然不够平滑,是一种“扭来扭去”的形式
    3. 还是不太适合于structured road(即高速公路、马路等,对应unstructured road,如空地)
  • Lattice Sampling

    百度Apollo规划决策模块学习记录-1 概述及基本算法_第6张图片

    ​ 状态格算法有如下优点:

    • 限制采样点都是fixed,降低搜索难度,不再是指数级别的Sampling
    • 走过的arc的长度可以记录下来-“记忆性”,便于后续计算时复用,减少重复计算-“动态规划”
    • 在S-L坐标系下采样计算进一步提高了对structured road的适应性

处理高维问题的方式

运动规划有三个维度,x、y、t,同时处理三个问题十分困难,时间复杂度高。但可以用降维的思想,在一个维度上优化后再在另外一个维度上优化,比如先优化x-y,再优化s-t,不断迭代也可以收敛到一个Local Optimal,这样的局部最优解虽然不一定是全局最优解,但对无人车来说往往也够用了。找到Global Optimal是极其困难的,且处理要慢很多。


无人车问题不是凸问题

  • 无人车问题不是凸问题

    无人车问题不是凸问题,这给二次规划方法解决带来了难度。

    这里给出了车行驶时前方单障碍物的情景说明非凸性,车可以左边nudge,也可以从右边绕,但是这两种解加起来–从中间走,显然不可行。这说明可行域,即search space非凸,自然不是凸优化问题。

    百度Apollo规划决策模块学习记录-1 概述及基本算法_第7张图片

  • 如何将问题转化为凸问题?

    根据经验,选出一个凸可行域,再在这个空间里凸优化。比如这个例子中,只搜索从左边nudge的范围。

    百度Apollo规划决策模块学习记录-1 概述及基本算法_第8张图片

你可能感兴趣的:(Apollo,算法,人工智能)