最近在做移动机器人路径规划相关的topic,打算对路径规划算法做一个调研,并写下这篇记录。本博文的大部分内容来源于网络的博客或者论文,相关的参考也会给出来。本博文仅作本人学习记录用。

 

目录

引言

什么是路径规划?

路径规划发展趋势

多传感器融合路径规划

多机器人协作路径规划

多算法融合路径规划 

路径规划算法分类

机器人传统路径规划方法

可视图法 

栅格法 

人工虚拟势场法

机器人智能避障路径规划方法

遗传算法

蚁群算法 

其他

导航方法的分类

现有的服务机器人室内定位技术

基于航迹推算的定位技术

基于信号灯的定位方法

基于地图的定位方法

基于路标的定位方法

基于视觉的定位方法

基于智能终端设备的室内路径规划系统

参考资料


 

引言

机器人为人类提供的所有服务都是以导航控制为基础的。而导航控制中,就包括了定位及导航。其中路径规划则是导航中的很关键的一个环节。对于机器人的运控而言,其实包括了:运动规划(motion planning)和路径规划(path planning)。对于路径规划或者运动规划,在多机器人协同中同样非常重要。之前的博客《paper survey之——多机器人协作介绍(Multi-Robot System, MRS)》也有涉及到这方面的介绍。而本博文则是focus在路径规划这部分上

导航控制算法是决定机器人行为的核心。导航控制模块包括全局路径规划和局部路径规划。全局路径规划是以已有的电子地图为标准建立一条从起始点到目标点的可行路径。局部路径规划又称为局部避障,是指在机器人运行过程中传感器扫描到未知障碍物,并重新定义局部路径绕过障碍向目标点前进的过程。全局路径规划算法和局部路径规划算法共同作用才能使机器人完成从起始点到目标点的自主移动。

自主导航作为一项核心技术,是实现移动机器人感知和行动能力的关键。而路径规划和定位则是组成移动机器人导航控制系统的重要部分,是实现移动机器人自主化、智能化的有效途径。

通常,智能移动机器人在导航过程中需要解决存在的三个基本问题:一是移动机器人自身的位姿问题;二是给定移动机器人所要执行的目标,即任务规划;三是移动机器人执行任务所选择的路径,即为路径规划问题。

python opencv路径规划 python路径规划导航_python opencv路径规划

 

什么是路径规划?

室内路径规划指的是根据用户的起始位置、终点位置和室内地图为用户规划出一条行走距离最短的可通达路线。

移动机器人路径规划的目标是通过环境感知与主动避障功能找到一条可行的最佳路径,此路径从起始点至终点在给定的工作空间中不与任何障碍物相交,同时要优化机器人运动路径,使其尽可能达到更短、更平滑的要求。

路径规划(Path Planning):路径规划的目的是找到一条最优的路径,同时该路径满足在给定的环境中从起点到终点始终不与任何障碍物相交。机器人路径规划生成的路径轨迹对其运动起着导航的作用,可以引导机器人从当前点避开障碍物到达目标点。路径规划主要分为两步进行:(1)建立包含有障碍物的区域和自由移动区域的环境地图模型;(2)在建立的环境地图模型基础上选择合适的路径搜索算法,以便实现快速、实时的路径规划。路径轨迹的产生过程如下图所示。 

python opencv路径规划 python路径规划导航_移动机器人_02

全局规划是在空间地图信息全部已知的情形下,通过划分障碍物区域和自由区域的边界,确定可行或最优的路径轨迹。但是如果机器人处在一个变化的环境当中时,就需要采用局部规划检测移动机器人周围变化的环境信息,从而规划出切实可行的路线。二者之间是存在相互联系的,都是任务决策系统的组成部分,局部路径规划是由全局路径作为引导,依靠从传感器获得的局部环境信息来生成实时的路径轨迹。

移动一个简单的物体(object)看起来是容易的。但路径搜索却是非常复杂的。为什么涉及到路径搜索就产生麻烦了?考虑以下情况:

python opencv路径规划 python路径规划导航_python opencv路径规划_03

如上图所示,物体在start点,目标是goal。对于非智能体,一开始,很自然的,物体一直沿着红线往goal的方向运动,直到其检测到障碍物,然后改变方向,沿着U形障碍物找到它的红色的路径。相反的,如果存在路径规划(路径搜索器,pathfinder)物体将可以扫描一个更大的区域(整个空间),从而可以使物体不用走进U形障碍物而直接行走一条更短的路径(蓝色路径)。又或者如下图红色路径那样。Pathfinders let you plan ahead rather than waiting until the last moment to discover there’s a problem. There’s a tradeoff between planning with pathfinders and reacting with movement algorithms. Planning generally is slower but gives better results; movement is generally faster but can get stuck. If the game world is changing often, planning ahead is less valuable. I recommend using both: pathfinding for big picture, slow changing obstacles, and long paths; and movement for local area, fast changing, and short paths.

python opencv路径规划 python路径规划导航_python opencv路径规划_04

 

路径规划发展趋势

当前,随着计算机技术和自动化技术等高速发展,移动机器人相关研究也取得了巨大的进展。与此同时,对移动机器人路径规划技术的要求不断提高,未来路径规划的研究方向将会集中在以下三点: 

多传感器融合路径规划

传感器如同人类的视觉、嗅觉、触觉器官一般,是移动机器人感知周围环境信息的重要组成部分。通常情况下,利用一种传感器获取的环境信息准确性较低,不能精确地对真实环境进行表达,会对之后的行为决策产生不利影响。所以,同时应用视觉、雷达等传感器信息互补,对路径规划的精确性发挥着重要的作用。

多机器人协作路径规划

在任务繁重、高负荷条件中进行路径规划,单一机器人的工作效率较低,难以在较短时间内完成工作任务。因此,采用多个机器人相互协作共同完成指定任务是未来研究的方向。

个人感觉这一点是三点中最优发展潜力的。多机器人的协调运动,在运控中要避免碰撞等。之前的博文《paper survey之——多机器人协作介绍(Multi-Robot System, MRS)》也有提到相关的

多算法融合路径规划 

在某些条件下,对于单一算法工作效率较低的情况,多算法融合效果明显增强。所以,如果需要提高算法的环境适应能力,需将算法进行有效地结合,以达到理想状态的路径轨迹。

 

路径规划算法分类

        移动机器人在有障碍物的环境中,按照某些性能指标和约束条件寻找一条从机器人当前点到目标任务点的最优或近似最优的避障路径,即机器人路径规划。路径规划的好坏,直接影响机器人任务完成的实时性及质量优劣。根据机器人对其工作环境内信息的理解程度,机器人路径规划大致分两种类型,即基于局部环境信息理解的路径规划(又称局部路径规划)和基于全局环境信息理解的路径规划(又称全局路径规划),前者是机器人通过实时融合自身各种传感器获取的信息,提取理解的有效局部环境特征,在线实时规划局部路径,具有很高的灵活性和实时性,其缺点是依靠局部环境特征规划的路径可能是局部最优,甚至是目标不可达路径;而后者需要移动机器人根据理解所在环境的全局信息特征,建立所在环境映像的抽象的全局地图模型,在构建的全局地图模型上使用搜索寻优算法获取全局最优路径或较优路径,并能引导机器人在实际环境向目标安全移动,其主要涉及两部分内容:环境地图理解及构建和路径搜索引导策略。在机器人路径规划中,往往需要融合兼用全局路径规划和局部路径规划,前者旨在寻找全局优化路径,后者旨在实现实时避障规划。

全局路径规划,一般是在规划前已经了解所要执行任务的环境先验信息,为移动机器人设计离线避障优化路径的行为。而对于在规划前环境信息全部或部分未知,障碍物的信息主要包括尺寸、位置和形状等信息需由移动机器人所携带的传感器来进行实时更新,从而获得周围局部范围内的障碍物实际分布情况。在此信息来源方式下构造出一条无碰撞安全优质路径的行为则属于局部路径规划范畴。局路径规划的目标是在给定环境中的障碍物分布情况的前提下,寻找一条从起始节点到目标节点间的最佳无碰撞路径。最优的无碰路径通常需要用一些标准来衡量,比如距离、时间、光滑度或能量,而距离和时间是其中最常见的标准。如果移动机器人初始位姿、环境及目标均为己知,则导航问题转化为全局路径规划问题。

        根据机器人应用环境及智能化程度的不同,其路径规划主要分为基于几何模型的传统路径规划方法和基于仿生智能优化算法的路径规划方法。 

机器人传统路径规划方法

依据不同环境对规划路径的要求不同,机器人传统路径规划主要有三种方法:拓扑法、自由空间规划法和势场法,它们分别对应于路径规划的三个层次。在大环境中,人类在进行规划路径时,不是首先考虑环境中障碍物分布的精确位置,而是将要规划的环境划分为拓扑特征一致且具有连通性的若干子区域,在这些具有连通性区域搭建的网络上寻找一拓扑路径,即拓扑法,其只能反映真实环境中各点之间的相互连接关系,并不能构建与真实环境几何一致的地图。而如果需要进一步考虑具体的几何细节及几何路径,即基于自由空间的路径规划方法,常用的方法有可视图法栅格法等。在机器人的运动控制过程中,当机器人进入障碍
物影响区域内时,一般采用人工虚拟势场法进行局部避障路径规划,相比较于拓扑法及自由空间规划法,人工虚拟势场法具有较高的精度,目前后两种方法应用较广。 

python opencv路径规划 python路径规划导航_python opencv路径规划_05

传统的路径规划方法多是根据环境模型的描述形式,采取相对简单的类似于几何数学模型的算法(如几何法、启发式算法)完成机器人路径的搜索。

可视图法 

可视图法分别将机器人和障碍物假设为一质点和近似多边形,用可视的线段将质点、目标点及多边形的各顶点进行有序的组合连接,即连线不能穿越障碍物多边形,将机器人路径规划问题转换为搜索起始点到目标点之间最短线段集合,常采用 A*算法或其改进算法搜索最短路径。由于搜索的路径是连接障碍物顶点的线段,机器人易与障碍物发生碰撞,当环境障碍物、特征信息量较多时,搜索路径的时间较长;同时可视图法灵活性较差,对环境的适应性及实时性较差,不能保证所寻的路径是全局最优。 
切线图法是可视图法的改进方法,用障碍物的切线表示弧,降低了机器人与障碍物碰撞的几率,缺点是当机器人控制误差较大时,同样易与障碍物发生碰撞;在误差允许的情况下,采用切线法规划路径常选择远离障碍物的路径表示弧。可视图法多与启发式搜索算法结合来完成机器人路径规划,如 A*、Dijkstra 等。

栅格法 

栅格法是用不同性质及不同序号的两类栅格描述机器人工作环境,即自由栅格障碍栅格,自由栅格区域内不含障碍物,障碍栅格区域内包含障碍物。机器人路径规划问题就转换为搜索工作空间内可行栅格的有序集合。该方法以栅格为基本单位记录机器人所在环境信息,栅格尺度越大,特征地图的描述越粗糙,规划的路径质量越差,误差也越大;栅格尺度越小,环境障碍物描述的越精确,规划的路径质量越好,但此是以大量的存储空间及搜索算法的复杂度为代价,因此,应根据具体的应用环境,选择合适的栅格尺度及相应的优化搜索栅格有序集合的算法。栅格地图既可以描述真实环境的很多特征,又可以实现时间和空间消耗最优,因此,栅格地图是当前广泛采用的环境地图的描述方法。

人工虚拟势场法

工虚拟势场法是一种有效的局部路径规划方法[9]。其主要思想是将机器人工作的环境描述为虚拟的势场,目标点为机器人的引力源,而障碍物为机器人的斥力源,在两力的合力作用下,机器人实时有效地规避障碍物并沿着无碰撞路径向目标点移动。人工虚拟势场法因其数学原理简单、实时性高及生成路径平滑等优点在机器人局部路径规划中有着广泛的应用,但该方法存在固有的缺陷:其一,由于其规划的路径是依据有限的局部环境信息,缺乏全局环境上宏观自我调节能力,极易陷入局部最优;其二,由于力的不平衡是机器人移动的主要因素,其极易在非目标点处达到力平衡,从而产生目标不可达现象;其三,在障碍物之间的狭窄空间里,极易陷入徘徊抖动等不稳定状态。 
 

机器人智能避障路径规划方法

 随着环境特征信息的增加及所需完成任务难度的增加,基于传统的简单几何数学模型的机器人路径规划方法难以取得较为理想的效果,研究者根据自然界一些生物的习性,将其本能应用到机器人路径规划中,提出了仿生智能优化算法,该类算法是采用群体行为在复杂解空间中寻找全局最优解,其具有随机、并行和分布式的特点。由于这些仿生优化算法具有跨学科领域的寻优策略和避免陷入局部最优的潜在能力,其在路径规划领域取得了较好的效果,比较有代表性的有遗传算法和蚁群算法。

遗传算法

 遗传算法是美国 Michigan 大学的Holland JH教授于20世纪60 年代末提出,其用选择、复制、交叉和变异等操作,模拟自然界生物遗传及进化过程而提出的一种自适应全局优化概率搜索算法。遗传算法是一种迭代算法,由于其具有较好的全局寻优能力和并行计算特性,是目前机器人路径规划研究中应用较成熟的一种方法。其将初始集经过选择、复制、交叉和变异等操作不断迭代计算获得新的解集,并依据个体的适应度,遵循自然界“适者生存”和“优胜劣汰”的原则,引导生物搜索过程向“最适应环境”的个体(最优路径)逼近,并最终收敛到最优解(最优路径)或次优解(近似最优路径)。

由于自然界的生物进化是一个多种群漫长进化过程,模拟此过程的遗传算法需要大规模的种群及大的搜索空间,易早熟及收敛速度慢是遗传算法在进行机器人路径规划时存在两大问题,前者会产生局部最优,后者会降低算法的实时性,影响其搜索路径效率。为此,大量的研究工作对其进行了改善

蚁群算法 

 蚁群算法是生物学家经过对自然界中蚂蚁觅食过程的长期细致观察,发现该生物群中个体通过一种信息媒介协作完成寻找蚁巢到食物源最短路径的任务。在蚂蚁寻找食物的运动过程中,蚂蚁个体会在所经过的路径上留下随时间而挥发的信息素,且能感知前代蚂蚁所留的信息素及其强度,并依据信息素浓度高低指导自己的觅食方向,遗留在路径上的信息素也成为蚂蚁个体之间信息交流的“媒介”。由于相等时间内,选择信息素浓度较高的短路径的蚂蚁个体数量较多,其遗留在较短路径的信息素浓度也会随之增强,根据蚂蚁这种依据“信息素交流机制”来觅食的群体行为,本质是一个群体从无序到有序的动态优化过程,其隐含的并行处理性能使其应用领域不断扩大。蚁群算法是一种随机搜索寻优方法,其在寻优过程中,要逐渐遗忘历史信息,不断探索新的路径信息,即信息素挥发机制,其赋予了蚁群的创新和探索未知空间的潜在能力。

根据自然生物习性衍生的蚁群算法,采用模拟自然界真实蚂蚁生物习性的随机概率选择和信息素的挥发机制及正反馈机制,其有局限性,即随机性易导致算法收敛速度慢,正反馈及挥发机制易使算法陷入局部最优,其需要解决的关键问题是在“探索”和“利用”之间寻找一个平衡点,既要使蚁群算法搜索空间尽可能大(即随机性大,复杂度高),以便其能够在“觅食”过程中寻找到全局最优路径,又要利用先验知识(即距离信息、启发信息和信息素),使系统以较大的概率较快地收敛到全局最优,其本质是解决蚁群算法全局搜索能力与收敛到全局最优速度的矛盾,即随机性和信息素更新强度的矛盾。为此,不少研究者对相关问题进行大量的深入研究,寻求降低其复杂度及深度的改进优化算法。

影响蚁群算法性能的主要因素是信息素更新机制和路径搜索策略,因此,国内外研究者主要从参数优化、信息素更新机制和路径搜索策略等方面改进。

除此以外,研究者提出了其它很多智能优化算法,诸如模糊控制,人工蜂群、神经网络、蛙跳算法、免疫算法、帝国竞争算
法、萤火虫算法、鱼群算法等等。

 

 

 

 

其他

这一part主要是对一些跟本博文相关的技术做些简要的介绍

导航方法的分类

现有的室内导航方法分为如下两类:第一类室内导航方法是基于室内定位系统和室内地图的室内导航方法。此类室内导航方法依赖于室内定位系统和室内地图的构建。第二类室内导航方法是自我可部署的室内导航方法,即不依赖于室内定位系统和室内地图。使用多种传感器数据(惯性传感器数据和图像)来引导用户到达终点位置。

 

现有的服务机器人室内定位技术

说到导航或者路径规划,肯定离不开定位,这里简要介绍一下几种室内定位技术。室内移动服务机器人主要应用在一种结构化的工作环境下,如家庭、医院等。导航系统是服务机器人中不可缺少的重要部分,它要解决的重要问题是:1、机器人在空间的位置、方向、环境信息的精确检测;2、所获信息的分析及环境模型的建立;3、使机器人安全移动的运动路径规划,在未知和不确定环境下运行时,移动机器人必须通过传感器收集数据,并通过一定的算法把传感器收集到的数据进行分析,融合用来建立外部环境的模型,正确、全面的反映出外部环境的特征,为导航决策提供正确的依据。

现有的室内服务机器人定位导航技术主要有以下几种:

基于航迹推算的定位技术

航迹推算不需要外部传感器信息来实现对车辆位置和方向的估计,并且能够提供很高的短期定位精度。航迹推算技术的关键是要能测量出移动机器人单位时间间隔走过的距离。以及在这段时间内移动机器人航向的变化。这种方法具有自包含优点,即无需外部参考。然而,随时间有漂移,积分之后,任何小的常数误差都会无限增长。因此,对于长时间的精确定位是不适用的。

基于信号灯的定位方法

信号灯定位系统是船只和飞行器普遍的导航定位手段。基于信号灯的定位系统依赖一组安装在环境中已知的信号灯。在移动机器人上安装传感器,对信号灯进行观测。用于环境观测的传感器有很多种,可以是主动的信号,比如主动视觉、超声波、激光雷达、毫米波雷达收发器,也可以是被动的信号,比如GPS、被动视觉:信号灯经过很短的处理过程能够提供稳定、精确的位置信息。虽然这种定位方法提供很高的采样率以及极高的稳定性,但是安装和维护信标成本很高。

基于地图的定位方法

在基于地图的定位技术中,地图构建是其中的一个重要的内容。当前主要有拓扑结构描述地图和几何地图两种。

拓扑地图抽象度高,有以下优势: ①有利于进一步的路径和任务规划;②存储和搜索空间都比较小, 计算效率高; ③可以使用很多现有的成熟、高效的搜索和推理算法。 缺点:拓扑地图是一个图(Graph),由节点和边组成,只考虑节点间的连通性,例如A,B 点是连通的,而不考虑如何从A 点到达B 点的过程。它放松了地图对精确位置的需要,去掉地图的细节问题,是一种更为紧凑的表达方式。然而,拓扑地图不擅长表达具有复杂结构的地图。如何对地图进行分割形成结点与边,又如何使用拓扑地图进行导航与路径规划,仍是有待研究的问题。

几何地图可以是栅格描述的,也可以是用线段或者是多边形描述的, 优点是建立容易,尽量保留了整个环境的各种信息, 定位过程中也不再依赖于对环境特征的识别,但是, 定位过程中搜索空间很大,如果没有较好的简化算法,就难以满足实时性要求。栅格地图构建了一个精确的环境地图,通过对观测的信息与地图进行配准就可以计算机器人的位置(如下图所示)。

python opencv路径规划 python路径规划导航_路径规划_06

基于路标的定位方法

路标是机器人能从其传感输入所能认出的不同特性。路标可以是几何形状(如线段,圆,或矩形),也可包括附加信息。一般情况,路标有固定的和已知的位置。路标要认真仔细地选择,以利于识别,为了简化路标获取问题,常常假设当前机器人的位置和方位近似已知,这样就可使机器人在一个有限的区域内寻找路标。其优点是方便易于实现,定位精度相对较高。然而却需要对路标的合理布局,并且安装量大,维护费用高。

基于视觉的定位方法

基于视觉的定位定向,即利用计算机视觉技术实现环境的感知和理解,分析出道路的结构,识别出定位通行的道路区,进而根据任务要求实时地做出道路规划,监控并驱动驾驶装置执行此规划,达到预定目标。得益于数字图像处理技术相对成熟,基于视觉的定位方法获取到的环境信息丰富。但是视觉感知受视线和光线的影响较大,对处理器处理速度要求高。

 

基于智能终端设备的室内路径规划系统

一个典型的基于智能终端设备的室内路径规划系统由已知的待导航的智能终端设备、服务器和第三方应用平台组成,如下图所示。

python opencv路径规划 python路径规划导航_栅格_07

智能终端设备:智能终端设备的主要任务是利用内置的传感器采集室内空间感知数据。其中,传感器包括加速度计、磁力计、陀螺仪、气压计、接近传感器、摄像头和光线传感器,室内空间感知数据包括加速度计读数、陀螺仪读数、地磁数据、距离数据、图像、三维点云数据和气压计读数。此外,智能终端设备需要在本机上运行基于惯性导航的位置估计算法得到人员在室内空间的行走轨迹数据。最后,智能终端设备压缩、打包并上传这些感知数据至服务器端。
服务器:服务器的主要任务是接收、存储、分析和处理智能终端设备上传的室内空间感知数据,并将处理结果发送给第三方应用。服务器承担了整个系统的大部分计算负载,是系统的核心组件。服务器的主要模块包括室内语义地图模块和室内定位模块。室内语义地图模块的主要任务是利用室内空间的感知数据自动化、低成本、高精度地构建室内语义地图,并能够持续的、长期地更新数据。室内定位模块的主要任务是利用用户的室内空间感知数据高精度地估计用户当前在室内空间的位置信息,并能够实时地追踪用户的运动情况。
第三方应用平台:第三方应用的主要任务是根据服务器提供的处理结果为用户提供相应基于位置信息的增值服务,如导航服务、信息推荐和社交推荐等。一般而言,智能终端设备、服务器和第三方应用平台之间通过 WiFi、3G 或 4G 网络进行数据通信。

 

 

参考资料

(浅谈路径规划算法)

(机器人路径规划经典算法)


http://theory.stanford.edu/~amitp/GameProgramming/

基于智能优化算法的机器人路径规划与目标跟踪方法研究_刘建华

基于智能优化算法的移动机器人路径规划与定位方法研究_黄辰

移动机器人环境建模与路径规划方法研究_李文超