视频链接:http://bit.baidu.com/Course/detail/id/294.html
part1:
规划的本质是搜索,即在构造空间中搜索处一条最优的轨迹,它包含了路径信息和速度配置信息。
规划在不同的领域有不同的含义:机器人领域:涉及RRT, A*,D* 等,控制领域,涉及MPC,LQR等,
而在最新的人工智能领域,是生成状态道动作的映射,如强化学习,模仿学习等。
无人车的规划问题,如果简单定义为一个路径搜索问题(静态路网路径查找),典型的可以使用BFS DFS A*等
多种方法。这些方法需要我们对全局路网都有一个预先的认知。但事实上我们只能得到附近的环境信息,此时我们
可以用贪心的策略,或者一种增量式的手段解决。对于动态路网,还有D*算法,D*也是目前月球无人车领域的主流
算法。
以上的搜索技术与无人车的规划有一些值得借鉴之处:
有一个目标函数,可以衡量距离,平滑度等等;启发式搜索的方法;局部规划中的增量式搜索(贪心)的思想
但还缺少不少东西:
对动态障碍物的考虑;计算的实时性要求;考虑运动学约束(汽车是典型的非完整约束系统);交通规则的考虑;
part2:
运动规划的基本方法有:
RRT 、Lattice(+polinomial)、基于优化的方法
【ps: 貌似目前是基于采样和基于优化的两种方法,基本上以基于优化的方法为主,基于Lattice的方法计算量,调参难度更大一些】
首先,我们需要解决的问题是连续空间如何离散化的问题。
方法之一是 Roadmap法 。构造一个简单的连通图,Visibility Graph将起始节点,所有障碍物的顶点和目标节点相互连接来构建路线图。这种方法对原始空间做了很多的抽象,把空间事实上降为成了一维的线路图,在连线结束时,建图的工作也完成了,图搜索只需要在这些已有的线中找结果就可以了。
方法之二是比较主流的网格划分法。Cell decomposition将整个空间分割成一个个cell。
方法之三就是,Potential field势场法,就是直接用微分方法处理。其实就是优化法最后所用的方法
PRM算法:一种常用的抽象连续空间的方法叫做PRM(随机路标图算法)。它在整个配置空间随机采样一些点,如果点在障碍物上则去掉,然后将这些点连接起来,如下图所示的紫色点,最终点与点之间连城路网,当然,我们可以控制撒点的数量,以及周围连接点的个数等等。对于局部感知,我们可以用增量式的算法解决问题。
RRT算法:(一种增量式的搜索PRM方法)以根节点为起始点,然后随机采样,增加叶子节点。每次撒点之后,若在目标点附近,则完成搜索,否则,选取已有节点中离新撒的点最近的点做延伸,如果被挡了就重新撒点。这种算法能够快速找出一条路径,但是他的曲率是不连续的。MIT提出使用平滑曲线进行连接的方法。但是该方法得到的路径还是不够平滑,另外对动态障碍物的处理也存在问题。
Lattice网格法:这种方法就是网格化后对不同路径采样,正常情况下这种方法的搜索空间是呈指数增长的。许多论文的工作是如何剪枝,压缩搜索量,如固定每个距离上sampling的点,简化计算。另外,在XY坐标系撒点不合适,这种方法进一步变成了在sl坐标系中撒点。sl坐标系下,有一个撒点方式是做分解,在s-t,l-t中分别采样。此外,还可以使用路径-速度迭代优化的方法对Lattice方法进行优化,也就是Polynomial方法。它将问题降维,分成了path 和 speed两个维度逐渐优化,这是一种iterative的处理方式。
最后一种方法就是,还可以把曲线functional化,对整个问题建模,设计相应的代价函数。二次规划就是其中一种常用的方法。
part3: