本申请属于机器人技术领域,尤其涉及一种路径规划方法、装置、机器人及存储介质。
背景技术:
随着传感器技术、人工智能等技术的发展,机器人领域成为一个蓬勃发展的新兴领域,移动机器人作为一个重要的应用,得到越来越多的关注。
目前绝大多数移动机器人的局部路径规划以单源最短路径算法(dijkstra算法,d算法)、启发式算法(heuristicapproaches,a算法)等算法为主,这类算法适应性很广,但随机性很强,可控性比较差,并未考虑全局的一致性和机器人本身的运动特性,使得规划出来的路径极不不平滑,从而导致机器人的运动行为看起来极不自然。
技术实现要素:
本申请实施例提供了一种路径规划方法、装置、机器人及存储介质,可以解决现有移动机器人的路径规划算法随机性强,可控性差,使得规划出来的路径极不不平滑的问题。
第一方面,本申请实施例提供了一种路径规划方法,所述方法包括:
确定第一控制点和目标点,获取机器人从所述第一控制点前往所述目标点的原始地图;
利用人工势场法对所述原始地图进行处理,得到势场地图;
根据所述第一控制点、所述目标点、控制点计算公式和控制点筛选规则,在所述势场地图中计算选取到处于所述第一控制点和所述目标点之间的j个控制点;j≥0,j为整数;
确定经过所述第一控制点、所述j个控制点和所述目标点的k条样条曲线,k≥0,k为整数;
根据所述k条样条曲线对所述机器人的行走路径进行路径规划。
第二方面,本申请实施例提供了一种路径规划装置,所述装置包括:
获取模块,用于确定第一控制点和目标点,获取机器人从所述第一控制点前往所述目标点的原始地图;
处理模块,用于利用人工势场法对所述原始地图进行处理,得到势场地图;
选取模块,用于根据所述第一控制点、所述目标点、控制点计算公式和控制点筛选规则,在所述势场地图中计算选取到处于所述第一控制点和所述目标点之间的j个控制点;j≥0,j为整数;
确定模块,用于确定经过所述第一控制点、所述j个控制点和所述目标点的k条样条曲线,k≥0,k为整数;
规划模块,用于根据所述k条样条曲线对所述机器人的行走路径进行路径规划。
第三方面,本申请实施例提供了一种机器人,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现所述方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现所述的方法。
第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在机器人上运行时,使得机器人执行上述第一方面中任一项所述的方法。
可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
本申请实施例与现有技术相比存在的有益效果是:本申请可以解决现有移动机器人的路径规划算法随机性强,可控性差的问题,使得规划出来的路径平滑,满足机器人的运动特性,同时可以达到更好的避障能力,给人更顺畅的感官体验。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例提供的路径规划方法的流程示意图;
图2是本申请一实施例提供的原始地图和势场地图的示意图;
图3是本申请一实施例提供的采样点的采样示意图;
图4是本申请一实施例提供的选取的控制点及确定样条曲线的示意图;
图5是本申请另一实施例提供的合并相距距离较小的障碍物的示意图;
图6是本申请一实施例提供的路径规划装置的结构景示意图;
图7是本申请另一实施例提供的机器人的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本申请实施例提供的路径规划方法可以适用于机器人。在实际应用中,多采用a算法和d算法来进行机器人路径规划,但这两种算法均存在相同的缺陷,即随机性强,时常导致规划的机器人路径前后的一致性较差,使得路径规划的可控性相对较差,也是因这两种算法的这严重缺陷,使得机器人不能适用于在确定场景中规划必须确定的情形。另外,因a算法和d算法极强的随机性,算法未考虑全局的一致性和机器人本身的运动特性,而导致机器人的运动行为看起来不自然。
为此,本申请提供的一种路径规划方法,可以解决现有移动机器人的路径规划算法随机性强,可控性差的问题,使得规划出来的路径平滑,满足机器人的运动特性,同时可以使得机器人具有更好的避障能力,给人更顺畅的感官体验。
下面结合图1至图5和通过具体实施例,对本申请提供的路径规划方法进行示例性的说明。
参见图1,本申请一实施例所提供的路径规划方法的示意性流程图。本实施例中路径规划方法的执行主体为机器人。该方法包括:
s101:确定第一控制点和目标点,获取机器人从所述第一控制点前往所述目标点的原始地图。
在该实施例中,所述第一控制点为所述机器人的当前位置,即机器人开始行进的起点。在进行机器人的导航之前,预先确定机器人行进的第一控制点和目标点,并根据所述第一控制点和目标点确定导航的空间区域,并获取该空间区域的原始地图(如图2(a)所示),以便于进行路径的规划,从而更好的进行导航。
s102:利用人工势场法对所述原始地图进行处理,得到势场地图。
在该实施例中,为了所述机器人可以较为清晰地获知所述原始地图中的障碍物分布情况,利用所述人工势场法在所述原始地图上建立人工势场,得到所述势场地图(如图2(b)所示),从而当机器人靠近目标点周围的障碍物,可以通过所述人工势场清楚地获知障碍物的位置,避免碰撞。
s103:根据所述第一控制点、所述目标点、控制点计算公式和控制点筛选规则,在所述势场地图中计算选取到处于所述第一控制点和所述目标点之间的j个控制点;j≥0,j为整数。
在该实施例中,所述控制点筛选规则为:对所述控制点计算公式计算得到的采样点的总得分进行排名,确定总得分超过预设分数值的采样点,作为路径规划的控制点。
其中,所述控制点计算公式为:
特别地,当所述控制点的个数j≥3时,从第三个控制点开始才需要确认曲率得分,比如存在的三个前后相邻的控制点a、b、c,ab连线的延长线与bc连线形成一个角度,该角度越大曲线曲率越大,越不能满足机器人的运动特性,故若存在三个前后相邻的控制点时,该角度大于最大预设角度值时,则表示这三个控制点形成的路径的曲线曲率越大,曲率得分越低;反之,该角度小于最小预设角度值时,则表明这三个控制点接近在一条直线上,相对的曲率得分越高,机器人沿着这三个控制点的路线行进时,比较顺畅,故当出现小于最小预设角度值得情形时,则不选取第三采样点c作为控制点,继续寻找,直至形成的该角度大于最大预设角度值,比如选取到采样点c在所述势场地图中拐点处时,a、b、c三个点之间的连线形成的角度值往往大于所述最大预设角度值,即表明机器人在该处需要进行转弯操作。继续以此类推,直至计算选取到离所述目标点最近的控制,即全部选取完所述j个控制点,如图4(a)所示。
s104:确定经过所述第一控制点、所述j个控制点和所述目标点的k条样条曲线,k≥0,k为整数。
在该实施例中,当所述j个控制点选取结束后,根据所述第一控制点、所述j个控制点和所述目标点,得到k条采样点序列,并根据所述k条采样点序列生成样条曲线。
s105:根据所述k条样条曲线对所述机器人的行走路径进行路径规划。
在该实施例中,如图4(b)所示,由于样条曲线具有平滑、连续的特性,可以使得得到的规划路径可以较好地满足所述机器人的运动特性,故在得到所述k条样条曲线后,以所述k条样条曲线为参考,规划所述机器人在所述原始地图中的行走路径。
在一实施例中,所述第一控制点与所述目标点之间的控制点数量相对较少,或在选取前几个控制点时无需确认对应采样点的曲率得分,比如控制点的个数j满足1≥j≥0,故需要对该过程的控制点的选取过程进行优化。
为此,结合图3,本申请的一实施例提供了一种路径规划方法,主要涉及控制点数量较少且无需考虑曲率的情形。所述方法包括:
根据所述第一控制点、参考半径,确定n个采样点,n≥0,n为整数。
根据所述n个采样点、控制点计算公式,计算得到所述n个采样点的得分。
根据所述控制点筛选规则和所述n个采样点的得分,确定j个第二控制点。
在该实施例中,所述j个第二控制点的总得分为超过预设得分值得采样点。所述n个采样点为以所述第一控制点为中心的参考半径的圆弧上n个采样点。优选地,所述n个采样点为所述机器人向前行进方向上的预设角度范围内的圆弧上的采样点。
在另一实施例中,当所述第一控制点与所述目标点的之间的控制点个数j>2时,寻找控制点时,需要确认相应的采样点是否满足需求,即采样点的曲率得分大于预设曲率得分,若不大于所述预设曲率得分,则表明不能满足机器人的运动特性,在该采样点的地方,机器人需要转弯。
为此,本申请实施例还提供了一种路径规划方法,主要涉及计算选取多个控制点的情形。所述方法包括:
根据所述势场地图,确定存在于所述势场地图中的h个拐点,h≥0,h为整数。
根据所述h个拐点和采样点寻找规则,确定位于所述h个拐点处的采样点。
根据所述第一控制点、所述目标点、位于所述h个拐点处的采样点、控制点计算公式,计算得到位于所述h个拐点处的采样点的得分。
根据所述控制点筛选规则和位于所述h个拐点处的采样点的得分,确定所述j个控制点。
在该实施例中,当所述第一控制点和所述目标点之间存在的控制点个数j>2时,在寻找某一控制点与上一控制点之间的直线距离会大于所述参考半径,比如在确定第一控制点、第二控制点后,所述采样点寻找规则中可以为根据参考半径画圆弧,继续寻找圆弧上的采样点时,通过所述控制点计算公式和控制点筛选规则确定的采样点的曲率小于预设曲率值,即该采样点与所述第一控制点、第二控制点接近在一条直线上时,机器人会直线行进,以该采样点作为所述机器人行进路径的控制点的必要性不大,故需要继续加大圆弧的半径,寻找采样点,直至寻找到的采样点的曲率得分低于所述预设曲率得分的采样点,比如所述拐点处的采样点,且在确定该拐点处的采样点满足要求后,才继续下一个采样点的选取,直至接近所述目标点。
在另一实施例中,在一种可能的情景中,如图5所示,获取的地图中存在多个相距很近的障碍物,且在计算选取控制点时,这些相距很近的障碍物之间也会存在控制点,但以该控制点确定的路径不适宜所述机器人通过,还会造成计算资源的浪费。
为此,本申请的一实施例提供了一种路径规划方法,主要涉及合并所述势场地图中多个相距很近的障碍物的过程。所述方法包括:
获取所述势场地图中的障碍物之间的相对距离。
确定相对距离小于或等于预设相对距离的多个障碍物。
利用图像膨胀方法将所述势场地图中的所述相对距离小于或等于预设相对距离的多个障碍物进行合并,得到新的势场地图。
在该实施例中,为了避免计算所述相距很近的障碍物之间的控制点的计算,在利用所述人工势场法对所述原始地图进行处理后,首先获取所述势场地图中障碍物的相对距离,确认相对距离小于或等于预设相对距离的多个障碍物,以便进行障碍物的合并处理。其中,利用图像膨胀方法进行障碍物合并的过程可参考现有相关图像膨胀方法的实施过程,在此不再赘述。
可选的,获取所述原始地图中的障碍物之间的相对距离,确定相对距离小于或等于预设相对距离的多个障碍物,再利用图像膨胀方法将所述原始地图中的所述相对距离小于或等于预设相对距离的多个障碍物进行合并,得到新的原始地图。
在一实施例中,根据障碍物的分布情况,进而根据所述样条曲线进行路径规划的机器人行走路径可能有多条,且每一条行走路径的长度、行走的容易度都不一样,需要从根据所述样条曲线确认得到最优的行走路径。
为此,本申请实施例提供了一种路径规划方法,主要涉及从多条样条曲线中确认最优的行走路径的过程。所述方法包括:
当确定的所述样条曲线的数量k≥2时,包括:
根据所述样条曲线的长度和所述样条曲线通过区域的宽度值,对所述k条样条曲线进行评分;
根据所述k条样条曲线的评分,确定评分最高的l条样条曲线,l≥0,l为整数;
所述根据所述k条样条曲线对所述机器人的行走路径进行路径规划,包括:根据所述l条样条曲线规划所述机器人的行走路径。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
对应于上文实施例所述的路径规划方法,图6示出了本申请实施例提供的路径规划装置的结构框图,为了便于说明,仅示出了与本申请实施例相关的部分。
参照图6,该装置包括:获取模块100、处理模块200、选取模块300、确定模块400、规划模块500。
所述获取模块,用于确定第一控制点和目标点,获取机器人从所述第一控制点前往所述目标点的原始地图;
所述处理模块,用于利用人工势场法对所述原始地图进行处理,得到势场地图;
所述选取模块,用于根据所述第一控制点、所述目标点、控制点计算公式和控制点筛选规则,在所述势场地图中计算选取到处于所述第一控制点和所述目标点之间的j个控制点;j≥0,j为整数;
所述确定模块,用于确定经过所述第一控制点、所述j个控制点和所述目标点的k条样条曲线,k≥0,k为整数;
所述规划模块,用于根据所述k条样条曲线对所述机器人的行走路径进行路径规划。
图7为本申请一实施例提供的机器人的结构示意图。如图7所示,该实施例的机器人7包括:至少一个处理器70(图7中仅示出一个处理器)、存储器71以及存储在所述存储器71中并可在所述至少一个处理器70上运行的计算机程序72,所述处理器70执行所述计算机程序72时实现上述任意各个方法实施例中的步骤。
所述机器人7可包括但不仅限于,处理器70、存储器71。本领域技术人员可以理解,图7仅仅是机器人7的举例,并不构成对机器人7的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备等。
所述处理器70可以是中央处理单元(centralprocessingunit,cpu),该处理器70还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器71在一些实施例中可以是所述机器人7的内部存储单元,例如机器人7的硬盘或内存。所述存储器71在另一些实施例中也可以是所述机器人7的外部存储设备,例如所述机器人7上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储器71还可以既包括所述机器人7的内部存储单元也包括外部存储设备。所述存储器71用于存储操作系统、应用程序、引导装载程序(bootloader)、数据以及其他程序等,例如所述计算机程序的程序代码等。所述存储器71还可以用于暂时地存储已经输出或者将要输出的数据。
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在机器人上运行时,使得机器人执行时实现可实现上述各个方法实施例中的步骤。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质。例如u盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/网络设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/网络设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口、装置或单元的间接耦合或通讯连接,可以是电性、机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。