发明内容
本申请实施例提供了一种巡检路径规划方法和巡检机器人,可以将巡检机器人路径规划转换为旅行商问题,求解出最优路径规划方案,提高巡检机器人的巡检效率。
第一方面,本申请实施例提供了一种巡检路径规划方法,包括:
获取巡检场景地图;
提取巡检场景地图中的必经边两端的端点作为必经点,形成必经地图;
若与任一必经点相连的必经边数量大于1,则为该必经点创建数量等于相连的必经边数量的虚拟点,形成虚拟地图;
将所述虚拟地图作为旅行商问题进行求解,获得最优路线;
将所述最优路线上的所述虚拟点还原为相应的必经点,得到必经路径。
其中,所述获取巡检场景地图之后,还包括:
将所述巡检场景地图保存为邻接表,所述邻接表包括所述巡检场景地图中的点、点之间的边、边的权值和边的必经属性。
进一步的,形成虚拟地图之后,还包括:
根据所述邻接表计算虚拟地图中任意两个必经点的最短距离,并记录所述最短距离对应的最短路径;
根据所述虚拟地图中的必经点及所述最短距离构建代价矩阵。
其中,所述得到必经路径之后,包括:
若所述必经路径中相邻两个必经点非直接相连,则将所述代价矩阵中所述相邻两个必经点的最短距离对应的最短路径作为连接路径,插入到所述相邻两个必经点之间,得到实际巡检路线。
作为一种可能的实现方式,获取巡检场景地图之后,还包括:
将所述巡检场景地图中具有唯一路线的支路的子节点去除;
若所述支路的子节点包括起点,则将所述支路的根节点设置为新起点;
若所述支路的子节点包括终点,则将所述支路的根节点设置为新终点;
相应的,得到实际巡检路线之后,还包括:
在所述实际巡检路线中插入所述支路的路径,得到全局巡检路径。
其中,在所述必经路径中插入所述支路的路径,包括:
若所述支路的子节点不包括起点和终点,则生成从支路的根节点出发经过所有子节点后再回到根节点的支路路径;在所述实际巡检路线中所述根节点的位置插入所述支路路径;
若所述支路的子节点包括起点,则生成从所述起点出发经过所有子节点后再到根节点的支路路径,在所述实际巡检路线的所述新起点之前插入所述支路路径;
若所述支路的子节点包括终点,则生成从支路的根节点出发经过所有子节点后再到所述终点的支路路径,在所述实际巡检路线的所述新终点之后插入所述支路路径。
进一步的,所述得到全局巡检路径之后,还包括:
检查所述全局巡检路径是否遗漏必经点,和/或,检查所述全局巡检路径是否与所述巡检场景地图相符。
进一步的,所述获取巡检场景的地图之后,还包括:
进行地图连通性检查。
具体地,进行地图连通性检查,包括:
通过广度优先搜索算法访问地图上的点,删除未被访问的点;
若终点未被访问,则将起点设置为新的终点;
更新所述邻接表。
第二方面,本申请实施例提供了一种巡检机器人,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的方法。
本申请实施例与现有技术相比存在的有益效果是:通过获取巡检场景地图上的必经边,并根据与必经点相连的必经边数量创建出相应数量的虚拟点,使巡检场景地图满足旅行商问题的求解要求;以此求解得到的最优巡检路径,能避免遗漏必须巡检的位置,也能减少路径的重复巡检,有利于提高巡检机器人的巡检效率。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本申请实施例提供的巡检路径规划方法适用于寻求经过若干点或边的最优路径的场景,例如巡检、快递配送、仓库配货等,由相应的巡检路径规划装置来执行,该装置由软件和/或硬件组成,一般集成于手机、平板电脑、可穿戴设备、车载设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)等终端设备上,或集成于巡检机器人、仓储机器人、配送机器人等设备上。本申请实施例对终端设备的具体类型不作任何限制。
图1是本实施例提供的巡检路径规划方法的流程示意图。如图1所示,巡检路径规划方法包括如下步骤:
S11,获取巡检场景地图。
根据需要巡检的场景信息生成地图,地图以图论中的图的形式体现。图中的两个顶点之间有边表示这两个顶点之间是有路径连通的,边的权值表示这条路径的实际距离,边的必经属性表示这条边上是否有巡检任务,有巡检任务的边的必经属性为“是(或1或True)”,称为必经边,与之对应,必经边两端的端点属于必经点。
以图论的形式进行巡检场景地图初始化之后,将其保存为邻接表,邻接表包括所述巡检场景地图中的点、点之间的边、边的权值和边的必经属性。
S12,提取巡检场景地图中的必经边两端的端点作为必经点,形成必经地图。
提取必经边和必经边两端的必经点,形成必经地图。必经地图包括了巡检过程中必须要经过的所有路径。
S13,若与任一必经点相连的必经边数量大于1,则执行步骤S14,否则保留该必经点,作为步骤S15中虚拟地图的一部分。
TSP问题求解时,要求所有的点在路径中只能出现一次。而在实际应用中,由于巡检场景十分复杂,当与某点相连的边数量大于2时,经过该点的次数必定大于一次,即巡检场景通常不符合TSP问题模型的要求。因此,需要将必经地图向TSP问题模型进行转化。
S14,为该必经点创建数量等于相连的必经边数量的虚拟点。
图2是本实施例创建虚拟点的示意图。如图2所示,当与任一必经点A(图中实心点)相连的必经边d数量大于1时,在该点对应的每条必经边上增加一个虚拟点a(如图中空心点a1、a2、a3和a4)来代替该点,虚拟点继承了相应必经点的所有性质,虚拟点到相应必经点之间的距离为零,同一必经点的所有虚拟点之间的距离为零。
S15,形成虚拟地图。
由创建的虚拟点、步骤S13保留的必经点和必经边组成虚拟地图。
根据邻接表计算虚拟地图中任意两个必经点的最短距离,并记录所述最短距离对应的最短路径;根据虚拟地图中的必经点及最短距离构建代价矩阵。其中,虚拟点与相应必经点之间边的权值(权值为0)、同一必经点的所有虚拟点之间的边的权值(权值为0)。
S16,将虚拟地图作为旅行商问题进行求解,获得最优路线。
将虚拟地图作为TSP问题进行求解,LKH算法是目前求解TSP问题最经典的算法之一,以必经边作为LKH算法的输入,根据代价矩阵,LKH算法可求得巡检该虚拟地图的最优路线。
由于TSP问题求解的是从起点城市出发,访问每一座城市一次并回到起始城市的最短回路,而巡检场景下的起点和终点可能是不同的点,因此,将终点到起点的路径设置为必经边输入LKH算法中,求解出最短回路后,再将该终点至起点的路径删除,得到所述最优路线。
S17,将最优路线上的虚拟点还原为相应的必经点,得到必经路径。
虚拟点是为了算法求解而添加的,在求得最优路线后,应根据虚拟点与必经点的映射关系,将虚拟点还原为相应的必经点,得到巡检必经地图的必经路径。
本实施例通过获取巡检场景地图上的必经边,并根据与必经点相连的必经边数量创建出相应数量的虚拟点,使巡检场景地图满足旅行商问题的求解要求;本实施例利用了旅行商问题模型的特性,将必经地图抽象转化为旅行商问题输入到LKH算法中,以此求解得到的最优巡检路径能避免遗漏必须巡检的位置,也能减少路径的重复巡检,有利于提高巡检机器人的巡检效率。
在其它实施例中,以上述实施方式为基础进行改进,可适用于更复杂的巡检场景,缩短算法求解的时间。与上述实施例相同的部分将不再赘述。
图3是本申请另一实施例提供的巡检路径规划方法的流程示意图。如图3所示,巡检路径规划方法包括如下步骤:
S201,获取巡检场景地图。
首先,进行地图初始化。根据需要巡检的场景信息生成地图,地图以图论中的图的形式体现。图中的两个顶点之间有边表示这两个顶点之间有路径连通,边的权值表示这条路径的实际距离,边的必经属性表示这条边上是否有巡检任务,有巡检任务的边的必经属性为“是(或1或True)”,称为必经边,与之对应,必经边两端的端点属于必经点。
将所述图论中的图保存为邻接表,邻接表包括所述巡检场景地图中的点、点之间的边、边的权值和边的必经属性,还可包括点的序号。
进一步的,地图初始化之后,还应当进行地图连通性检查。
具体地,进行地图连通性检查,包括:通过广度优先搜索算法访问地图上的点,删除未被访问的点;若终点未被访问,则将起点设置为新的终点;更新所述邻接表。这一步骤是为了将不可到达的点去除,保证规划的巡检路径是可执行的。
S202,将巡检场景地图中具有唯一路线的支路的子节点去除。
有些支路只有一种巡检路线,在路径规划时可不纳入规划范围,可以降低路径规划的数据量以及复杂度。支路包括一个根节点和若干子节点,与根节点连接的边的数量大于2,与子节点连接的边的数量为1或2。
若所述支路的子节点包括起点,则将所述支路的根节点设置为新起点;若所述支路的子节点包括终点,则将所述支路的根节点设置为新终点。
去除支路子节点的方法包括:
从巡检场景地图中选择任一顶点,根据邻接表获取该顶点的邻接顶点数目,若邻接顶点数目大于1,则选择下一个顶点进行邻接顶点数目判断;若邻接顶点数目等于1则表明该顶点为支路的末端节点,删除该顶点后,选择与该顶点邻接的下一个顶点进行邻接顶点数目判断;遍历图中所有顶点,递归删除邻接顶点数目等于1的顶点。
或者,从巡检场景地图中选择任一顶点,根据邻接表获取该顶点的邻接顶点数目,若邻接顶点数目大于1,则选择下一个顶点进行邻接顶点数目判断;若邻接顶点数目等于1则表明该顶点为支路的末端节点,从该顶点开始向其邻接顶点进行查找,直到找到邻接顶点数量大于2的顶点即根节点,将上述寻找到的从末端节点到根节点的这条支路删除(不包括根节点本身),然后继续选择下一个顶点进行邻接顶点数目判断,直到所有的顶点都被遍历完,地图中将不存在邻接顶点数量为1的顶点。
删除支路的子节点后,邻接表中点的序号将不再连续,根据序号对剩下的店进行重新排序,并且重新编号,邻接表中保存旧序号和新序号的对应关系,在后续步骤中插入支路路径时,将根据旧序号和新序号的对应关系在相应位置插入指路路径。
S212,将删除的每条支路分别以树的形式保存。
S203,提取巡检场景地图中的必经边两端的端点作为必经点,形成必经地图。
提取必经边和必经边两端的必经点,形成必经地图。必经地图包括了巡检过程中必须要经过的所有路径。
S204,若与任一必经点相连的必经边数量大于1,则执行步骤S25,否则保留该必经点,作为步骤S26中虚拟地图的一部分。
S205,为该必经点创建数量等于相连的必经边数量的虚拟点。
S206,形成虚拟地图。
根据邻接表计算虚拟地图中任意两个必经点的最短距离,并记录所述最短距离对应的最短路径;根据虚拟地图中的必经点及最短距离构建代价矩阵。
S207,将虚拟地图作为旅行商问题进行求解,获得最优路线。
将虚拟地图作为TSP问题进行求解,以必经边作为LKH算法的输入,根据代价矩阵,LKH算法可求得巡检该虚拟地图的最优路线。
S208,将最优路线上的虚拟点还原为相应的必经点,得到必经路径。
S209,若必经路径中相邻两个必经点非直接相连,则将代价矩阵中相邻两个必经点的最短距离对应的最短路径作为连接路径,插入到相邻两个必经点之间,得到实际巡检路线。
S222,进行支路路径规划。
S232,在实际巡检路线中插入支路的路径,得到全局巡检路径。
对于每一条支路,提取支路中的必经点用于规划,支路路径的规划具体包括:
若所述支路的子节点不包括起点和终点,则采用深度优先搜索算法(DFS,depthfirst search)遍历支路中所有节点,生成从支路的根节点出发经过所有子节点后再回到根节点的支路路径;在所述实际巡检路线中所述根节点的位置插入所述支路路径;
若所述支路的子节点包括起点(起始支路),则采用DFS算法遍历支路中所有节点,生成从根节点出发经过所有子节点后再到所述起点的路径,将该路径反向后得到支路路径,在所述实际巡检路线的所述新起点之前插入所述支路路径;
若所述支路的子节点包括终点(终止支路),则采用DFS算法遍历支路中所有节点,生成从支路的根节点出发经过所有子节点后再到所述终点的支路路径,在所述实际巡检路线的所述新终点之后插入所述支路路径。
若所述支路的子节点包括起点和终点,终止支路的路径生成方式相同,起始支路的路径不需要DFS算法遍历支路中所有节点,只需生成起点到根节点的路径,将终止支路和起始支路分别插入到相应位置即可。
在步骤S202之后,依次执行步骤S212、S222和S232,步骤S232在步骤S209之后执行。
S210,进行全局巡检路径的差错检查。
检查所述全局巡检路径是否遗漏必经点,和/或,检查所述全局巡检路径是否与所述巡检场景地图相符。
本实施例先对巡检场景地图进行连通性检查,保证规划得到的路径都是可以到达的;对于具有唯一路线的支路进行剪枝处理,LKH算法只需求解主干地图的路线,减小了算法求解的复杂度,得到主干地图的必经路径后,再插入规划好的支路路径,节省运算时间。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本实施例还提供一种巡检路径规划装置,图4是本实施例提供的巡检路径规划装置的结构示意图。该巡检路径规划装置包括:
地图生成模块,用于获取巡检场景地图;还用于提取巡检场景地图中的必经边两端的端点作为必经点,形成必经地图;
必经点转换模块,用于当与任一必经点相连的必经边数量大于1时,为该必经点创建数量等于相连的必经边数量的虚拟点,形成虚拟地图;
路径求解模块,用于将所述虚拟地图作为旅行商问题进行求解,获得最优路线;
路径还原模块,用于将所述最优路线上的所述虚拟点还原为相应的必经点,得到必经路径。
其中,地图生成模块还用于将所述巡检场景地图保存为邻接表。所述邻接表包括所述巡检场景地图中的点、点之间的边、边的权值和边的必经属性。
代价计算模块,用于在将所述巡检场景地图保存为邻接表之后,根据所述邻接表计算虚拟地图中任意两个必经点的最短距离,并记录所述最短距离对应的最短路径;根据所述虚拟地图中的必经点及最短距离构建代价矩阵。
路径补全模块,用于在得到必经路径之后,若所述必经路径中相邻两个必经点非直接相连,则将所述代价矩阵中所述相邻两个必经点的最短距离对应的最短路径作为连接路径,插入到所述相邻两个必经点之间,得到实际巡检路线。
作为一种可能的实现方式,该巡检路径规划装置还包括支路剪枝模块,用于在获取巡检场景地图之后,将所述巡检场景地图中具有唯一路线的支路的子节点去除。具体地,支路剪枝模块还用于:若所述支路的子节点包括起点,则将所述支路的根节点设置为新起点;若所述支路的子节点包括终点,则将所述支路的根节点设置为新终点。
相应的,该巡检路径规划装置还包括支路还原模块,用于在所述实际巡检路线中插入所述支路的路径,得到全局巡检路径。
其中,支路还原模块具体用于:
若所述支路的子节点不包括起点和终点,则生成从支路的根节点出发经过所有子节点后再回到根节点的支路路径;在所述实际巡检路线中所述根节点的位置插入所述支路路径;
若所述支路的子节点包括起点,则生成从所述起点出发经过所有子节点后再到根节点的支路路径,在所述实际巡检路线的所述新起点之前插入所述支路路径;
若所述支路的子节点包括终点,则生成从支路的根节点出发经过所有子节点后再到所述终点的支路路径,在所述实际巡检路线的所述新终点之后插入所述支路路径。
进一步的,该巡检路径规划装置还包括差错控制模块,用于在得到全局巡检路径之后,检查所述全局巡检路径是否遗漏必经点,和/或,检查所述全局巡检路径是否与所述巡检场景地图相符。
进一步的,该巡检路径规划装置还包括地图查验模块,用于在获取巡检场景的地图之后,进行地图连通性检查。
具体地,地图查验模块具体用于:通过广度优先搜索算法访问地图上的点,删除未被访问的点;若终点未被访问,则将起点设置为新的终点。
相应的,地图生成模块还用于根据地图查验模块的查验结果更新邻接表。
需要说明的是,上述模块之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本实施例还提供了一种巡检机器人,图5是本实施例提供的巡检机器人的结构示意图。该巡检机器人包括至少一个处理器(图5中仅示出一个)、存储器以及存储在所述存储器中并可在所述至少一个处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意各个巡检路径规划方法实施例中的步骤。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器在一些实施例中可以是所述巡检机器人的内部存储单元,例如硬盘或内存。所述存储器在另一些实施例中也可以是所述巡检机器人的外部存储设备,例如插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器还可以既包括内部存储单元也包括外部存储设备。所述存储器用于存储操作系统、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,例如所述计算机程序的程序代码等。所述存储器还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述任意各个方法实施例中的步骤。
本申请实施例还提供了一种计算机程序产品,当计算机程序产品在巡检机器人的处理器上运行时,使得巡检机器人执行上述任意各个方法实施例中的步骤。
本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。