其他分享
首页 > 其他分享> > 移动机器人 | 全局路径规划

移动机器人 | 全局路径规划

作者:互联网

移动机器人 | 全局路径规划

 

 

 主要介绍移动机器人主要的路径规划方法及分类,并详细介绍了Dijkstra全局路径规划方法。

对于生物来说,从一个地方移动到另一个地方是一件轻而易举的事情。然而,这样一个基本且简单的事情却是移动机器人面对的一个难题。路径规划是移动机器人的核心问题,它研究如何让移动机器人从起始位置无碰撞、安全地移动到目标位置。安全有效的移动机器人导航需要一种高效的路径规划算法,因为生成的路径质量对机器人的应用影响很大。

简单来说,移动机器人导航需要解决如下三个问题:我在哪?我要去哪?我怎么去那?这三个问题分别对应移动机器人导航中的定位、建图和路径规划功能。定位用于确定移动机器人在环境中的位置。移动机器人在移动时需要一张环境的地图,用以确定移动机器人在目前运动环境中的方向和位置。地图可以是提前人为给定的,也可以是移动机器人在移动过程中自己逐步建立的。而路径规划就是在移动机器人事先知道目标相对位置的情况下,为机器人找到一条从起点移动到终点的合适路径,它在移动的同时还要避开环境中分散的障碍物,尽量减少路径长度。

在路径规划中主要有三个需要考虑的问题:效率、准确性和安全性。移动机器人应该在尽可能短的时间内消耗最少的能量,安全地避开障碍物找到目标。如图7-1所示,机器人可通过传感器感知自身和环境的信息,确定自身在地图中的当前位置及周围局部范围内的障碍物分布情况,在目标位置已知的情况下躲避障碍物,行进至目标位置。

 

 

 ■ 图7-1路径规划与运动示意图

根据移动机器人对环境的了解情况、环境性质以及使用的算法,可将路径规划分为基于环境的路径规划算法、基于地图知识的路径规划算法和基于完备性的路径规划算法,如图7-2所示。

 

 

■ 图7-2路径规划算法的分类

 

环境情况:移动机器人的环境可以分为静态环境和动态环境。在静态环境中,起点和目标位置是固定的,障碍物也不会随时间改变位置。在动态环境中,障碍物和目标的位置在搜索过程中可能会发生变化。通常,由于环境的不确定性,动态环境中的路径规划比静态环境中的路径规划更复杂。实际环境通常是未知变化的,路径规划算法需要适应环境未知的变化,例如突然出现的障碍物或者是目标在持续移动时。当障碍物和目标都在变化时,由于算法必须对目标和障碍物的移动实时做出响应,路径规划就更加困难了。

完备性:根据完备性,可将路径规划算法分为精确的算法和启发式算法。如果最优解存在或者证明不存在可行解,那么精确的算法可以找到一个最优的解决方案。而启发式算法能在较短的时间内寻找高质量的解决方案。

地图知识:移动机器人路径规划基本上是依靠现有的地图作为参考,确定初始位置和目标位置以及它们之间的联系。地图的信息量对路径规划算法的设计起着重要的作用。根据对环境的了解情况,路径规划可以分为全局路径规划和局部路径规划。其中,全局路径规划需要知道关于环境的所有信息,根据环境地图进行全局的路径规划,并产生一系列关键点作为子目标点下达给局部路径规划系统。在局部路径规划中,移动机器人缺乏环境的先验知识,在搜索过程中,必须实时感知障碍物的位置,构建局部环境的估计地图,并获得通往目标位置的合适路径。全局路径规划与局部路径规划的区别见表7-1。

表7-1全局路径规划与局部路径规划的区别

 

 

 

移动机器人导航通过路径规划使其可以到达目标点。导航规划层可以分为全局路径规划层、局部路径规划层、行为执行层等。

(1) 全局路径规划层。依据给定的目标,接受权值地图信息生成全局权值地图,规划出从起点到目标位置的全局路径,作为局部路径规划的参考。

(2) 局部路径规划层。作为导航系统的局部规划部分,接受权值地图生成的局部权值地图信息,依据附近的障碍物信息进行局部路径规划。

(3) 行为执行层。结合上层发送的指令以及路径规划,给出移动机器人的当前行为。

作为移动机器人研究的一个重点领域,移动机器人路径规划算法的优劣很大程度上决定了机器人的工作效率。随着机器人路径规划研究的不断深入,路径规划算法也越来越成熟,并且朝着下面的趋势不断发展: 

(1) 从单一机器人移动路径规划算法向多种算法相结合的方向发展。目前的路径规划方法每一种都有其优缺点,研究新算法的同时可以考虑将两种或两种以上算法结合起来,取长补短,克服缺点,使优势更加明显,效率更高。

(2) 从单机器人路径规划到多机器人协调路径规划发展。随着机器人(特别是移动机器人)越来越多地投入到各个行业中,路径规划不再仅局限于一台移动机器人,而是多个移动机器人的协调运作。多个机器人信息资源共享,对于路径规划方面是一大进步。如何更好地处理多个移动机器人的路径规划问题需要研究者重点研究。

01、全局路径规划

全局路径规划是指机器人在障碍环境下按照一种或多种性能指标(如最短路径等),寻找一条起点到终点的最优无碰撞路径。全局规划首先要建立环境模型,在环境模型里进行路径规划。环境建模是指对机器人实际的工作环境进行抽象转换,换成算法可识别的空间,如可根据构型空间理论,考虑安全阈值后,取机器人能自由活动的最小矩形空间作为栅格单元,将机器人的工作空间划分为栅格。如此,便可根据机器人及实验场地大小选择合适的栅格尺寸。栅格法是移动机器人全局路径规划中公认最成熟、安全系数最高的算法,但此方法受限于传感器,且需要大量运算资源。除栅格法外,还有构型空间法、拓扑法、Dijkstra算法、A*算法等。下面着重介绍Dijkstra算法。

 

Dijkstra算法

 

Dijkstra算法由荷兰计算机科学家 E.W.Dijkstra 于 1956年提出。Dijkstra 算法使用宽度优先搜索解决带权有向图的最短路径问题。它是非常典型的最短路径算法,因此可用于求移动机器人行进路线中的一个节点到其他所有节点的最短路径。Dijkstra 算法会以起始点为中心向外扩展,扩展到最终目标点为止,通过节点和权值边的关系构成整个路径网络图。该算法存在很多变体,最原始的Dijkstra算法是用于找到两个顶点之间的最短路径,但现在多用于固定一个起始顶点之后,找到该源节点到图中其他所有节点的最短路径,产生一个最短路径树。除移动机器人路径规划外,该算法还常用于路由算法或者其他图搜索算法的一个子模块。Dijkstra算法伪代码见表7-2。

表7-2 Dijkstra算法伪代

 

 

算法中,G为带权重的有向图,s是起点(源点),V表示G中所有顶点的集合,(u,v)表示顶点u到v有路径相连,w(u,v)表示顶点u到v之间的非负权重。算法通过为每个顶点u保留当前为止找到的从s到v的最短路径来工作。初始时,源点s的路径权重被赋为0,所以d[s] = 0。若对于顶点u存在能直接到达的边(s,u),则把d[v] 设为w(s, u),同时把所有其他s不能直接到达的顶点的路径长度设为无穷大,即表示当前还不知道任何通向这些顶点的路径。当算法结束时,d[v]中存储的便是从s到u的最短路径,或者,如果路径不存在,则其值是无穷大。

Dijkstra算法中边的拓展如下:如果存在一条从u到v的边,那么从s到v的最短路径可以通过将边(u, v)添加到从s到u的路径尾部拓展一条从s到v的路径。这条路径的长度是d[u] + w(u, v)。如果这个值比当前已知的d[v]的值小,则可以用新值替代当前d[v]中的值。拓展边的操作,一直运行到所有的d[v]都代表从s到v的最短路径的长度值。此算法的组织令d[u]达到其最终值时,每条边(u,v)都只被拓展一次。

算法维护两个顶点集合S和Q。集合S保留所有已知最小d[v]值的顶点v,而集合Q则保留其他所有顶点。集合S的初始状态为空,而后每一步都有一个顶点从Q移动到S。这个被选择的顶点是Q中拥有最小的d[u]值的顶点。当一个顶点u从Q中转移到S中,算法对u的每条外接边(u, v)进行拓展。

同时,上述算法保留图G中源点s到每一顶点v的最短距离d[v],同时找出并保留v在此最短路径上的“前趋”,即沿此路径由s前往v,到达v之前所到达的顶点。其中,函数Extract_Min(Q)将顶点集合Q中有最小d[u]值的顶点u从Q中删除并返回u。

在移动机器人导航应用中通常只需要求起点到目标点间的最短距离,此时可在上述经典算法结构中添加判断,判断当前点是否为目标点,若为目标点,即结束。

若用O表示算法时间复杂度,则边数m和顶点数n是时间复杂度的函数。对于顶点集Q,算法的时间复杂度O(|E|·dkQ+|V|emQ),其中dkQ和emQ分别表示完成键的降序排列时间和从Q中提取最小键的时间。Dijkstra算法最简单的实现方法是用一个数组或者链表存储所有顶点的集合Q,故搜索Q中最小元素的运算Extract_Min(Q)只需要线性搜索集合Q中的所有顶点元素,此时时间复杂度为O(n2)。

边数少于n2的为稀疏图。对于稀疏图,可用邻接表更有效地实现,同时需要将一个二叉堆或者斐波那契堆做优先队列查找最小顶点。使用二叉堆的时间复杂度为O((m+n)log n),而使用斐波那契堆的时间复杂度为O(m+n log n)。

标签:路径,Dijkstra,移动机器人,算法,顶点,全局,规划
来源: https://www.cnblogs.com/TiAmo-zhang/p/16053022.html