路径规划算法主要可分成两种,一种是基于搜索结果的规划,另一类便是本文中将要提及的基于采样的规划。
一般而言,基于搜索的规划(如Astar)通常是运行在栅格地图上的。当栅格的分辨率越大时,算法搜索的路径就会越优。
还有一类算法是基于采样的,主要就是RRT和它的变种算法。这类算法的核心在于随机采样,从父节点开始,随机在地图上生成子节点,连接父子节点并进行碰撞检测,若无碰撞,就扩展该子节点。
就这样,不断地随机扩展样本点,直到生成一条连接起点和终点的路径。如下图所示,RRT算法的扩展图与盘根错节的树枝十分相似。
这里我们简要讨论两种算法的区别,并配置Python+matplotlib环境来对路径规划算法进行研究。
搜索路径规划算法
这一大类算法,在移动机器人软件上常常是在occupAncy grid的格纹版图上进行计划(只能单纯地理解成二值地图的像素矩阵)以深入择优寻径算法、广度择优寻径算法、Dijkstra(迪杰斯特拉)算法为始祖,以A Star算法(Dijkstra算法上以减小运算量为目的加入了一种启发式代价)则更为常见。
如较近期的theta Star算子是在A Star算子的基础上加入了line-of-sight优化所以计划起来的路线不全然依赖于单独的栅格图形如图所示。
完备的运算的最大优点就在于其对解的信息捕获能力上是完全的,不过随之形成的最大弊端便是运算复杂性太大。
这些缺陷在二维的小尺寸栅格地图上并不突出,但在大尺寸,特别是在多维度规模问题上,如机器臂、蛇形机器人的规划问题将形成很大的计算代价,这也就径直促进了第二大类算法的诞生。
抽样路径规划算法
这些计算通常都是并不直观的在grid地图实现最小栅格分辨率的计划,但是它能够通过在版图上随意撒下特定密度的粒子,来抽象定义为现实版图上的辅助计划。
因此,PRM算法及其变种就是从原始版图上开始撒点,并通过抽取roadmap在这样的一种拓扑版图上展开计划;
而RRT和其更先进的变体RRT-connect,则是在版图上的每一区域内都能够开始撒点,以迭代生长树的方法,以连结起止点为目的,终于在所连结的版图上实现计划,如图所示。
虽然这种基于采样的计算速率比较快,但是所产生的路径损失(可认知为时间)较完备的计算高,而且会出现“有解求不出”的情形(PRM的逢Narrowspace卒的情形)。
这样的方式,通常会在更高维的城市规划等实际问题上广泛使用。
全部0条评论
快来发表一下你的评论吧 !