本公开涉及路径规划领域,更具体地,涉及一种路径规划方法及其装置,计算机系统及计算机可读介质。
背景技术:
随着科技的发展,移动机器人正在成为人类改变世界的有力助手。近年来兴起的配送机器人是高端移动机器人技术的一种实际应用,配送机器人在物流的发展上扮演越来越重要的角色。机器人在有障碍物的工作环境中运动,利用算法,对自身传感器得到的数据进行分析,并在一定的约束条件下,规划出一条从起点到目标点的路径,同时在运动的过程中不与障碍物发生碰撞。路径规划是移动机器人研究的核心内容之一,针对路径规划的研究具有很重要的现实意义。
快速生长随机树(rapid-exploringrandomtree,以下简称rrt)算法是一种基于随机采样的路径规划算法,对未知区域有很强烈的搜索能力。路径规划时该算法以移动机器人的起点为随机树根节点,通过随机产生的节点引导随机树生长,直到随机树的节点与目标点重合或者距离目标点小于或等于一个搜索步长时路径规划结束。从随机树根节点到目标点之间的一条以随机树的树节点组成的路径就是所得规划路径。rrt算法相比其它路径规划算法有运行速度快、不用空间建模、适用于多维环境的独特优势,在移动机器人路径规划中得到广泛的应用。
然而,在实现本公开构思的过程中,发明人发现相关技术中至少存在如下问题:rrt算法中,随机树的树节点生长没有方向性,算法的运算量大,路径规划时间长。
针对相关技术中的上述问题,目前还未提出有效的解决方案。
技术实现要素:
有鉴于此,本公开提供了一种路径规划方法、一种路径规划装置、一种计算机系统以及一种计算机可读介质。
本公开的第一个方面提供了一种路径规划方法,包括:构建包括根节点、至少一个树节点和目标节点的随机树,其中,上述根节点用于表征路径的起点位置,上述目标节点用于表征路径的终点位置,连接在上述根节点和上述目标节点之间的树节点形成路径,针对随机采样生成的随机节点,基于利用树节点与上述随机节点生成的第一路径和利用上述树节点与上述目标节点生成的第二路径,确定新增树节点,以得到更新的随机树,以及在新增树节点满足终止条件的情况下,基于上述更新的随机树规划最终路径。
根据本公开的实施例,上述针对随机采样生成的随机节点,基于利用树节点与上述随机节点生成的第一路径和利用上述树节点与上述目标节点生成的第二路径,确定新增树节点包括:针对随机采样生成的随机节点,确定参考树节点,其中,上述参考树节点为上述至少一个树节点中与上述随机节点之间路径最短的树节点,通过将上述参考树节点连接到上述随机节点,生成上述第一路径,通过将上述参考树节点连接到上述目标节点,生成上述第二路径,以及基于上述第一路径和上述第二路径,确定新增树节点。
根据本公开的实施例,上述基于上述第一路径和上述第二路径,确定新增树节点包括:以上述参考树节点为起点,基于获取的上述随机树的第一扩展步长,在上述第一路径上截取上述第一扩展步长,以得到第三路径,确定上述目标节点在上述第二路径上的第二扩展步长,其中,上述第二扩展步长与上述第一扩展步长不同,以上述参考树节点为起点,在上述第二路径上截取上述第二扩展步长,以得到第四路径,以及基于上述第三路径和上述第四路径,确定新增树节点。
根据本公开的实施例,上述确定上述目标节点在上述第二路径上的第二扩展步长包括:确定上述目标节点在上述第二路径上的引力系数的初始值,获取上述参考树节点所处的当前环境信息,基于上述当前环境信息,调整上述初始值,以得到上述引力系数的当前值,以及基于上述引力系数的当前值和上述第一扩展步长,确定上述目标节点在上述第二路径上的第二扩展步长。
根据本公开的实施例,上述基于上述当前环境信息,调整上述初始值,以得到上述引力系数的当前值包括以下至少之一:在上述当前环境信息指示存在障碍物和/或上述新增树节点与上述目标节点的距离在预设范围内的情况下,减小上述初始值,以得到上述引力系数的当前值,在上述当前环境信息指示不存在障碍物和/或上述新增树节点与上述目标节点的距离不在预设范围内的情况下,增大上述初始值,以得到上述引力系数的当前值。
本公开的第二个方面提供了一种路径规划装置,包括:构建模块,被配置为构建包括根节点、至少一个树节点和目标节点的随机树,其中,上述根节点用于表征路径的起点位置,上述目标节点用于表征路径的终点位置,连接在上述根节点和上述目标节点之间的树节点形成路径,确定模块,被配置为针对随机采样生成的随机节点,基于利用树节点与上述随机节点生成的第一路径和利用上述树节点与上述目标节点生成的第二路径,确定新增树节点,以得到更新的随机树,以及规划模块,被配置为在新增树节点满足终止条件的情况下,基于上述更新的随机树规划最终路径。
根据本公开的实施例,上述确定模块包括:第一确定子模块,被配置为针对随机采样生成的随机节点,确定参考树节点,其中,上述参考树节点为上述至少一个树节点中与上述随机节点之间路径最短的树节点,第一生成子模块,被配置为通过将上述参考树节点连接到上述随机节点,生成上述第一路径,第二生成子模块,被配置为通过将上述参考树节点连接到上述目标节点,生成上述第二路径,以及第二确定子模块,被配置为基于上述第一路径和上述第二路径,确定新增树节点。
根据本公开的实施例,上述第二确定子模块包括:第一截取单元,被配置为以上述参考树节点为起点,基于获取的上述随机树的第一扩展步长,在上述第一路径上截取上述第一扩展步长,以得到第三路径,第一确定单元,被配置为确定上述目标节点在上述第二路径上的第二扩展步长,其中,上述第二扩展步长与上述第一扩展步长不同,第二截取单元,被配置为以上述参考树节点为起点,在上述第二路径上截取上述第二扩展步长,以得到第四路径,以及第二确定单元,被配置为基于上述第三路径和上述第四路径,确定新增树节点。
根据本公开的实施例,上述确第一确定单元包括:第一确定子单元,被配置为确定上述目标节点在上述第二路径上的引力系数的初始值,获取子单元,被配置为获取上述参考树节点所处的当前环境信息,调整子单元,被配置为基于上述当前环境信息,调整上述初始值,以得到上述引力系数的当前值,以及第二确定子单元,被配置为基于上述引力系数的当前值和上述第一扩展步长,确定上述目标节点在上述第二路径上的第二扩展步长。
根据本公开的实施例,上述基于上述当前环境信息,调整上述初始值,以得到上述引力系数的当前值包括以下至少之一:在上述当前环境信息指示存在障碍物和/或上述新增树节点与上述目标节点的距离在预设范围内的情况下,减小上述初始值,以得到上述引力系数的当前值,在上述当前环境信息指示不存在障碍物和/或上述新增树节点与上述目标节点的距离不在预设范围内的情况下,增大上述初始值,以得到上述引力系数的当前值。
本公开的第三个方面提供了一种计算机系统,包括:一个或多个处理器,存储装置,用于存储一个或多个程序,其中,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现如上所述的路径规划方法。
本公开的第四个方面提供了一种计算机可读介质,其上存储有可执行指令,该指令被处理器执行时使处理器实现如上所述的路径规划方法。
通过本公开的实施例,从随机树生长方式的角度对现有的rrt算法进行改进,在构建包括根节点、至少一个树节点和目标节点的随机树的基础上,针对随机采样生成的随机节点,基于利用树节点与随机节点生成的第一路径和利用树节点与目标节点生成的第二路径,共同确定新增树节点,可以引导随机树朝着目标节点方向生长,减少运算量,缩短路径规划时间,可以克服相关技术中rrt算法随机性强,搜索没有方向性,使得随机树的树节点生长没有方向性,导致算法的运算量大,路径规划时间长的技术问题。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本公开实施例的路径规划方法的应用场景;
图2示意性示出了根据本公开实施例的路径规划方法的流程图;
图3a示意性示出了根据本公开实施例的针对随机采样生成的随机节点,基于利用树节点与随机节点生成的第一路径和利用树节点与目标节点生成的第二路径,确定新增树节点的流程图;
图3b示意性示出了根据本公开实施例的基于第一路径和第二路径,确定新增树节点的流程图;
图3c示意性示出了根据本公开实施例的确定目标节点在第二路径上的第二扩展步长的流程图;
图3d示意性示出了利用现有技术提供的rrt算法确定新增树节点的示意图;
图3e示意性示出了利用本公开实施例提供的改进rrt算法确定新增树节点的示意图;
图3f示意性示出了在简单环境下利用现有技术提供的rrt算法得到的规划路径示意图;
图3g示意性示出了在简单环境下利用本公开实施例提供的改进rrt算法得到的规划路径示意图;
图3h示意性示出了在复杂环境下利用现有技术提供的rrt算法得到的规划路径示意图;
图3i示意性示出了在复杂环境下利用本公开实施例提供的改进rrt算法得到的规划路径示意图;
图3j示意性示出了在简单环境下利用现有技术提供的rrt算法得到的规划路径的长度分布直方图与利用本公开实施例提供的改进rrt算法得到的规划路径的长度分布直方图的对比图;
图3k示意性示出了在复杂环境下利用现有技术提供的rrt算法得到的规划路径的长度分布直方图与利用本公开实施例提供的改进rrt算法得到的规划路径的长度分布直方图的对比图;
图4示意性示出了根据本公开实施例的路径规划装置的框图;
图5a示意性示出了根据本公开实施例的确定模块的框图;
图5b示意性示出了根据本公开实施例的第二确定子模块的框图;
图5c示意性示出了根据本公开实施例的第一确定单元的框图;以及
图6示意性示出了根据本公开实施例的适于实现路径规划方法的计算机系统的方框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“a、b和c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b和c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。在使用类似于“a、b或c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b或c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。本领域技术人员还应理解,实质上任意表示两个或更多可选项目的转折连词和/或短语,无论是在说明书、权利要求书还是附图中,都应被理解为给出了包括这些项目之一、这些项目任一方、或两个项目的可能性。例如,短语“a或b”应当被理解为包括“a”或“b”、或“a和b”的可能性。
本公开提供了一种路径规划方法,包括:构建包括根节点、至少一个树节点和目标节点的随机树,其中,根节点用于表征路径的起点位置,目标节点用于表征路径的终点位置,连接在根节点和目标节点之间的树节点形成路径;针对随机采样生成的随机节点,基于利用树节点与随机节点生成的第一路径和利用树节点与目标节点生成的第二路径,确定新增树节点,以得到更新的随机树;以及在新增树节点满足终止条件的情况下,基于更新的随机树规划最终路径。
图1示意性示出了根据本公开实施例的路径规划方法的应用场景100。需要注意的是,图1所示仅为可以应用本公开实施例的应用场景的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
本公开实施例可以应用路径规划的应用场景,路径规划是移动机器人在有障碍物的工作环境中运动,对通过自身传感器接收到的数据进行分析,结合一定的算法,在一定的约束条件下,规划出一条从起点到终点的路径,同时在运动过程中不与障碍物发生碰撞。
本公开以利用rrt算法对移动机器人进行路径规划为例,阐述本公开路径规划方法的技术方案。具体地,利用rrt算法随机采样生成的随机节点,引导随机树生长,直到随机树的树节点与目标节点重合或者距离目标节点小于或等于一个搜索步长时满足终止条件,路径规划结束,连接在根节点和目标节点之间的一条以随机树的至少一个树节点组成的路径就是所得最终路径。
如图1所示,路径规划的应用场景100包括用于表征路径的起点位置的根节点(如图1中xinit所示),用于表征路径的终点位置的目标节点(如图1中xgoal所示)以及移动机器人在从起点位置运动到终点位置时,所处工作环境中的障碍物(如图1中obstacle所示)。
根据本公开的实施例,从随机树生长方式的角度,对现有的rrt算法进行改进,使得随机树的生长不再只由随机点的方向决定,而是由树节点到目标节点的方向和树节点到随机节点的方向共同决定,实现对随机树生长方向朝目标节点方向的引导,减少随机树中树节点的个数,缩短路径长度。
应该理解,图1中随机树的树节点、障碍物的位置和数目仅仅是示意性的,可以具有任意位置和数目的随机树的树节点和障碍物。根据实际业务场景,初始化根节点、目标节点和障碍物的位置和数目,由于rrt算法的随机性强,搜索没有方向性,因此,可以随机生成处在不同位置的树节点,本公开不做限定。本公开的核心思想就是针对每个随机生成的随机节点,由树节点到目标节点的方向和树节点到随机节点的方向共同决定新增树节点的位置和方向,在满足条件的情况下,将新增树节点作为树节点,最终生成规划路径。
图2示意性示出了根据本公开实施例的路径规划方法的流程图。
如图2所示,该方法可以包括操作s210~s230。其中:
在操作s210,构建包括根节点、至少一个树节点和目标节点的随机树。
在操作s220,针对随机采样生成的随机节点,基于利用树节点与随机节点生成的第一路径和利用树节点与目标节点生成的第二路径,确定新增树节点,以得到更新的随机树。
在操作s230,在新增树节点满足终止条件的情况下,基于更新的随机树规划最终路径。
根据本公开的实施例,根节点用于表征路径的起点位置,目标节点用于表征路径的终点位置,连接在根节点和目标节点之间的树节点形成路径。针对随机采样生成的每一个随机节点,可以确定一个新增树节点,该新增树节点决定随机树的生长方向。随机性强的随机节点,使得随机树的生长方向随机性也强,没有目标性、方向性。
根据本公开的实施例,在根据随机节点确定新增树节点位置的时候,不再只由随机节点的方向决定,而是由树节点到目标节点的方向和树节点到随机节点的方向共同决定,即基于利用树节点与随机节点生成的第一路径和利用树节点与目标节点生成的第二路径,确定新增树节点,以此给随机树的生长一个目标偏向性,引导随机树朝着目标节点方向生长,增强目标性、方向性。
需要说明的是,确定新增树节点的位置后,可以连接新增树节点与树节点生成随机树的生长路径,检测该生长路径是否可以躲避障碍物,使得移动机器人不会与障碍物发生碰撞,在可以躲避障碍物的情况下,将新增树节点作为树节点,更新随机树。在新增树节点与目标节点重合或者距离目标节点小于或等于一个搜索步长时,满足终止条件,路径规划结束。从随机树根节点到目标节点之间的一条以随机树的树节点组成的路径就是所得规划路径。
通过本公开的实施例,对随机树的生长方向做出引导,改进新增树节点的生成方式,引导其朝着目标节点的方向生长,以此来减少搜索的随机性、避免无效的运算,缩短路径规划的时间,同时也使得规划出的路径尽可能接近最优路径。
图3a示意性示出了根据本公开实施例的针对随机采样生成的随机节点,基于利用树节点与随机节点生成的第一路径和利用树节点与目标节点生成的第二路径,确定新增树节点的流程图。
如图3a所示,该方法包括操作s311~s314。其中:
在操作s311,针对随机采样生成的随机节点,确定参考树节点。
在操作s312,通过将参考树节点连接到随机节点,生成第一路径。
在操作s313,通过将参考树节点连接到目标节点,生成第二路径。
在操作s314,基于第一路径和第二路径,确定新增树节点。
可以理解的是,随着随机树的生长,树节点的数量不断增多,若针对多个树节点中的每一个树节点,都基于利用树节点与随机节点生成的第一路径和利用树节点与目标节点生成的第二路径,确定新增树节点,算法的运算量大,路径规划时间长。因此,根据本公开的实施例,需要从多个树节点中选择一个合适的树节点。
具体地,可以根据多个树节点中各树节点与随机节点之间的路径长度确定一个合适的树节点,即参考树节点。具体地,可以将最短路径对应的树节点作为参考树节点。由参考树节点到目标节点的方向和参考树节点到随机节点的方向共同决定,即通过将参考树节点连接到随机节点,生成第一路径和通过将参考树节点连接到目标节点,生成第二路径,确定新增树节点的位置,以此来给随机树的生长一个目标偏向性,引导随机树朝着目标点方向生长。
通过本公开的实施例,利用与随机节点之间路径最短的参考树节点到目标节点的方向和参考树节点到随机节点的方向共同决定随机树生长所需的新增树节点,可以引导随机树朝目标节点方向生长,使得随机树的生长有目标性,通过减少随机树的树节点个数,节省运算资源。
图3b示意性示出了根据本公开实施例的基于第一路径和第二路径,确定新增树节点的流程图。
如图3b所示,该方法包括操作s321~s324。其中:
在操作s321,以参考树节点为起点,基于获取的随机树的第一扩展步长,在第一路径上截取第一扩展步长,以得到第三路径。
在操作s322,确定目标节点在第二路径上的第二扩展步长。
在操作s323,以参考树节点为起点,在第二路径上截取第二扩展步长,以得到第四路径。
在操作s324,基于第三路径和第四路径,确定新增树节点。
根据本公开的实施例,路径是有方向,有大小的向量,随机树是按照一定的扩展步长生长的。因此,可以根据第一路径和第二路径,确定新增树节点。具体地,可以在第一路径上截取第一扩展步长得到第三路径,可以在第二路径上截取第二扩展步长得到第四路径,利用第三路径和第四路径可以确定一个平行四边形,该平行四边形的对角线中有一条以参考树节点为起点的对角线,检测该对角线的预设范围内是否存在障碍物,若存在,则另一个顶点不为新增树节点,若不存在,则另一个顶点为新增树节点。
需要说明的是,第二扩展步长可以与第一扩展步长相同,也可以与第一扩展步长不同,本公开不做限定。
通过本公开的实施例,基于以参考树节点为起点,在第一路径上截取第一扩展步长得到的第三路径和在第二路径上截取第二扩展步长得到的第四路径,确定新增树节点,可以降低树节点生长方式的随机性,提高树节点生长方式的目标性、方向性,提高随机树的生长质量。
图3c示意性示出了根据本公开实施例的确定目标节点在第二路径上的第二扩展步长的流程图。
如图3c所示,该方法包括操作s331~s334。其中:
在操作s331,确定目标节点在第二路径上的引力系数的初始值。
在操作s332,获取参考树节点所处的当前环境信息。
在操作s333,基于当前环境信息,调整初始值,以得到引力系数的当前值。
在操作s334,基于引力系数的当前值和第一扩展步长,确定目标节点在第二路径上的第二扩展步长。
需要说明的是,随机树的生长在很大程度上受引力系数的影响。具体地,引力系数越大,随机树更多的朝向目标节点方向生长,而引力系数越小,随机树更多的朝向随机节点方向生长。根据本公开的实施例,在随机树的生长过程中,根据周围环境信息自适应的变化引力系数。
具体地,可以以第一路径上的第一扩展步长为参照,在第二路径上设置一个引力系数的初始值,随着随机树的不断生长,根据参考树节点所述的环境信息,对引力系数的初始值进行调整,以得到引力系数的当前值,实现对随机树生长方向的调整。
根据本公开的实施例,基于当前环境信息,调整初始值,以得到引力系数的当前值包括以下至少之一:在当前环境信息指示存在障碍物和/或新增树节点与目标节点的距离在预设范围内的情况下,减小初始值,以得到引力系数的当前值;在当前环境信息指示不存在障碍物和/或新增树节点与目标节点的距离不在预设范围内的情况下,增大初始值,以得到引力系数的当前值。
根据本公开的实施例,当前环境信息包括但不限于随机树生长时周围环境中的障碍物位置信息、距离目标节点的距离信息。
具体地,可以初始化一个较大的引力系数,在随机树生长时,若其附近无障碍物或者距离障碍物较远,则增大引力系数,引导随机树快速朝着目标节点方向生长。反之,在随机树生长时,若其附近有障碍物或者障碍物比较密集,则减小引力系数到一个合适的大小,引导随机树朝着随机节点方向生长,尽快绕过障碍物。在随机树生长时,若距离目标节点较近,则适当减少引力系数直至引力系数为零,避免树节点在障碍物前发生震荡,使其尽快生长到目标节点。
加入自适应策略的改进rrt算法的随机树生长过程如下表所示。
表1
通过本公开的实施例,根据环境信息自适应调整引力系数,解决在目标节点点附近震荡、在障碍物附近聚集的技术问题,使得随机树可以根据当前环境信息,在躲避障碍物的同时,高质量的生长,减少路径规划时间,得到的路径更平滑。
结合上述各实施例,以下将详细对比现有技术的rrt算法实现过程和本公开提供的改进的rrt算法实现过程。
图3d示意性示出了利用现有技术提供的rrt算法确定新增树节点的示意图。如前所述,现有技术的rrt算法的主要思想是通过随机采样逐渐生成一个随机扩展树,随着随机树的不断生长,在新增树节点将目标节点包括进去,满足终止条件,随机树的根节点到目标点之间的树节点连接起来的路径就是所规划的路径。
图3e示意性示出了利用本公开提供的改进rrt算法确定新增树节点的示意图。
xinit为根据初始位置确定的根节点,xgoal为运动的目标节点,xrand为随机生成的随机节点,xnearest为距离xrand最近的树节点,xnew为生成的新增树节点,ρ是随机树的扩展步长,obstacle为障碍物。
现有技术提供的rrt算法的路径规划步骤如下表所示。
表2
改进后的rrt算法随机树的路径规划步骤如下表所示。
表3
通过本公开提供的改进的rrt算法,对随机树的生长方向做出引导,改进新增树节点的生成方式,引导随机树朝着目标节点方向生长,以此来减少搜索的随机性、避免无效的运算缩短路径规划的时间,同时也使得规划出的路径尽可能接近最优路径。
为了进一步说明本公开改进的rrt算法的优越性,通过仿真实验对改进的rrt算法进行分析和验证。
具体地,使用matlabr2016a进行仿真实验,根据障碍物的分布情况将实验环境分为简单环境和复杂环境。移动机器人运行于100cm×100cm的区域内,(0,0)点为起点(随机树的根节点),(100,100)为目标点(随机树的目标节点),黑色圆形区域代表障碍物,连接起点和目标点之间的线条是改进的rrt算法为移动机器人的规划的路径,其他线条为随机树。
图3f示意性示出了在简单环境下利用现有技术提供的rrt算法得到的规划路径示意图。
图3g示意性示出了在简单环境下利用本公开提供的改进rrt算法得到的规划路径示意图。
图3h示意性示出了在复杂环境下利用现有技术提供的rrt算法得到的规划路径示意图。
图3i示意性示出了在复杂环境下利用本公开提供的改进rrt算法得到的规划路径示意图。
参考图3f~图3i可以看出,无论是在简单环境下还是在复杂环境下,现有技术的rrt算法得到随机树,其生长的随机性强、路径比较曲折、存在大量的随机树节点,而本公开提供的改进后的rrt算法得到的随机树,由于对生长方向做了引导,使得随机树的生长朝着目标点的方向生长、随机树节点的数量减少使得路径更平滑,规划的路径长度减少。
为了更准确说明本公开对现有rrt算法的改进效果,对上述仿真实验得到的规划路径数据进行处理。将实验得到的路径长度数据制作成附加有正态密度曲线的频数分布直方图,图3j示意性示出了在简单环境下利用现有技术提供的rrt算法得到的规划路径的长度分布直方图与利用本公开提供的改进rrt算法得到的规划路径的长度分布直方图的对比图。图3k示意性示出了在复杂环境下利用现有技术提供的rrt算法得到的规划路径的长度分布直方图与利用本公开提供的改进rrt算法得到的规划路径的长度分布直方图的对比图。其中,横坐标为路径长度,纵坐标为对应路径长度的数量,路径长度分布基本满足正态分布。简单环境、复杂环境下改进rrt算法的路径长度分布均小于rrt算法的路径分布,从统计角度改进是有效的。
对实验数据进行计算得到,本公开提供的改进后的rrt算法得到的规划路径的长度比现有技术rrt算法得到的规划路径的长度缩短了约15%,路径规划消耗的时间缩短了约50%,路径节点的个数减少了55%,随机树节点的个数减少约40%。
因此,无论是在简单环境下,还是在复杂环境下,本公开对现有技术的rrt算法的改进,主要有以下三个方面的优势:
(1)可以避免随机树对全局空间进行搜索,使随机树朝着目标点方向生长,减少运算量,缩短路径规划的时间。
(2)缩短路径长度,使规划出的路径尽可能的接近最优路径。
(3)减少随机树的树节点个数,生成的规划路径相对于rrt算法得到的规划路径更平滑,易于机器人运动。
图4示意性示出了根据本公开实施例的路径规划装置的框图。
如图4所示,该路径规划装置400可以包括构建模块410、确定模块420以及规划模块430。其中:
构建模块410,被配置为构建包括根节点、至少一个树节点和目标节点的随机树。
确定模块420,被配置为针对随机采样生成的随机节点,基于利用树节点与随机节点生成的第一路径和利用树节点与目标节点生成的第二路径,确定新增树节点,以得到更新的随机树。
规划模块430,被配置为在新增树节点满足终止条件的情况下,基于更新的随机树规划最终路径。
通过本公开的实施例,对随机树的生长方向做出引导,改进新增树节点的生成方式,引导其朝着目标节点的方向生长,以此来减少搜索的随机性、避免无效的运算,缩短路径规划的时间,同时也使得规划出的路径尽可能接近最优路径。
图5a示意性示出了根据本公开实施例的确定模块的框图。
如图5a所示,确定模块420包括第一确定子模块511、第一生成子模块512、第二生成子模块513和第二确定子模块514。其中:
第一确定子模块511,被配置为针对随机采样生成的随机节点,确定参考树节点。
第一生成子模块512,被配置为通过将参考树节点连接到随机节点,生成第一路径。
第二生成子模块513,被配置为通过将参考树节点连接到目标节点,生成第二路径。
第二确定子模块514,被配置为基于第一路径和第二路径,确定新增树节点。
通过本公开的实施例,利用与随机节点之间路径最短的参考树节点到目标节点的方向和参考树节点到随机节点的方向共同决定随机树生长所需的新增树节点,可以引导随机树朝目标节点方向生长,使得随机树的生长有目标性,通过减少随机树的树节点个数,节省运算资源。
图5b示意性示出了根据本公开实施例的第二确定子模块的框图。
如图5b所示,第二确定子模块514包括第一截取单元521、第一确定单元522、第二截取单元523以及第二确定单元524。其中:
第一截取单元521,被配置为以参考树节点为起点,基于获取的随机树的第一扩展步长,在第一路径上截取第一扩展步长,以得到第三路径。
第一确定单元522,被配置为确定目标节点在第二路径上的第二扩展步长,其中,第二扩展步长与第一扩展步长不同。
第二截取单元523,被配置为以参考树节点为起点,在第二路径上截取第二扩展步长,以得到第四路径。
第二确定单元524,被配置为基于第三路径和第四路径,确定新增树节点。
通过本公开的实施例,基于以参考树节点为起点,在第一路径上截取第一扩展步长得到的第三路径和在第二路径上截取第二扩展步长得到的第四路径,确定新增树节点,可以降低树节点生长方式的随机性,提高树节点生长方式的目标性、方向性,提高随机树的生长质量。
图5c示意性示出了根据本公开实施例的第一确定单元的框图。
如图5c所示,第一确定单元522包括第一确定子单元531、获取子单元532、调整子单元533以及第二确定子单元534。其中:
第一确定子单元531,被配置为确定目标节点在第二路径上的引力系数的初始值。
获取子单元532,被配置为获取参考树节点所处的当前环境信息。
调整子单元533,被配置为基于当前环境信息,调整初始值,以得到引力系数的当前值。
第二确定子单元534,被配置为基于引力系数的当前值和第一扩展步长,确定目标节点在第二路径上的第二扩展步长。
根据本公开的实施例,基于当前环境信息,调整初始值,以得到引力系数的当前值包括以下至少之一:在当前环境信息指示存在障碍物和/或新增树节点与目标节点的距离在预设范围内的情况下,减小初始值,以得到引力系数的当前值;在当前环境信息指示不存在障碍物和/或新增树节点与目标节点的距离不在预设范围内的情况下,增大初始值,以得到引力系数的当前值。
通过本公开的实施例,根据环境信息自适应调整引力系数,解决在目标节点点附近震荡、在障碍物附近聚集的技术问题,使得随机树可以根据当前环境信息,在躲避障碍物的同时,高质量的生长,减少路径规划时间,得到的路径更平滑。
根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,构建模块410、确定模块420、规划模块430、第一确定子模块511、第一生成子模块512、第二生成子模块513、第二确定子模块514、第一截取单元521、第一确定单元522、第二截取单元523、第二确定单元524、第一确定子单元531、获取子单元532、调整子单元533以及第二确定子单元534中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,构建模块410、确定模块420、规划模块430、第一确定子模块511、第一生成子模块512、第二生成子模块513、第二确定子模块514、第一截取单元521、第一确定单元522、第二截取单元523、第二确定单元524、第一确定子单元531、获取子单元532、调整子单元533以及第二确定子单元534中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,构建模块410、确定模块420、规划模块430、第一确定子模块511、第一生成子模块512、第二生成子模块513、第二确定子模块514、第一截取单元521、第一确定单元522、第二截取单元523、第二确定单元524、第一确定子单元531、获取子单元532、调整子单元533以及第二确定子单元534中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图6示意性示出了根据本公开实施例的适于实现路径规划方法的计算机系统的方框图。图6示出的计算机系统仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图6所示,根据本公开实施例的计算机系统600包括处理器601,其可以根据存储在只读存储器(rom)602中的程序或者从存储部分608加载到随机访问存储器(ram)603中的程序而执行各种适当的动作和处理。处理器601例如可以包括通用微处理器(例如cpu)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic)),等等。处理器601还可以包括用于缓存用途的板载存储器。处理器601可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在ram603中,存储有系统600操作所需的各种程序和数据。处理器601、rom602以及ram603通过总线604彼此相连。处理器601通过执行rom602和/或ram603中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除rom602和ram603以外的一个或多个存储器中。处理器601也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,系统600还可以包括输入/输出(i/o)接口605,输入/输出(i/o)接口605也连接至总线604。系统600还可以包括连接至i/o接口605的以下部件中的一项或多项:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至i/o接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被处理器601执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的rom602和/或ram603和/或rom602和ram603以外的一个或多个存储器。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。