机器人学习- 基于样本和概率的路径规划(一)

1.为什么是基于样本的规划?

由于在高维问题上这么大的空间使用离散规划,对其进行离散化是非常困难的;路径规划问题的复杂性随着C空间的维数呈指数级增长。

维数的增加

对于一个2维8连通空间,每个节点都有8个后继节点(8连通意味着可以从每个单元格横向或对角线移动)。想象一个8连通的三维空间,每个节点有多少个后继节点?26。随着C空间维数的增长,每个单元格的后继数量也大幅增加。事实上,对于n维空间,它等于3^n - 1。

机器人和机器人系统具有大量的维度是很常见的。譬如机械臂是一个六自由度机械臂,如果多个6自由度臂工作在一个公共空间,那么执行路径规划以避免碰撞所需的计算量将大幅增加。想想下面描述的类人机器人规划的复杂性,用组合方法来解决这类问题可能需要长得难以忍受的时间。

约束动力学

除了具有多自由度的机器人和多机器人系统,另一个计算难题涉及与具有约束动力学的机器人一起工作。例如,一辆汽车的运动是有局限的——向前或向后移动,以有限的转弯半径转弯;如下图所示:

当然,汽车不能横向移动,下图所示:

在汽车的情况下,路径规划时必须考虑更复杂的运动动力学-包括状态变量的导数(如速度)。例如,汽车的安全转弯半径取决于它的速度。

机器人系统可以分为两类:完整系统(Holonomic systems )非完整系统(Nonholonomic systems)。完整系统可以定义为每一个约束都完全依赖于当前姿态和时间的系统,而不依赖于任何关于时间的导数。另一方面,非完整系统依赖于导数。由于增加了约束条件,非完整系统的路径规划更加困难。

在本节中,将学习两种不同的路径规划算法,并了解如何针对不同的应用程序调整它们的参数。

3.弱化(降低)需求

组合路径规划算法在高维环境中应用效率太低,这意味着需要一些实际的妥协来解决问题!

与其寻找一个既完整又最优的路径规划算法,不如削弱算法的要求?与其渴望使用一个完整的算法,不如将需求削弱为使用一个概率上完整的算法。一个概率完整算法是指找到一条路径的概率,如果存在的话,当时间趋于无穷时,它会增加到1。

同样,对最优路径的要求也可以减弱为对可行路径的要求。可行路径是遵守所有环境和机器人约束的路径,如障碍物和运动约束。对于计算时间较长的高维问题,找到最优路径可能需要长得不可接受的时间,而找到可行路径则相对容易。找到可行路径证明了从起点到目标的路径是存在的,如果需要,可以对路径进行局部优化以提高性能。

基于样本的规划是概率完整的,它寻找的是可行路径而不是最优路径。

4.基于样本的路径规划

基于样本的路径规划不同于组合路径规划,因为它不试图系统地离散整个配置空间。相反,它随机(或半随机)对配置空间进行采样,以建立空间的表征。结果图不像使用组合规划创建的那样精确,但由于使用的样本数量相对较少,因此构造起来要快得多。

这种方法在概率上是完整的,因为随着时间的推移,样本的数量接近无穷大,找到一条路径(如果存在)的概率接近1。

这种方法在高维空间中非常有效,但它也有一些缺点。对一个空间进行统一采样不太可能达到小或狭窄的区域,例如下图所示的通道。由于通道是从起点移动到目标的唯一途径,因此有足够数量的样本占据通道是至关重要的,否则算法将返回“没有找到解决方案”,而这个问题显然有解决方案。

存在不同的基于样本的规划方法,每种方法都有各自的优点和缺点。接下来将了解到,

  • 概率路线图法

  • 快速探索随机树方法

还有路径平滑-一种可以使结果路径更有效的改进。

5.概率路线图(PRM)

算法

下面提供了用于PRM学习阶段的伪代码。

Initialize an empty graph
For n iterations:

   Generate a random configuration.
   If the configuration is collision free: 

      Add the configuration to the graph.
      Find the k-nearest neighbours of the configuration.
      For each of the k neighbours:

         Try to find a collision-free path between 
            the neighbour and original configuration. 
            If edge is collision-free: 
                Add it to the graph. 

在学习阶段之后,是查询阶段。

设置参数

PRM算法中有几个参数需要调整才能在特定应用中获得成功。首先,迭代次数可以调整-参数控制结果图的详细程度和计算所需的时间。对于大开放空间中的路径规划问题,额外的细节不太可能显著改善所得到的路径。然而,在障碍物之间通道狭窄的复杂环境中,需要额外的计算。注意,如果设置的迭代次数不够,如果样本不能充分代表空间,就会导致“路径未找到”。

机器人工程师需要做的另一个决定是如何为随机生成的配置寻找邻居。一种方法是寻找一个节点的k个最近邻居。为了有效地做到这一点,可以利用k-d树(k-d tree——将空间分解为带有节点的“容器”,然后在容器中搜索最近的节点。另一种选择是搜索距离目标一定距离内的任何节点。最终,环境知识和解决方案需求将驱动这个决策过程。

选择使用哪种类型的本地规划器是机器人工程师需要做出的另一个决定。对于大多数场景,一个简单的规划器是首选,因为检查边缘是否发生碰撞的过程会重复很多次(准确地说,是k*n次),效率是关键。然而,在某些问题上,可能需要更强大的规划器。在这种情况下,本地规划器甚至可以是另一个PRM。

概率完整

如前所述,基于样本的路径规划算法是概率完整的。现在已经看到了一个这样的算法,可以看到为什么会这样。当迭代次数趋于无穷大时,图趋于完整性,通过图的最优路径趋于现实中的最优路径。

变体

在这里学习的算法是PRM的普通版本,但它还存在许多其他变体。下面的链接讨论了实现PRM的几种备选策略,这些策略可能以更有效的方式产生更优的路径。

PRM是一个多查询规划器

学习阶段的实现时间明显长于查询阶段,后者只需要连接开始节点和目标节点,然后搜索路径。但是,学习阶段创建的图可以被许多后续查询重用。出于这个原因,PRM被称为多查询规划器。

这在静态或轻微变化的环境中非常有益。但是,有些环境变化太快,无法利用PRM的多查询属性。在这种情况下,PRM的额外细节和计算速度慢的特性不受欢迎。一个更快的算法将是首选的-一个不花时间在所有方向上不受开始和目标的影响。

6.快速搜索随机树法(RRT)

算法

下面提供了RRT学习阶段的伪代码。

Initialize two empty trees.
Add start node to tree #1.
Add goal node to tree #2.
For n iterations, or until an edge connects trees #1 & #2:

    Generate a random configuration (alternating trees).
    If the configuration is collision free: 
        Find the closest neighbour on the tree to the configuration 
        If the configuration is less than a distance δ away from the neighbour:
            Try to connect the two with a local planner.
    Else:
        Replace the randomly generated configuration 
            with a new configuration that falls along the same path, 
            but a distance δ from the neighbour.
        Try to connect the two with a local planner. 

    If node is added successfully: 
        Try to connect the new node to the closest neighbour.

设置参数

就像使用PRM一样,可以对一些参数进行调优,以使RRT对于给定的应用程序更有效。

这些参数中的第一个是抽样方法(即如何生成随机配置)。可以均匀采样——这将有利于广阔的未探索的空间,或者可以带着偏见采样——这将导致搜索朝着目标的方向贪婪地前进。在简单的规划问题中,贪婪可能是有益的,但在某些环境中,它可能会导致机器人陷入局部极小值。通常使用带有小偏差的均匀抽样方法。

下一个可以调优的参数是δ。当RRT开始生成随机配置时,这些配置中的很大一部分将位于距离图中最近的配置大于δ的位置。在这种情况下,随机生成的节点将决定生长方向,而δ为生长速率。

选择较小的δ会导致较大的节点密度和较小的生长速率。另一方面,选择一个大的δ可能会导致丢失细节,以及越来越多的节点无法连接到图中,因为与障碍物碰撞的几率更大。必须仔细选择δ,了解解决方案的环境和要求。

单一查询规划器

由于RRT方法从开始节点和目标节点开始探索图,因此结果图不能应用于解决其他查询。

RRT是一个单一查询规划器。然而,在解决路径规划问题时,RRT要比PRM快得多。这是因为它考虑了开始节点和结束节点,并将增长限制在现有图周围的区域,而不是像PRM那样扩展到所有遥远的角落。在动态环境中,RRT比PRM更有效地解决大型路径规划问题(例如数百维的问题)。

一般来说,RRT可以在几毫秒内解决7个维度的问题,而解决20多个维度的问题可能需要几分钟。相比之下,这类问题用组合路径规划方法是无法解决的。

RRT和非完整系统

虽然我们不会深入讨论这个主题的重要细节,但RRT方法支持非完整系统的规划,而PRM方法不支持。之所以如此,是因为在向图中添加节点时,RRT方法可以考虑额外的约束条件(例如汽车在特定速度下的转弯半径),就像它已经考虑了新节点与现有树的距离一样。

7.平滑路径Path Smoothing

算法:

下面的算法提供了一种通过捷径平滑路径的方法。对于n次迭代:

For n iterations:

    Select two nodes from the graph
    If the edge between the two nodes is shorter than the existing path 
     between the nodes:

       Use local planner to see if edge is collision-free. 
       If collision-free:

       Replace existing path with edge between the two nodes.

请记住,路径的距离并不是路径捷径算法唯一可以优化的东西——它可以优化路径的平滑度、机器人的预期能量消耗、安全性或任何其他可测量的因素。

应用路径捷径算法后,得到的路径更加优化。它可能仍然不是最优路径,但它至少应该向局部最小值移动。有更复杂的,知情的算法,可以提高路径快捷算法的性能。它们能够使用关于工作空间的信息来更好地指导算法获得更优的解决方案。

对于大型多维问题,优化路径所花费的时间超过首先寻找可行解决方案所花费的时间是很常见的。

8.整体的担忧

不完整

基于样本的规划是不完整的,它是概率完整的。在需要快速做出决策的应用程序中,PRM和RRT可能无法在困难的环境中找到路径,如下图所示。

要在上述环境中进行路径规划,可以引入替代抽样方法(如高斯或桥接抽样)。替代方法偏向他们的放置样本的障碍边缘或开放空间的顶点。

不是最优

基于样本的路径规划也不是最优的——虽然像A*这样的算法会在图中找到最优路径,但图并不是空间的完整表示,因此真正的最优路径不太可能在图中表示出来。

结论

总的来说,对于基于样本的路径规划,没有什么灵丹妙药的算法。PRM和RRT算法在大多数环境中都可以接受,而其他算法则需要定制解决方案。在一个应用程序中看到性能提高的算法,并不保证在其他应用程序中表现更好。最终,基于样本的路径规划使多维路径规划成为可能!

9.基于样本的规划总结

扩展阅读

至此,您已经具备了通读路径规划论文的知识。下面的论文,非圆形微型飞行器在约束环境下的路径规划( Path Planning for Non-Circular Micro Aerial Vehicles in Constrained Environments),讨论了四旋翼飞行器的路径规划问题。

这是一份令人愉快的读物,它总结了过去两部分的路径规划,因为它引用了许多已经学习过的规划方法,并介绍了当前路径规划的应用。阅读这篇论文将有助于对机器人这一分支的理解,也有助于对这一学科产生信心。

在阅读这篇论文时,可能会发现一些有用的额外定义:

  • Anytime algorithm(任何时间算法):任何时间算法是一种即使在完成整个空间搜索之前停止计算也会返回一个解的算法。算法规划的时间越长,得到的解决方案就越优。

  • RRT*: RRT*是RRT的一个变体,它试图在每一步都平滑树枝。它通过查看子节点是否可以与其父节点(或父节点的父节点等)交换以产生更直接的路径来实现这一点。结果是一条不那么曲折、更优的路径。

猜你喜欢

转载自blog.csdn.net/jeffliu123/article/details/130028632