Robotics: Computational Motion Planning(路径规划)笔记(三):基于采样的方法-PRM和RRT算法

在上一个章节中,我们讨论了配置空间,在本章节中,我们将讨论在配置空间中随机采样一些点以寻找一条路径,这种方法称之为基于采样的方法,我们将会介绍其中最基础的两种算法,PRM(Probabilistic Road Map)概率路图法以及RRT(Rapidly-explorring Random Tree)快速扩展随机树法。

上一章链接:

Robotics: Computational Motion Planning(路径规划)笔记(二):配置空间(Configuration Space)

PRM(Probabilistic Road Map)概率路图法

什么是PRM?

  • 探测图结构的空间连通性;
  • 对free space的精细覆盖;
  • 把planning划分成两个阶段: 学习阶段(Learning phase) 和 查询阶段(Query phase)

接下来我们先介绍下PRM是怎么运作的。首先我们有一张配置空间下的地图(称之为C-space),如下图所示,红色是起始点,绿色是要到达的终点,灰色是障碍物,白色部分就是可以移动的区域,也就是free space,如下图左图所示。

Robotics: Computational Motion Planning(路径规划)笔记(三):基于采样的方法-PRM和RRT算法_第1张图片Robotics: Computational Motion Planning(路径规划)笔记(三):基于采样的方法-PRM和RRT算法_第2张图片

学习阶段(Learning phase)

首先,我们会在C-space上随机生成 N 个采样点,如上图右图所示。接下来我们会探测每个点是不是collision-free的,即是不是在free space上,否则就把这些点删除。

之后,我们把这些点连接起来,然后检测这些连线是不是collision-free的,如果不是就把连线删除。

Robotics: Computational Motion Planning(路径规划)笔记(三):基于采样的方法-PRM和RRT算法_第3张图片

查询阶段(Query phase)

最后我们就得到了一个图结构,那么很自然的,我们就可以用第一章学习的Dijkstra 算法或者 A* 算法来得到一条最近的路径。

Robotics: Computational Motion Planning(路径规划)笔记(三):基于采样的方法-PRM和RRT算法_第4张图片

存在的问题

当实际上确实存在路径,但障碍物形成了狭窄通行区域时,难以快速找到一条可行路径,如下图所示。事实上,这种算法是概率完备的,也就是说,如果真的存在可行路径,那么我们只要采样地足够多,那么总归就能找到一条路径,但是这就需要花费大量的时间。

Robotics: Computational Motion Planning(路径规划)笔记(三):基于采样的方法-PRM和RRT算法_第5张图片Robotics: Computational Motion Planning(路径规划)笔记(三):基于采样的方法-PRM和RRT算法_第6张图片

RRT(Rapidly-explorring Random Tree)快速扩展随机树法

在PRM过程中,基本思想是构造由随机样本和它们之间的边组成的自由空间的路线图。构建完成后,可以连接所需的起点和该图的端点并规划从一端到另一端的路径。

这次我们来讨论另一种基于采样的方法——RRT算法,RRT 过程通过构建一种称为树的特殊图结构来进行,其中每个节点与父节点相连,并且这棵树的根结点就是起始点,如下图所示:

Robotics: Computational Motion Planning(路径规划)笔记(三):基于采样的方法-PRM和RRT算法_第7张图片

Robotics: Computational Motion Planning(路径规划)笔记(三):基于采样的方法-PRM和RRT算法_第8张图片

接下来我们来讲其算法的基本流程:

1、首先在 C-space 中生成一个随机采样点 \large x_{rand}

Robotics: Computational Motion Planning(路径规划)笔记(三):基于采样的方法-PRM和RRT算法_第9张图片

2、之后在这棵树上遍历所有节点,找到离这个采样点最近的节点 \large x_{near}

Robotics: Computational Motion Planning(路径规划)笔记(三):基于采样的方法-PRM和RRT算法_第10张图片

 3、因为这个采样点是在 C-space 上随机采样的,所以可能会离我们的树很远,所以一般会在 \large x_{near} 朝着 \large x_{rand} 方向的一段距离(StepSize)上生成一个新的节点 \large x_{new},其父节点就是\large x_{near},然后连接 \large x_{new} 和 \large x_{near}。   

Robotics: Computational Motion Planning(路径规划)笔记(三):基于采样的方法-PRM和RRT算法_第11张图片

4、 如果它们连接的边通过了碰撞检测,那么就把这个节点加入到树里,否则不要这个新节点,进入下一个循环。Robotics: Computational Motion Planning(路径规划)笔记(三):基于采样的方法-PRM和RRT算法_第12张图片

 5、一般来说,如果新加入树的节点距离目标点小于一定的值,那么我们就可以把新节点和目标点连接起来进行碰撞检测,如果通过就找到了一条起始点到目标点的路径,这就是RRT算法的所有流程。Robotics: Computational Motion Planning(路径规划)笔记(三):基于采样的方法-PRM和RRT算法_第13张图片

RRT算法的优点及缺点:

优点:

  • 容易实现,其实这个算法确实简单易懂,也没有什么很复杂的地方。

缺点:

  • 这个算法并不是最优的,也就是说,当 C-space 中确实存在起点到目标点的路径时,这个算法可以找到一条路径,但这条路径并不是最短的。
  • 并且这个算法需要在整个 C-space 上采样,采样效率低下。

首先针对第一点,就提出了RRT*算法,这个算法就是RRT的改进版本,随着迭代次数的增多,能够找到一条最短的路径: 

Robotics: Computational Motion Planning(路径规划)笔记(三):基于采样的方法-PRM和RRT算法_第14张图片

针对第二点,在RRT*的基础上又改进了采样空间,提出了Informed RRT*,其主要思想就是先找到一条路径,然后以这条路径的长度参数化一个椭圆空间,在这个空间中采样就能保证找到一条最短的路径,提高采样效率:

Robotics: Computational Motion Planning(路径规划)笔记(三):基于采样的方法-PRM和RRT算法_第15张图片

这两种算法在这门课程中并没有讲到,如果有时间的话我会写一篇新的文章来仔细讲解一下相关的算法流程。

下一章链接:

Robotics: Computational Motion Planning(路径规划)笔记(完):人工势场法(Artificial Potential Fields)

你可能感兴趣的:(Robotics课程学习,自动驾驶,人工智能,机器学习)