一种室内路径规划方法、终端及可读存储介质与流程

文档序号:17495999发布日期:2019-04-23 21:23阅读:141来源:国知局
一种室内路径规划方法、终端及可读存储介质与流程

本发明涉及室内导航技术领域,尤其涉及一种室内路径规划方法、终端及可读存储介质。



背景技术:

室内路径规划是目前正在兴起的一种新技术,得益于室外导航技术的成熟与室内矢量地图研究的发展,但是由于室内环境的复杂性,室内路径规划在搜索效率和符合人类行为预期上还存在着诸多挑战。

在室内路径规划领域,目前,多采用栅格法或可见点法划分搜索空间(地图中需要搜索的场景范围)。栅格法最为简单,每个栅格单元是否被占据的状态都可以用二值变量来标识。然而利用栅格法需要大量细化的栅格或路点来描述多障碍的地图,冗余点较多,内存占用率高,寻路效率低,最重要的是在利用栅格法进行室内路径规划时,搜索得到的路径结果并不能随意绕过障碍物且无法得到符合人类行为方式的路径。而可见点法是通过在地图上标注关键的可通行点,可以减小存储空间,但是目前路径搜索采用可见点的方法需要设计师根据地图中的障碍物来对可见点设置位置,这种方法存在着一定的局限性,地图场景越复杂,设计师手工操作难度也越高,而且无法有效的避开障碍物区域且工作效率较低。



技术实现要素:

为解决现有存在的技术问题,本发明实施例提供一种室内路径规划方法、终端及可读存储介质,能够在障碍物较多、空间较为复杂的室内环境下快速搜索到最佳路径,进而极大的提高了路径规划的效率。

本发明实施例的技术方案是这样实现的:

第一方面,本发明实施例提供一种室内规划方法,所述方法包括:

获取目标区域的地图信息、起点和终点,其中,所述地图信息中至少包括障碍物的位置信息、障碍物的特征点信息和所述目标区域的特征点信息;

根据障碍物的特征点信息和所述目标区域的特征点信息对所述目标区域的地图场景进行三角剖分,得到第一三角形集合;

根据所述障碍物的位置信息,从所述第一三角形集合中除去位于障碍物区域内的三角形,得到第二三角形集合,并计算所述第二三角形集合对应的邻接矩阵;

根据所述第二三角形集合对应的邻接矩阵、起点和终点,确定起点到终点的路径序列。

第二方面,本发明实施例提供一种终端,所述终端至少包括:处理器和配置为存储可执行指令的存储介质,其中:

处理器配置为执行存储的可执行指令,所述可执行指令包括:

获取目标区域的地图信息、起点和终点,其中,所述地图信息中至少包括障碍物的位置信息、障碍物的特征点信息和所述目标区域的特征点信息;

根据障碍物的特征点信息和所述目标区域的特征点信息对所述目标区域的地图场景进行三角剖分,得到第一三角形集合;

根据所述障碍物的位置信息,从所述第一三角形集合中除去位于障碍物区域内的三角形,得到第二三角形集合,并计算所述第二三角形集合对应的邻接矩阵;

根据所述第二三角形集合对应的邻接矩阵、起点和终点,确定起点到终点的路径序列。

第三方面,本发明实施例提供一种计算机可读存储介质,所述计算机存储介质中存储有计算机可执行指令,该计算机可执行指令配置为执行上述室内路径规划方法。

本发明实施例提供了一种室内路径规划方法、终端及可读存储介质,其中,获取目标区域的地图信息、起点和终点,其中,所述地图信息中至少包括障碍物的位置信息、障碍物的特征点信息和所述目标区域的特征点信息;根据障碍物的特征点信息和所述目标区域的特征点信息对所述目标区域的地图场景进行三角剖分,得到第一三角形集合;根据所述障碍物的位置信息,从所述第一三角形集合中除去位于障碍物区域内的三角形,得到第二三角形集合,并计算所述第二三角形集合对应的邻接矩阵;根据所述第二三角形集合对应的邻接矩阵、起点和终点,确定起点到终点的路径序列。如此,由于每次遍历的只是每个三角形的相邻三角形(存在相邻边的最多只有三个),因而能够在障碍物较多、空间较为复杂的室内环境下快速搜索到最佳路径,进而极大的提高了路径规划的效率。

附图说明

在附图(其不一定是按比例绘制的)中,相似的附图标记可在不同的视图中描述相似的部件。具有不同字母后缀的相似附图标记可表示相似部件的不同示例。附图以示例而非限制的方式大体示出了本文中所讨论的各个实施例。

图1为本发明实施例一种室内路径规划方法的实现流程示意图;

图2为图2为本发明实施例二一种室内路径规划方法的实现流程示意图;

图3为本发明实施例基于三角剖分和a*算法的室内路径规划方法的整体实现流程;

图4为本发明实施例利用bowyer-watson三角剖分算法的实现流程示意图;

图5为本发明实施例对室内地图场景进行三角剖分的实例图;

图6为去除障碍物中的delaunay三角形的实现流程示意图;

图7在室内地图场景中去除障碍物中的三角形的实例图;

图8为本发明实施例基于改进的a*算法的搜索路径方法的实现流程示意图;

图9为本发明实施例起点到终点的初始路径的示意图;

图10为本发明实施例室内路径平滑方法的实现流程示意图;

图11为本发明实施例起点到终点的最终路径的示意图;

图12为本发明实施例终端的组成结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对发明的具体技术方案做进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

实施例一

本发明实施例提供一种室内路径规划方法,图1为本发明实施例一种室内路径规划方法的实现流程示意图,如图1所示,所述方法包括以下步骤:

步骤s101,获取目标区域的地图信息、起点和终点。

这里,目标区域的地图信息是根据目标区域原始的室内图,根据障碍物与非障碍物在室内的布局,通过适当处理得到的。目标区域的地图信息中至少包括障碍物的位置信息、障碍物的特征点信息和所述目标区域的特征点信息,能够反映目标区域的室内空间信息布局情况,既简洁地描述了周围环境又包含了几何、语义和拓扑信息。

特征点信息至少包括特征点的标识信息和特征点的坐标信息。目标区域的特征点指的是目标区域的外围轮廓的特征点,例如,在本实施例中目标区域为一个矩形区域,那么目标区域的特征点即为该矩形区域的四个顶点。

室内空间一般会由阻碍通行的结构物隔开,比如墙体,桌椅等,这些常见的结构物也称为障碍物,这些障碍物都可以描述成不同形状的图形,在本实施例中障碍物用特征点以及特征点之间的连线表示。

起点和终点可以是用户输入的起点的位置信息和终点的位置信息。其中,可以用坐标来表示位置信息。

步骤s102,根据障碍物的特征点信息和所述目标区域的特征点信息对目标区域的地图场景进行三角剖分,得到第一三角形集合。

这里,在实现过程中,可以利用bowyer-watson算法根据障碍物的特征点信息和所述目标区域的特征点信息确定第一三角形集合。

下面对bowyer-watson算法进行解释说明。

bowyer-watson算法属于逐点插入法的一种,其前提条件是需要生成一个delaunay三角网的初始网格,在本实施例中,首先根据目标区域的特征点集生成一个包括目标区域特征点集的矩形,然后连接矩形的对角线,从而生成两个三角形,这两个三角形即为初始网格。然后将障碍物的特征点集中的散点依次插入,并找出其外接圆包含插入点的三角形(称为该点的影响三角形),删除影响三角形的公共边,形成一个空腔。再将插入点同影响三角形的全部顶点连接起来,从而完成一个点在delaunay三角形链表中的插入。直到障碍物的特征点集中的所有特征点插入完毕,即得到了第一三角形集合。

步骤s103,根据所述障碍物的位置信息,从所述第一三角形集合中除去位于障碍物区域内的三角形,得到第二三角形集合,并计算所述第二三角形集合对应的邻接矩阵。

这里,由于在生成第一三角形集合的时候,并没有考虑障碍物,也就是说,所述第一三角形集合中可能存在一些位于障碍物区域内的三角形,很显然,在从起点到达终点的路径中,并不能从障碍物中穿越过去,因此,需要将第一集合中位于障碍物区域内的三角形去除掉,得到第二三角形集合,进而根据第二三角形集合确定起点到终点的路径。

在实现过程中,可以依次遍历第一三角形集合中的每一个三角形,查找该三角形的邻接三角形,并判断该三角形和它的邻接三角形构成的四边形是否在障碍物区域内,如果该四边形在障碍物区域内,将该三角形和它的邻接三角形从第一三角集合中删除,直至遍历完第一三角形集合中的所有三角形。此时得到的第一三角形集合即为第二三角形集合。

然后,在确定第二三角形集合对应的邻接矩阵,也就是说如果第二三角形集合中的第i个三角形与第j个三角形具有公共边的话,那么所述邻接矩阵的(i,j)和(j,i)均为1。邻接矩阵是一个对称矩阵。

第i个三角形与第j个三角形具有公共边也就是说第i个三角形和第j个三角形有两个顶点是相同的。

步骤s104,根据所述第二三角形集合对应的邻接矩阵、起点和终点,确定起点到终点的路径序列。

这里,所述步骤s104在实现过程中又可以通过以下两个步骤实现:

步骤s1041,根据所述邻接矩阵、起点和终点,确定第一路径序列;

步骤s1042,从所述第一路径序列中去除冗余路径点,得到起点到终点的路径序列。

其中,根据所述邻接矩阵、起点和终点,确定第一路径序列可以利用a*算法的思想完成。a*算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是解决许多搜索问题的有效算法。算法中的距离估算值与实际值越接近,最终搜索速度越快。

在从所述第一路径序列中去除冗余路径点,得到起点到终点的路径序列时,遍历第一路径序列中的所有节点,当某一节点的前后两个节点连线上无障碍物时,将该节点删除,输出遍历完第一路径序列中的所有节点得到的路径序列,即起点到终点的路径序列。

为了便于理解本发明实施例,首先对本发明实施例采用的a*算法进行解释说明。在a*算法中,首先要创建两个表,开放列表openlist和闭合列表closelist,其中,openlist中保存所有已生成而未考察的节点,closelist中记录已访问过的节点。

在a*算法中涉及到一个至关重要的公式,该公式表示为:

f(n)=g(n)+h(n)(1-1);

在公式(1-1)中,f(n)是从起点经由节点n到终点的代价估计,g(n)是在室内地图中从起点到节点n的实际代价,h(n)是从节点n到终点的最佳路径的估计代价。对于路径搜索问题,代价就是距离。

需要说明的是,本发明实施例中的f(n)与其他实施例中的f所表征的意义是相同的,g(n)与其他实施例中的g表征的意义是相同的,h(n)与其他实施例中的h表征的意义是相同的。

a*算法的实现包括以下几步:

第一步,把起点加入openlist。

第二步,重复如下步骤:

步骤a,遍历openlist,查找f值最小的节点,把它作为当前要处理的节点。

步骤b,把这个节点移到closelist。

步骤c,对当前这个节点所在的三角形的相邻三角形的质心点

如果这些质心点不可抵达的或者这些质心点在closelist中,忽略这些质心点。否则,做如下操作。

如果质心点不在openlist中,把质心点加入openlist,并且把当前这个节点所在的三角形设置为该质心点的父节点,记录该三角形的f,g和h值。

如果该质心点已经在openlist中,检查这条路径(即经由当前方格到达该质心点那里)是否更好,用g值作参考。更小的g值表示这是更好的路径。如果是这样,把该质心点的父节点设置为当前三角形,并重新计算该质心点的g和f值。如果openlist是按f值排序的话,改变后需要重新排序。

步骤d,停止,当把终点加入到了openlist中,此时路径已经找到了,或者查找终点失败,并且openlist是空的,此时没有路径。

第三步,保存路径。从终点开始,每个三角形沿着父节点移动直至起点,此时得到第一路径序列。

在本发明实施例提供的一种室内路径规划方法中,首先获取目标区域的地图信息、起点和终点所述地图信息中至少包括障碍物的位置信息、障碍物的特征点信息和所述目标区域的特征点信息;再根据障碍物的特征点信息和所述目标区域的特征点信息对所述目标区域的地图场景进行三角剖分,得到第一三角形集合;根据所述障碍物的位置信息,从所述第一三角形集合中除去位于障碍物区域内的三角形,得到第二三角形集合,并计算所述第二三角形集合对应的邻接矩阵;然后根据所述第二三角形集合对应的邻接矩阵、起点和终点,确定起点到终点的路径序列。由于每次遍历的只是每个三角形的相邻三角形(存在相邻边的最多只有三个),因而能够在障碍物较多、空间较为复杂的室内环境下快速搜索到最佳路径,进而极大的提高了路径规划的效率。

实施例二

基于前述的实施例,本发明实施例再提供一种室内路径规划方法,图2为本发明实施例二室内路径规划方法的实现流程示意图,如图2所示,所述方法包括以下步骤:

步骤s201,获取目标区域的地图信息、起点和终点。

这里,所述地图信息中至少包括障碍物的位置信息、障碍物的特征点信息和所述目标区域的特征点信息。

步骤s202,根据所述目标区域的特征点信息,确定初始三角形。

这里,所述步骤s202可以通过以下步骤实现:

步骤s2021,根据所述目标区域的特征点信息,确定包含目标区域的特征点的矩形。

这里,所述矩形可以是包含目标区域的所有特征点的最小的矩形。

步骤s2022,根据所述矩形的四个顶点,确定初始三角形,。

这里,在实现过程中,可以任意连接两个对角的顶点,将所述矩形划分为两个三角形,这两个三角形即为初始三角形,也就是说,所述初始三角形的个数为两个。

步骤s203,从障碍物的特征点中获取第i个点,确定所述第i个点所在的第i三角形。

这里,所述i=1、2、…、n,n为所述障碍物的特征点总数。

步骤s204,确定所述第i三角形的邻接三角形,对所述第i三角形和所述邻接三角形进行空外接圆检测,得到第i多边形。

这里,对所述第i三角形和所述邻接三角形进行空外接圆检测,即找到外接圆包含第i个点的所有的三角形并删除这些三角形,形成一个包含第i个点的多边形空腔。

步骤s205,根据所述第i个点和所述第i多边形的特征点,确定第i三角形子集。

这里,将所述第i个点和所述第i个多边形的特征点进行一一连接,得到第i三角形子集。假设第i多边形有n个特征点,那么第i三角形子集中包括n个三角形。

步骤s206,将第一三角形子集至第n三角形子集构成的集合确定为第一三角形集合。

步骤s207,获取所述第一三角形集合中的第j个三角形和所述第j个三角形的k个邻接三角形;根据所述障碍物的位置信息确定所述第j个三角形和第p个邻接三角形构成的多边形在障碍物区域内时,从所述第一三角形集合中删除所述第j个三角形和所述第p个邻接三角形。

这里,j=1、2、…、m,m为所述第一三角形集合中的三角形的个数,k为一个三角形的邻接三角形的个数,因此,k为大于等于1且小于等于3的自然数。

步骤s208,将删除三角形和邻接三角形之后的第一三角形集合确定为第二三角形集合。

这里,第二三角形集合中,不包括位于障碍物区域内的三角形。在确定起点到终点的路径时也是基于第二三角形集合进行的,因为从起点到终点的路径是不能穿越障碍物的。

步骤s209,生成一个t*t的初始矩阵。

这里,t为第二三角形集合中的三角形的个数,所述初始矩阵中的每个元素的初始值为0。

步骤s210,判断所述第二三角形集合中的第q个三角形和第r个三角形是否为相邻的三角形。

这里,q=1、2、…、t,r=1、2、…、t。

步骤s211,如果所述第q个三角形和第r个三角形为相邻的三角形,将所述初始矩阵中的第(q,r)个元素设置为1,得到所述第二三角形集合对应的邻接矩阵。

这里,如果所述第q个三角形和第r个三角形为相邻的三角形,那么第r个三角形和第q个三角形也是相邻的三角形,即所述初始矩阵中的第(r,q)个元素也设置为1。由于对称性可知,所述邻接矩阵应该是对角线为0的对称矩阵。

如果所述第q个三角形和第r个三角形不是相邻的三角形,那么所述初始矩阵中的第(p,r)个元素的取值保存不变,仍为0。

步骤s212,根据所述第二三角形集合对应的邻接矩阵、起点和终点,确定第一路径序列。

这里,可以利用a*算法的思想,根据所述邻接矩阵、起点和终点,确定第一路径序列,在实际实现过程中,所述步骤s212可以通过以下步骤实现:

步骤s2121,根据所述起点坐标,确定起点所在的三角形,并将所述起点坐标添加到开放列表中;

步骤s2122,从开放列表中确定出f值最小的第一节点;

步骤s2123,如果所述第一节点不是终点所在三角形的质心点,确定所述第一节点所在的三角形,并将所述第一节点添加到闭合列表中;

步骤s2124,根据所述邻接矩阵,确定所述第一节点所在的三角形的第一邻接三角形;

步骤s2125,将所述第一邻接三角形的质心点加入到所述开放列表中,并将所述第一节点设置为所述第一邻接三角形的质心点的父节点;

步骤s2126,如果所述开放列表中包括终点所在的三角形的质心点,将终点的父指针指向终点质心坐标的父指针,逆序遍历所述开放列表得到第一路径序列。

步骤s2127,如果所述开放列表中不包括终点所在的三角形的质心点,从开放列表中确定出f值最小的第二节点;

步骤s2128,如果所述第二节点不是终点所在三角形的质心点,确定所述第二节点所在的三角形,并将所述第二节点添加到闭合列表中;

步骤s2129,根据所述邻接矩阵,确定所述第二节点所在的三角形的第二邻接三角形;

步骤s21210,将所述第二邻接三角形的质心点中不存在开放列表的质心点加入到开放列表中;

步骤s21211,确定所述开放列表中f值最小的第三节点;

步骤s21212,如果所述第二节点与所述第三节点为同一个节点,并将所述第二节点设置为所述第二邻接三角形的质心点的父节点;

步骤s21213,如果所述第二节点与所述第三节点为不同的节点,将所述第三节点设置为所述第二邻接三角形的质心点的父节点;

步骤s21214,如果所述开放列表中包括终点所在的三角形的质心点,将终点的父指针指向终点质心坐标的父指针,逆序遍历所述开放列表得到第一路径序列。

在步骤s2121至步骤s21214的实施例中,由于三角形的邻接三角形最多只有三个,那么在确定f值最小的节点时,最多只需要从三个值中确定,而常规的a*算法最多需要从八个值中确定,这样,采用步骤s2121至步骤s21214的实施例中获取第一路径序列的方法时,可以极大的降低计算量,从而提高获取第一路径序列的效率。

步骤s213,从所述第一路径序列中去除冗余路径点,得到起点到终点的路径序列。

这里,在其他实施例中,所述步骤s213可以通过以下步骤实现:

步骤s2131,将所述第一路径序列中的第二个节点设置为当前节点;

步骤s2132,判断所述当前节点的前一个节点和当前节点的后一个节点的连线是否穿越障碍物;

步骤s2133,如果所述当前节点的前一个节点和当前节点的后一个节点的连线穿越障碍物,将所述当前节点的后一个节点设置为当前节点;

步骤s2134,如果所述当前节点的下一个节点为终点,将第一路径中的序列确定为起点到终点的路径序列。

步骤s2135,如果所述当前节点的前一个节点和当前节点的后一个节点的连线没有穿越障碍物,将所述当前节点的从所述第一路径序列中删除;

步骤s2136,将当前节点的后一个节点设置为当前节点。

在步骤s2131至步骤s2136的实施例中,是利用了三角形中两边之和大于第三边的原理,也可以认为是利用了两点之间直线距离最短的原理。因为,如果两个点之间的连线不经过障碍物,那么肯定最短路径是这两个点之间的直线距离,而不是从两个点中的一个点到第三个点,在由第三个点到另一个点的距离。

在本发明实施例提供的室内路径的规划方法是在得到delaunay三角形的基础上,并结合改进的a*算法遍历delaunay三角形得到最佳路径的,能够达到轻松的绕过密集且不规则的障碍物,以及准确的选择最优路径,而且可以随意的在两个障碍物之间穿过的效果,更适合于商场等不存在固定路径的室内环境。

实施例三

本发明实施例先提供一种室内路径规划方法,所述方法是针对室内地图的路径规划提出的基于三角剖分和a*算法的室内路径规划方法,旨在解决在障碍物数量较多且不规则的复杂室内环境中快速准确的搜索到最佳路径。所述方法主要思想是根据室内地图复杂场景对其进行三角剖分然后结合用户需求实现室内地图路径搜索的过程。

本发明实施例提供的室内路径规划方法,包括对地图场景进行三角剖分(在不考虑障碍物区域的情况下)、去除障碍物中delaunay三角形(即去除障碍物区域的可通行三角形)、利用a*算法并结合用户需求进行路径搜索,以及路径平滑四个步骤,图3为本发明实施例基于三角剖分和a*算法的室内路径规划方法的整体实现流程。如图3所示,所述方法包括以下步骤:

步骤s301,根据室内地图信息,在不考虑障碍物的情况下,利用bowyer-watson三角剖分算法将室内地图的场景进行三角剖分,即能够得到所有的delaunay三角形。

这里,所述地图信息包括目标区域的特征点信息和障碍物的特征点信息。目标区域所有的特征点构成了目标区域的特征点集,障碍物的所有特征点构成了障碍物的特征点集。

步骤s302,去除障碍物中的delaunay三角形。

这里,在步骤s301得到delaunay三角形的基础上,结合所述室内地图中障碍物信息,执行去除障碍物中的delaunay三角形方法,去除障碍物中的delaunay三角形(即删除障碍物中所包含的delaunay三角形的公共边),并输出delaunay三角形邻接矩阵(具有相邻关系的三角形的邻接矩阵)。

步骤s303,根据邻接矩阵和改进的a*算法,得到初始路径序列。

这里,在步骤s302得到的邻接矩阵的基础上,结合用户需求,并利用改进的a*算法,执行基于改进a*算法的搜索路径方法,逆序遍历得到初始路径序列。

步骤s304,对初始的路径序列进行平滑处理,得到最终的规划路径。

这里,在步骤s303得到的初始路径序列的基础上,执行室内路径平滑方法,遍历初始路径序列中的所有节点。当某一节点的前后两个节点连线上无障碍物时,将延长线路的这一中间节点删除,最后输出此时得到的路径序列,也就是最终的路径搜索结果。

下面对每一步骤的实现细节进行说明。

图4为本发明实施例利用bowyer-watson三角剖分算法的实现流程示意图,如图4所示,利用bowyer-watson三角剖分算法将室内地图的场景进行三角剖分可以通过以下步骤实现:

步骤s401,插入目标区域的特征点集。

步骤s402,根据所述目标区域的特征点集建立辅助矩形。

步骤s403,建立初始delaunay三角网格。

这里,针对给定的目标区域的特征点集v,找到一个包含该点集的矩形r,可以称r为辅助窗口,连接r的任意一条对角线,形成两个三角形,这两个三角形就是初始delaunay三角网格。

步骤s404,判断障碍物特征点集是否还具有障碍物特征点。

这里,如果所述障碍物特征点集还具有障碍物特征点,进入步骤s405,如果障碍物特征点集不具有障碍物特征点,进入步骤s411。

步骤s405,从所述障碍物特征点集中顺序插入特征点。

这里,在目前已经有的delaunay三角网格t的基础上,从障碍物特征点集中取出一个点p插入。

步骤s406,确定点p所在的三角形。

步骤s407,搜索所述三角形的邻接三角形。

这里,由于三角形有三条边,所以三角形的邻接三角形只有三个。

步骤s408,对点p所在的三角形进行空外接圆检测,形成delaunay空腔。

这里,多点p所在的三角形进行空外接圆检测也就是找到外接圆包含点p的所有的三角形并删除这些三角形,形成一个包含p的多边形空腔,即delaunay空腔。

步骤s409,连接p与delaunay腔的每一个顶点。

步骤s410,形成新的delaunay三角网格,并进入步骤s404。

这里,假设delaunay空腔有a个顶点,那么此时形成的新的delaunay三角网格中具有a个三角形。

步骤s411,输出此时形成的所有delaunay三角形,得到三角形集合d1。

这里,当插入了所有的障碍物特征点后,输出此时形成的所有delaunay三角形,得到集合d1。

在图5中即展示了一个具体的室内地图场景(地图的最外层是一个长为544cm,宽为518cm的一间屋子,其中灰色区域代表障碍物区域501,其中在这间屋子中共设置12个障碍物,包括不规则的障碍物和规则的障碍物)利用bowyer-watson三角剖分算法所得到的delaunay三角形。

bowyer-watson三角剖分算法是一种逐点插入方式的delaunay三角剖分,在不考虑障碍物区域的情况下,通过不断的读取障碍物信息的方式顺序插入相应的顶点(顺时针或者逆时针插入障碍物的特征点),每插入一个点时都需要快速定位特征点所在的三角形、确定特征点的影响并构建delaunay空腔,随着点数的增加,三角形的数目不断增加,直至插入所有的障碍物的特征点,如图3所示的地图的场景中,各个顶点即是相应的障碍物顶点,得到的delaunay三角形集合d1便是三角剖分的结果。

图6为去除障碍物中的delaunay三角形的实现流程示意图,如图6所示,去除障碍物中的delaunay三角形可以通过以下步骤实现:

步骤s601,输入delaunay三角网格集合d1。

步骤s602,从所述三角形集合d1中的第一个三角形开始,依次遍历该三角形的相邻三角形。

步骤s603,判断该三角形和它的相邻三角形组成的四边形是否为障碍物的一部分。

这里,结合障碍物图形,从d1中取出一个三角形,遍历该三角形与其他三角形形成的多边形是否在障碍物区域内或者是障碍物。

如果该三角形和它的相邻三角形组成的四边形为障碍物的一部分,进入步骤s604,如果该三角形和它的相邻三角形组成的四边形不是障碍物的一部分,进入步骤s605,。

步骤s604,删除该三角形和它的相邻三角形的公共边。

这里,也就是删除该三角形和它的相邻三角形组成的四边形的对角线。

步骤s605,判断是否已经遍历完三角形集合d1中全部的三角形。

这里,如果已经遍历完三角形集合d1中全部的三角形,此时进入步骤s606;如果没有遍历完三角形集合d1中全部的三角形,此时进入步骤s602。

步骤s606,在三角形集合d1中删除所有障碍物中的三角形,形成新的三角剖分三角形集合d2。

步骤s607,确定三角形集合d2的邻接矩阵。

这里,在新的三角剖分的三角形基础上,依次遍历d2中所有的三角形;若两个三角形之间具有公共边(两个三角形是相邻三角形),则在邻接矩阵中记录为1,否则记录为0;若三角形集合d2中所有三角形已经遍历完成,输出相邻三角形的邻接矩阵a1。

在步骤s601至步骤s607所在的实施例中,按照delaunay三角形存储的顺序遍历所有delaunay三角形,依次去除障碍物中的三角形(即去除相邻三角形的公共边),为图5的室内地图场景添加障碍物区域(障碍物区域为不可行走区域)的限制因素。如图7所示的地图的场景中,方格区域701代表的是障碍物区域,地图中其它delaunay三角形即是地图场景下三角剖分得到的完整的delaunay三角形集合d2。然后遍历d2集合,得到相邻delaunay三角形的邻接矩阵a1。

图8为本发明实施例基于改进的a*算法的搜索路径方法的实现流程示意图,如图8所示,所述方法包括以下步骤:

步骤s801,输入起点和终点。

步骤s802,将起点坐标加入到openlist中,并将起点设置为当前节点。

步骤s803,判断openlist是否为空。

这里,如果openlist为空,则代表地图中不包含目标点,这里的目标点指的是终点所在三角形的质心点,目标点不在地图中,说明终点也不在地图的范围内此时结束流程;如果openlist不为空进入步骤s804。

步骤s804,将openlist中f值最小的节点确定为当前节点。

这里,f值可以按照公式(2-1)确定:

f=g+h(2-1);

其中,g代表估价函数即起点移动到指定的delaunay三角形的移动距离的耗费,h表示从指定的delaunay三角形移动到终点所在的delaunay三角形的质心的预计耗费。

当前节点为它的邻接三角形的质心点的父节点。

步骤s805,将当前节点从openlist中移除,并将当前节点加入到closelist中。

步骤s806,确定当前节点所在的三角形,并根据邻接矩阵,确定当前节点所在三角形的邻接三角形。

步骤s807,判断所述邻接三角形的质心点是否在closelist中。

这里,如果所述邻接三角形的质心点在closelist中,进入步骤s812;如果所述邻接三角形的质心点不在closelist中,进入步骤s808。

步骤s808,判断所述邻接三角形的质心点是否在openlist中。

这里,如果所述邻接三角形的质心点在openlist中,进入步骤s809;如果所述邻接三角形的质心点不在openlist中,进入步骤s811。

步骤s809,判断所述邻接三角形的质心点的f值是否比原来的f值小。

这里,如果所述邻接三角形的质心点的f值比原来的f值小,进入步骤s810;如果所述邻接三角形的质心点的f值不比原来的f值小,进入步骤s812。

步骤s810,更新所述邻接三角形的质心点的f值。

这里,更新所述邻接三角形的质心点的f值后,再次确定出f值最小的节点,并将f最小的节点作为其他邻接三角形的质心点的父节点。

步骤s811,将所述邻接三角形的质心点加入到openlist中,计算这些质心点的f值。

步骤s812,判断终点所在的三角形的质心点是否在openlist中。

这里,如果终点所在的三角形的质心点在openlist中,进入步骤s813,如果终点所在的三角形的质心点不在openlist中,进入步骤s803。

步骤s813,输出路径。

这里,如果所述终点所在的三角形的质心点在openlist中,则表明已找到起点到终点的初始路径序列,此时将终点的父指针指向终点质心坐标的父指针,逆序遍历openlist得到初始的路径规划序列path。

图9为本发明实施例起点到终点的初始路径的示意图。在图9已经划分好搜索空间的基础上,首先根据已经得到的邻接矩阵信息结合用户需求,确定起始点和终点所在的delaunay三角形的位置,然后通过遍历当前结点的相邻delaunay三角形的方法,逐步插入delaunay三角形的质心(除了起始点和终点),直至遍历到终点,逆序输出此时的路径序列,如图9所示的地图的场景中,方格区域代表障碍物区域,折线路径901代表从起始点到终点的已经规划的初始路径。

图10为室内路径平滑方法的实现流程示意图,如图10所示,室内路径平滑方法包括以下步骤:

步骤s1001,输入初始路径序列path。

步骤s1002,从初始路径序列path中的第二个顶点开始遍历,将第二个顶点设置为当前顶点;

步骤s1003,判断当前顶点的前后两个顶点的连线是否穿越障碍物。

这里,如果当前顶点的前后两个顶点的连线穿越障碍物,则进入步骤s1004;如果当前顶点的前后两个顶点的连线没有穿越障碍物,进入步骤s100

步骤s1004,判断是否遍历完初始路径中的顶点。

这里,如果已经遍历完初始路径中的顶点,进入步骤s1007,如果没有遍历完初始路径序列中的顶点,进入步骤s1005。

步骤s1005,顺序遍历下三个顶点。

这里,如果没有遍历完初始路径序列中的顶点,将当前顶点的后一个顶点设置为当前顶点,进入步骤s1003。

步骤s1006,设置当前顶点的前一个顶点为此时的当前顶点,并从path中删除当前顶点。

步骤s1007,输出路径序列

此时path中的序列即为最终的路径规划序列route。

在图9得到的路径结果的基础上,遍历路径中的所有节点,当某一节点前后节点连线上无障碍物时,将延长线路的这一中间节点删除,最后输出此时得到的路径规划序列,如图11所示的地图的场景中,方格填充区域代表障碍物区域,折线路径1101代表从起始点到终点的已经规划的最终路径。

本发明实施例提供的基于三角剖分和a*算法的室内路径规划方法,在利用bowyer-watson三角剖分算法得到的delaunay三角形的基础上进行a*遍历时,由于每次遍历的只是每个三角形的相邻三角形(存在相邻边的最多只有三个),极大的提高了路径搜索效率。并且在bowyer-watson三角剖分得到的delaunay三角形的基础上,并结合改进的a*算法遍历delaunay三角形得到最佳路径时,能够达到轻松的绕过密集且不规则的障碍物,以及准确的选择最优路径,而且可以随意的在两个障碍物之间穿过的效果,更适合于商场等不存在固定路径的室内环境。

本发明实施例提供的基于三角剖分和a*算法的室内路径规划方法,不同于传统的栅格法,不再是沿着栅格的边,横平竖直的行走直线,而是可以通过剖分出的delaunay三角形的内部,更适应于室内复杂的地图环境,搜索出的最终路径,更符合人的行为方式。

实施例四

本发明实施例提供一种终端,图12为本发明实施例终端的组成结构示意图,如图所示,所述终端至少包括:处理器1201和配置为存储可执行指令的存储介质1202,其中:

处理器1201配置为执行存储的可执行指令,所述可执行指令用于实现下面的步骤:

获取目标区域的地图信息、起点和终点,其中,所述地图信息中至少包括障碍物的位置信息、障碍物的特征点信息和所述目标区域的特征点信息;

根据障碍物的特征点信息和所述目标区域的特征点信息对所述目标区域的地图场景进行三角剖分,得到第一三角形集合;

根据所述障碍物的位置信息,从所述第一三角形集合中除去位于障碍物区域内的三角形,得到第二三角形集合,并计算所述第二三角形集合对应的邻接矩阵;

根据所述第二三角形集合对应的邻接矩阵、起点和终点,确定起点到终点的路径序列。

需要说明的是,以上终端实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果,因此不做赘述。对于本发明终端实施例中未披露的技术细节,请参照本发明方法实施例的描述而理解。

对应地,本发明实施例提供一种计算机存储介质,所述计算机存储介质中存储有计算机可执行指令,该计算机可执行指令配置为执行本发明其他实施例提供的室内路径规划方法。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1