CN104156459A - 一种基于相同开销网格的高效寻路的方法及系统 - Google Patents
一种基于相同开销网格的高效寻路的方法及系统 Download PDFInfo
- Publication number
- CN104156459A CN104156459A CN201410412693.5A CN201410412693A CN104156459A CN 104156459 A CN104156459 A CN 104156459A CN 201410412693 A CN201410412693 A CN 201410412693A CN 104156459 A CN104156459 A CN 104156459A
- Authority
- CN
- China
- Prior art keywords
- point
- pathfinding
- circuit
- travel
- barrier
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/954—Navigation, e.g. using categorised browsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/04—Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem"
- G06Q10/047—Optimisation of routes or paths, e.g. travelling salesman problem
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Economics (AREA)
- Strategic Management (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Game Theory and Decision Science (AREA)
- Radar, Positioning & Navigation (AREA)
- Development Economics (AREA)
- Remote Sensing (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Entrepreneurship & Innovation (AREA)
- Marketing (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Navigation (AREA)
Abstract
本发明公开了一种基于相同开销网格的高效寻路的方法及系统,系统包括:初始化模块、寻路子系统、路径合并优化模块三大部分。初始化模块用于把需要寻路的现实地图分成若干大小相等的网格,以坐标的方式确定起始点位置(x0,y0)和目标点位置(xn,yn)。寻路子系统用于寻找从起始点到目标点的线路,路径合并优化模块用于回溯线路长度的计算,并通过与待选线路中各段拐点间线路长度的比较,选出最短线路作为最后的行进线路。方法步骤为:第一步:初始化步骤;第二步:寻路步骤;第三步:路径优化步骤。本发明加快寻路速度,降低服务器或客户端的开销,本发明的寻路效率是大于A*。
Description
技术领域
本发明属于互联网领域,具体而言,涉及一种基于相同开销网格的高效寻路的方法及系统。
背景技术
目前,由于互联网传输速度的提升,大量虚拟现实服务、应用在互联网上逐步扩展,例如虚拟展馆、虚拟博物馆、虚拟旅游、3D游戏等,这些应用服务必须使用寻路系统,帮助移动单位绕过障碍物到达目的地。特别是在带有多人在线版本的虚拟现实应用中,例如3D游戏,其寻路系统需要消耗服务器大量的计算资源。
因此,寻路算法的优化,可以大大提高服务器效率,并提高服务器单机负载能力,对虚拟现实应用服务的正常运行帮助非常大。
目前的寻路算法,比较常见的是网格型寻路,即为,把需要寻路的现实地图分成若干大小相等的网格,每个网格根据本身数据,有着自己的开销,其中,开销指的是别的网格到这个网格的所耗费的行动力,具体行动力包括距离、权重等值,开销无限大即为不可能到达的区域。进行寻路的时候,寻路系统根据这些网格的信息,从起始点到目标点,算出一个有序的、总开销较小的路点(网格)集合,这便是最终的路径。
一般情况下,每个网格的开销,可分为无限大、相同大小这两种情况,在一些有着地形制约的虚拟现实应用中,网格的开销还会因为不同的地形而不相同,比如山地更加难以到达,所以山地上的网格要比平地上的网格开销更大。
针对于网格开销相同的情况,即为地图中,只有不可通过和可以通过两种网格,可以通过的网格,开销均相同。这种应用在虚拟展馆、虚拟博物馆、虚拟旅游中应用相当普遍。另外,这类虚拟现实应用为了让人有身临其境的感觉,在效率和精确度的平衡上,更偏向效率,因此对实时性的要求更高。
目前主流的针对于相同开销的网格地图上的寻路算法,绝大部分都是A*算法以及A*算法的变种或者优化算法,比如:IDA*,Breadth-First-Search、Best-First-Search、Jump Point Search等算法,在这里把这类算法统称为A*类算法。
这类方法,计算量是对当前节点的总移动开销的计算,以及许多并不是在前进方向上的“不必要节点”的判断上,其寻路思维可以理解为自然界中“水满自溢”:从起始点向目标点倒水(寻路),水总是流向低的地方,而目标点是最低的地方,所以如果有路可以到达,水肯定会流到目标点,如果遇到障碍,水会堆积在障碍处,直到淹没障碍,溢出来,然后水接着向更低的地方流淌。
这种方法有个不足:如果当前区域中总开销值小的网格点很多,哪怕目标点就在眼前,也会先判断那些总移动开销值小的点,导致这种A*类算法稳定,但不高效,难以满足虚拟现实应用服务在互联网上对实施性的要求。
发明内容
针对现有技术中存在的问题,本发明设计一种基于相同开销网格的高效寻路的方法与系统,其采用的技术方案为:
一种基于相同开销网格的高效寻路的方法,具体步骤为:
第一步:初始化步骤,把需要寻路的现实地图分成若干大小相等的网格,以坐标的方式确定起始点位置(x0,y0)和目标点位置(xn,yn);
第二步:寻路步骤,寻路步骤分为两种模式:
自由寻路模式:对于自由寻路模式,表示在寻路过程中没有遇到障碍物的情况下所进行的寻路方式;爬绕障碍模式:表示在寻路过程中遇到障碍物的情况下所进行的寻路方式;
对于障碍物较多,或者障碍物形状复杂的情况,自由寻路模式与爬绕障碍模式将反复切换。
在行进路线上遇到新的障碍物,将增加一条行进线路,这样,在到达目标点前,将有多条行进线路处于寻路状态中;当其中某条线路首先到达目标点后,其它行进线路全部停止,以首先到达的线路作为待选线路。
某条线路在行进过程中遇到已经有线路经过的网格时,这条线路自动终止。
第三步:路径优化步骤。
(1)以待选线路为对象,从目标点开始进行线路的回溯;找到与目标相邻的拐点,以整个待选线路的目标点作为回溯的起始点,以相邻拐点作为目标点开始分阶段进行寻路操作;如果两者之间无障碍物,以自由寻路模式进行,如果有障碍物,以自由寻路模式与爬绕障碍模式反复切换的方式进行;
(2)到达相邻拐点后,确定目标点到相邻拐点的回溯线路,计算这一段回溯线路的长度d1,同时计算待选线路中,相邻拐点到目标点的路径长度d2;其中,一边相邻的两个网格,设置其距离为1个单位,对角相邻的两个网格,设置其距离为个单位;
(3)比较目标点到相邻拐点的路径长度d1与相邻拐点到目标点的路径长度d2,选择两者之间距离短的作为这一段的优化后线路;
(4)再选择这个拐点作为回溯线路的起始点,选择在待选线路上回溯的下一个相邻拐点作为目标点,开始进行寻路操作;如果两者之间无障碍物,以自由寻路模式进行,如果有障碍物,以自由寻路模式与爬绕障碍模式反复切换的方式进行;然后计算这一段回溯线路的长度,并计算待选线路上这两个拐点的线路长度,比较后,选择两者之间距离短的作为这一段的优化后线路;
(5)反复进行,直到回溯的最后目标点是待选线路的起始点为止;
(6)选择每段优化后的线路,连接起来,作为最后选择的线路。
本发明同时公开了一种基于相同开销网格的高效寻路的系统,包括:
初始化模块、寻路子系统、路径合并优化模块三大部分,初始化模块、寻路子系统、路径合并优化模块顺次相连;
初始化模块用于把需要寻路的现实地图分成若干大小相等的网格,以坐标的方式确定起始点位置(x0,y0)和目标点位置(xn,yn);
寻路子系统用于寻找从起始点到目标点的线路,由目标点判断器、模式选择器、自由寻路模块、爬绕障碍模块四部分组成;
目标点判断器用于判断是否已经寻找到目标点;
模式选择器用于根据行进线路上是否有障碍物,判断启用哪种寻路模式;
自由寻路模块用于网格上没有障碍物时的寻路工作;
爬绕障碍模式用于网格上有障碍物时的寻路工作;
路径合并优化模块用于回溯线路长度的计算,并通过与待选线路中各段拐点间线路长度的比较,选出最短线路作为最后的行进线路。
本发明的有益效果如下:
用本发明加快寻路速度,降低服务器或客户端的开销,本发明的寻路效率是大于A*。
本发明方法在查询步数上是优于A*的,对于查询中所用到的比较方法,本发明方法采用布尔值判断,只需要判断可否通行即可,而A*中除了判断可否通行,还需要对于每个节点的开销进行计算,因此在计算开销上本方法也比A*更加节省资源。
在优化线路方面,本发明方法中优化部分的单位开销虽然与A*相同,但是由于A*需要计算周围8个开销后,比较选择开销最小的网格,而本发明方法只需要朝向最终目标行进,因此效率在大多数情况下相对较高,更能满足实时性的要求。
附图说明
图1,为本发明方法的行进方向示意图。
图2,为本发明方法的行进记录点状态图。
图3,为本发明方法的行进方向记录图。
图4,为本发明方法的线路1记录行进网格点和拐点线路图。
图5,为本发明方法的线路1和线路2记录行进网格点和拐点线路图。
图6,为本发明方法的线路1行进方向角度示意图。
图7,为本发明方法的线路2行进方向角度示意图。
图8,为本发明方法的优化路径示意图。
图9,为本发明系统的结构框图。
图10,为本发明系统的路径合并优化模块的结构框图。
图11,本发明方法的行进记录点状态图。
图12,本发明方法与现有技术应用效果对比图(例1)。
图13,本发明方法与现有技术应用效果对比图(例2)。
具体实施方式
以下结合附图和具体实施例对本发明作进一步详细说明。
本实施例的基于相同开销网格的高效寻路的方法,包括:
第一阶段:初始化阶段。
把需要寻路的现实地图分成若干大小相等的网格,以坐标的方式确定起始点位置(x0,y0)和目标点位置(xn,yn)。
第二阶段:寻路阶段。
寻路阶段分为2种模式:
1、自由寻路模式。
对于自由寻路模式,表示在寻路过程中没有遇到障碍物的情况下所进行的寻路方式。包括:
(1)判断起始点与目标点之间的方向差,根据方向差确定行进方向。
根据起始点和目标点的坐标,通过以下计算规则,确定第一行进点的坐标(x1,y1):
·xn>x0,且yn>y0。则行进的下一点坐标为:x1=x0+1,y1=y0+1;
·xn>x0,且yn=y0。则行进的下一点坐标为:x1=x0+1,y1=y0;
·xn>x0,且yn<y0。则行进的下一点坐标为:x1=x0+1,y1=y0-1;
·xn<x0,且yn>y0。则行进的下一点坐标为:x1=x0-1,y1=y0+1;
·xn<x0,且yn=y0。则行进的下一点坐标为:x1=x0-1,y1=y0;
·xn<x0,且yn<y0。则行进的下一点坐标为:x1=x0-1,y1=y0-1;
·xn=x0,且yn>y0。则行进的下一点坐标为:x1=x0,y1=y0+1;
·xn=x0,且yn>y0。则行进的下一点坐标为:x1=x0,y1=y0;
·xn=x0,且yn>y0。则行进的下一点坐标为:x1=x0,y1=y0-1;
(2)确定第一行进点的坐标(x1,y1)后,结合目标点的坐标,利用上述同样的计算规则,得出第二行进点坐标(x2,y2),以此类推,中间行进点(xk,yk)的坐标为:
·xn>xk-1,且yn>yk-1。则行进的下一点坐标为:xk=xk-1+1,yk=yk-1+1;
·xn>xk-1,且yn=yk-1。则行进的下一点坐标为:xk=xk-1+1,yk=yk-1;
·xn>xk-1,且yn<yk-1。则行进的下一点坐标为:xk=xk-1+1,yk=yk-1-1;
·xn<xk-1,且yn>yk-1。则行进的下一点坐标为:xk=xk-1-1,yk=yk-1+1;
·xn<xk-1,且yn=yk-1。则行进的下一点坐标为:xk=xk-1-1,yk=yk-1;
·xn<xk-1,且yn<yk-1。则行进的下一点坐标为:xk=xk-1-1,yk=yk-1-1;
·xn=xk-1,且yn>yk-1。则行进的下一点坐标为:xk=xk-1,yk=yk-1+1;
·xn=xk-1,且yn=yk-1。则行进的下一点坐标为:xk=xk-1,yk=yk-1;
·xn=xk-1,且yn<yk-1。则行进的下一点坐标为:xk=xk-1,yk=yk-1-1;
(3)在没有障碍物的情况下,通过上述方式能够一直到达目标点(xn,yn)。如果其中存在障碍物,则切换到爬绕障碍模式。
2、爬绕障碍模式。
表示在寻路过程中遇到障碍物的情况下所进行的寻路方式。
一旦在行进过程中,遇到了障碍物,必须记录2个参数:其中一个是遇到障碍物时的行进方向;另一个是在爬绕障碍过程中的行进方向。这两个行进方向都以角度来表示。
为了描述方便,根据网格的分布,只能向8个方向行进。如图1所示,在中间网格可以向周围8个方向行进。
(1)一旦在行进方向遇到障碍物,先记录下α0值,其中α0为0°、45°、90°、135°、180°、225°、270°、315°这8角度值之一。
(2)遇到1个障碍物,一般从2个方向绕过去,因此以方向α0为基准,顺时针旋转45°,判断这个方向行进是否存在障碍物,如果存在,则在原来的旋转方向上再旋转45°,直到行进方向可以通行为止,作为行进路线1;同时以方向α0为基准,顺时针旋转-45°,判断这个方向行进是否存在障碍物,如果存在,则在原来的旋转方向上再旋转45°,直到行进方向可以通行为止,作为行进路线2;
分别记录每次新的行进路线的旋转角度,其中i为从第一次遇到障碍物开始,改变行进方向的次数。
因此,最新的行进方向为:
如图2、图3所示:
最初行进方向α0=270°,同时顺时针旋转90°和-90°,新的行进方向变为:
路线1的新行进方向
路线2的新行进方向为
(3)对于路线1,以新的行进方向作为α,以此为基准,先顺时针旋转90°,判断这个方向行进是否存在障碍物,如果存在,则在此方向上顺时针旋转-45°,直到行进方向可以通行为止;此时如果总的顺时针旋转角度小于等于0°,则以新的行进方向作为α,在此基础上,按照上述方式继续行进,同时记录经过的网格点;
如果总的顺时针旋转角度大于0°,则把新到达的网格作为拐点,并对其做拐点标志A1,同时记录经过的网格点。
如图4,本实施例中线路1记录网格点和网格图。
(4)对于路线2,以新的行进方向作为α,以此为基准,顺时针旋转-90°,判断这个方向行进是否存在障碍物,如果存在,则在此方向上顺时针旋转45°,直到行进方向可以通行为止;此时如果总的顺时针旋转角度大于等于0°,则以新的行进方向作为α,在此基础上,按照上述方式继续进行,同时记录经过的网格点;
如果总的顺时针旋转角度小于0°,则把新到达的网格作为拐点,并对其做拐点标志B1,同时记录经过的网格点。
如图5,本实施例中线路2记录网格点和网格图。
(5)在路线1中,对于某个新的拐点,一旦其最新的行进方向α与初始的行进方向α0满足条件:
45°≤α0-α
则从该拐点开始,切换到自由寻路模式。计算该拐点与目标点之间的方向差,根据方向差确定行进方向的确定。
如图6,本实施例中线路1新拐点记录网格点和网格图。
(6)在路线2中,对于某个新的拐点,一旦其最新行进方向α与初始的行进方向α0满足条件:
45°≤α-α0
则从该拐点开始,切换到自由寻路模式。计算该拐点与目标点之间的方向差,根据方向差确定行进方向的确定。
如图7,本实施例中线路2新拐点记录网格点和网格图。
对于障碍物较多,或者障碍物形状复杂的情况,自由寻路模式与爬绕障碍模式将反复切换。
在行进路线上遇到新的障碍物,将增加一条行进线路,这样,在到达目标点前,将有多条行进线路处于寻路状态中。当其中某条线路首先到达目标点后,其它行进线路全部停止,以首先到达的线路作为待选线路。
某条线路在行进过程中遇到已经有线路经过的网格时,这条线路自动终止。
第三阶段:路径优化阶段。
(1)以待选线路为对象,从目标点开始进行线路的回溯。找到与目标相邻的拐点,以整个待选线路的目标点作为回溯的起始点,以拐点作为目标点开始分阶段进行寻路操作。如果两者之间无障碍物,以自由寻路模式进行,如果有障碍物,以自由寻路模式与爬绕障碍模式反复切换的方式进行。
如图8所示,本实施例的优化路径起始点示意图。
(2)到达拐点后,确定目标点到相邻拐点的回溯线路,计算这一段回溯线路的长度d1,同时计算待选线路中,拐点到目标点的路径长度d2。其中,一边相邻的两个网格,设置其距离为1个单位,对角相邻的两个网格,设置其距离为个单位。
(3)比较目标点到相邻拐点的路径长度d1与拐点到目标点的路径长度d2,选择两者之间距离短的作为这一段的优化后线路。
(4)再选择这个拐点作为回溯线路的起始点,选择在待选线路上回溯的相邻拐点作为目标点,开始进行寻路操作。如果两者之间无障碍物,以自由寻路模式进行,如果有障碍物,以自由寻路模式与爬绕障碍模式反复切换的方式进行。然后计算这一段回溯线路的长度,并计算待选线路上这两个拐点的线路长度,比较后,选择两者之间距离短的作为这一段的优化后线路。
(5)通过上述方法,反复进行,直到回溯的最后目标点是待选线路的起始点为止。
(6)选择每段优化后的线路,连接起来,作为最后选择的线路。
一种基于相同开销网格的高效寻路的系统,如图9所示,包括:
初始化模块、寻路子系统、路径合并优化模块三大部分。初始化模块、寻路子系统、路径合并优化模块顺次相连。
初始化模块用于把需要寻路的现实地图分成若干大小相等的网格,以坐标的方式确定起始点位置(x0,y0)和目标点位置(xn,yn)。
寻路子系统用于寻找从起始点到目标点的线路,由目标点判断器、模式选择器、自由寻路模块、爬绕障碍模块四部分组成。
目标点判断器用于判断是否已经寻找到目标点。
模式选择器用于根据行进线路上是否有障碍物,判断启用哪种寻路模式。
自由寻路模块用于网格上没有障碍物时的寻路工作。
爬绕障碍模式用于网格上有障碍物时的寻路工作。
路径合并优化模块用于回溯线路长度的计算,并通过与待选线路中各段拐点间线路长度的比较,选出最短线路作为最后的行进线路。
路径合并优化模块的结构,如图10所示,包括:
寻路结果接收单元、模式选择器、自由寻路模块、爬绕障碍模块、拐点判断器、线路长度计算器、线路长度比较器、起始点判断器、线路合并器组成。
寻路结果接收单元用于接收寻路子系统得到的从起始点到目标点的行进路线,以及其中所有的拐点。
模式选择器用于根据行进线路上是否有障碍物,从而判断是否启用哪种寻路模式。
自由寻路模块用于网格上没有障碍物时的寻路工作。
爬绕障碍模式用于网格上有障碍物时的寻路工作。
拐点判断器用于判断目前是否行进到的网格是拐点。
线路长度计算器用于计算回溯线路中相邻拐点间的长度,包括目标点与相邻拐点之间的长度,起始点与相邻拐点之间的长度。同时用于计算在待选路线上相邻拐点间的长度,包括目标点与相邻拐点之间的长度,起始点与相邻拐点之间的长度。
线路长度比较器用于比较在回溯线路和待选路线中,相应的相邻拐点间的长度,包括目标点与相邻拐点之间的长度,起始点与相邻拐点之间的长度。选择线路短的线路进行保存。
起始点判断器用于判断回溯线路的行进是否到了起始点。
线路合并器用于对线路长度比较器保存的所有短的线路进行合并,形成最后的最优线路。
应用效果对比
下面通过本发明方法与标准的A*寻路对比。图11中各种网格点的表示如图。
例1:图12,本发明方法与现有技术应用效果对比图(例1)。
这个例子中,A*算法经过了81步找到目标,而本发明方法经过了57步,包括起点到第一个和第二个拐点的优化,其中,A*的81步包括每个节点的计算F值工作,其中:
F:当前节点的总移动开销,等于G+H。
G:起点移动到网格上当前节点的移动开销。
H:当前的节点移动到终点的预计开销。
而本方法只有13步优化过程需要计算开销值。
例2:图13,本发明方法与现有技术应用效果对比图(例2)。
这个例子中,A*算法经过了88步,得出无法到达目的地的结论,而本方法用了11步就得出无法到达目的地的结论。其中,A*算法88步都计算了节点的F值。而本方法由于没有能到达目的地,所以没有优化过程,没必要计算开销值。
以上所公开的仅为本发明的一种具体实施例而已,当然不能以此来限定本发明的保护范围,依照本发明权利要求的技术实质所做的改变或等同变化,仍落入本发明权利要求书所涵盖的范围。
Claims (9)
1.一种基于相同开销网格的高效寻路的方法,其特征在于,具体步骤为:
第一步:初始化步骤,
把需要寻路的现实地图分成若干大小相等的网格,以坐标的方式确定起始点位置(x0,y0)和目标点位置(xn,yn);
第二步:寻路步骤,
寻路步骤分为两种模式:
自由寻路模式:对于自由寻路模式,表示在寻路过程中没有遇到障碍物的情况下所进行的寻路方式;爬绕障碍模式:表示在寻路过程中遇到障碍物的情况下所进行的寻路方式;
第三步:路径优化步骤。
2.根据权利要求1所述的基于相同开销网格的高效寻路方法,其特征在于,自由寻路模式包括:
(1)判断起始点与目标点之间的方向差,根据方向差确定行进方向;
根据起始点和目标点的坐标,通过以下计算规则,确定第一行进点的坐标(x1,y1):
·xn>x0,且yn>y0;则行进的下一点坐标为:x1=x0+1,y1=y0+1;
·xn>x0,且yn=y0;则行进的下一点坐标为:x1=x0+1,y1=y0;
·xn>x0,且yn<y0;则行进的下一点坐标为:x1=x0+1,y1=y0-1;
·xn<x0,且yn>y0;则行进的下一点坐标为:x1=x0-1,y1=y0+1;
·xn<x0,且yn=y0;则行进的下一点坐标为:x1=x0-1,y1=y0;
·xn<x0,且yn<y0;则行进的下一点坐标为:x1=x0-1,y1=y0-1;
·xn=x0,且yn>y0;则行进的下一点坐标为:x1=x0,y1=y0+1;
·xn=x0,且yn>y0;则行进的下一点坐标为:x1=x0,y1=y0;
·xn=x0,且yn>y0;则行进的下一点坐标为:x1=x0,y1=y0-1;
(2)确定第一行进点的坐标(x1,y1)后,结合目标点的坐标,利用上述同样的计算规则,得出第二行进点坐标(x2,y2),以此类推,中间行进点(xk,yk)的坐标为:
·xn>xk-1,且yn>yk-1;则行进的下一点坐标为:xk=xk-1+1,yk=yk-1+1;
·xn>xk-1,且yn=yk-1;则行进的下一点坐标为:xk=xk-1+1,yk=yk-1;
·xn>xk-1,且yn<yk-1;则行进的下一点坐标为:xk=xk-1+1,yk=yk-1-1;
·xn<xk-1,且yn>yk-1;则行进的下一点坐标为:xk=xk-1-1,yk=yk-1+1;
·xn<xk-1,且yn=yk-1;则行进的下一点坐标为:xk=xk-1-1,yk=yk-1;
·xn<xk-1,且yn<yk-1;则行进的下一点坐标为:xk=xk-1-1,yk=yk-1-1;
·xn=xk-1,且yn>yk-1;则行进的下一点坐标为:xk=xk-1,yk=yk-1+1;
·xn=xk-1,且yn=yk-1;则行进的下一点坐标为:xk=xk-1,yk=yk-1;
·xn=xk-1,且yn<yk-1;则行进的下一点坐标为:xk=xk-1,yk=yk-1-1;
(3)在没有障碍物的情况下,通过上述方式能够一直到达目标点(xn,yn);如果其中存在障碍物,则切换到爬绕障碍模式。
3.根据权利要求2所述的基于相同开销网格的高效寻路方法,其特征在于,爬绕障碍模式:
一旦在行进过程中,遇到了障碍物,必须记录两个参数:其中一个是遇到障碍物时的行进方向;另一个是在爬绕障碍过程中的行进方向;这两个行进方向都以角度来表示;根据网格的分布,在中间网格向周围8个方向行进;
(1)一旦在行进方向遇到障碍物,先记录下α0值,其中α0为0°、45°、90°、135°、180°、225°、270°、315°这8角度值之一;
(2)遇到1个障碍物,一般从2个方向绕过去,因此以方向α0为基准,顺时针旋转45°,判断这个方向行进是否存在障碍物,如果存在,则在原来的旋转方向上再旋转45°,直到行进方向可以通行为止,作为行进路线1;同时以方向α0为基准,顺时针旋转-45°,判断这个方向行进是否存在障碍物,如果存在,则在原来的旋转方向上再旋转45°,直到行进方向可以通行为止,作为行进路线2;
分别记录每次新的行进路线的旋转角度其中i为从第一次遇到障碍物开始,改变行进方向的次数;
因此,最新的行进方向为:
(3)对于路线1,以新的行进方向作为α,以此为基准,先顺时针旋转90°,判断这个方向行进是否存在障碍物,如果存在,则在此方向上顺时针旋转-45°,直到行进方向可以通行为止;此时如果总的顺时针旋转角度小于等于0°,则以新的行进方向作为α,在此基础上,按照上述方式继续行进,同时记录经过的网格点;
如果总的顺时针旋转角度大于0°,则把新到达的网格作为拐点,并对其做拐点标志A1,同时记录经过的网格点;
(4)对于路线2,以新的行进方向作为α,以此为基准,顺时针旋转-90°,判断这个方向行进是否存在障碍物,如果存在,则在此方向上顺时针旋转45°,直到行进方向可以通行为止;此时如果总的顺时针旋转角度大于等于0°,则以新的行进方向作为α,在此基础上,按照上述方式继续进行,同时记录经过的网格点;
如果总的顺时针旋转角度小于0°,则把新到达的网格作为拐点,并对其做拐点标志B1,同时记录经过的网格点;
(5)在路线1中,对于某个新的拐点,一旦其最新的行进方向α与初始的行进方向α0满足条件:
45°≤α0-α
则从该拐点开始,切换到自由寻路模式;计算该拐点与目标点之间的方向差,根据方向差确定行进方向的确定;
(6)在路线2中,对于某个新的拐点,一旦其最新行进方向α与初始的行进方向α0满足条件:
45°≤α-α0
则从该拐点开始,切换到自由寻路模式;计算该拐点与目标点之间的方向差,根据方向差确定行进方向的确定。
4.根据权利要求3所述的基于相同开销网格的高效寻路方法,其特征在于,
对于障碍物较多,或者障碍物形状复杂的情况,自由寻路模式与爬绕障碍模式将反复切换。
5.根据权利要求3所述的基于相同开销网格的高效寻路方法,其特征在于,
在行进路线上遇到新的障碍物,将增加一条行进线路,这样,在到达目标点前,将有多条行进线路处于寻路状态中;当其中某条线路首先到达目标点后,其它行进线路全部停止,以首先到达的线路作为待选线路。
6.根据权利要求3所述的基于相同开销网格的高效寻路方法,其特征在于,
某条线路在行进过程中遇到已经有线路经过的网格时,这条线路自动终止。
7.根据权利要求1所述的基于相同开销网格的高效寻路方法,其特征在于,路径优化步骤包括:
(1)以待选线路为对象,从目标点开始进行线路的回溯;找到与目标相邻的拐点,以整个待选线路的目标点作为回溯的起始点,以相邻拐点作为目标点开始分阶段进行寻路操作;如果两者之间无障碍物,以自由寻路模式进行,如果有障碍物,以自由寻路模式与爬绕障碍模式反复切换的方式进行;
(2)到达相邻拐点后,确定目标点到相邻拐点的回溯线路,计算这一段回溯线路的长度d1,同时计算待选线路中,相邻拐点到目标点的路径长度d2;其中,一边相邻的两个网格,设置其距离为1个单位,对角相邻的两个网格,设置其距离为个单位;
(3)比较目标点到相邻拐点的路径长度d1与相邻拐点到目标点的路径长度d2,选择两者之间距离短的作为这一段的优化后线路;
(4)再选择这个拐点作为回溯线路的起始点,选择在待选线路上回溯的下一个相邻拐点作为目标点,开始进行寻路操作;如果两者之间无障碍物,以自由寻路模式进行,如果有障碍物,以自由寻路模式与爬绕障碍模式反复切换的方式进行;然后计算这一段回溯线路的长度,并计算待选线路上这两个拐点的线路长度,比较后,选择两者之间距离短的作为这一段的优化后线路;
(5)反复进行,直到回溯的最后目标点是待选线路的起始点为止;
(6)选择每段优化后的线路,连接起来,作为最后选择的线路。
8.一种基于相同开销网格的高效寻路的系统,其特征在于,包括:
初始化模块、寻路子系统、路径合并优化模块,初始化模块、寻路子系统、路径合并优化模块顺次相连;
初始化模块用于把需要寻路的现实地图分成若干大小相等的网格,以坐标的方式确定起始点位置(x0,y0)和目标点位置(xn,yn);
寻路子系统用于寻找从起始点到目标点的线路,由目标点判断器、模式选择器、自由寻路模块、爬绕障碍模块四部分组成;
目标点判断器用于判断是否已经寻找到目标点;
模式选择器用于根据行进线路上是否有障碍物,判断启用哪种寻路模式;
自由寻路模块用于网格上没有障碍物时的寻路工作;
爬绕障碍模式用于网格上有障碍物时的寻路工作;
路径合并优化模块用于回溯线路长度的计算,并通过与待选线路中各段拐点间线路长度的比较,选出最短线路作为最后的行进线路。
9.根据权利要求8所述的基于相同开销网格的高效寻路系统,其特征在于,路径合并优化模块,包括:
寻路结果接收单元、模式选择器、自由寻路模块、爬绕障碍模块、拐点判断器、线路长度计算器、线路长度比较器、起始点判断器、线路合并器组成;
寻路结果接收单元用于接收寻路子系统得到的从起始点到目标点的行进路线,以及其中所有的拐点;
模式选择器用于根据行进线路上是否有障碍物,从而判断是否启用哪种寻路模式;
自由寻路模块用于网格上没有障碍物时的寻路工作;
爬绕障碍模式用于网格上有障碍物时的寻路工作;
拐点判断器用于判断目前是否行进到的网格是拐点;
线路长度计算器用于计算回溯线路中相邻拐点间的长度,包括目标点与相邻拐点之间的长度,起始点与相邻拐点之间的长度;同时用于计算在待选路线上相邻拐点间的长度,包括目标点与相邻拐点之间的长度,起始点与相邻拐点之间的长度;
线路长度比较器用于比较在回溯线路和待选路线中,相应的相邻拐点间的长度,包括目标点与相邻拐点之间的长度,起始点与相邻拐点之间的长度;选择线路短的线路进行保存;
起始点判断器用于判断回溯线路的行进是否到了起始点;
线路合并器用于对线路长度比较器保存的所有短的线路进行合并,形成最后的最优线路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410412693.5A CN104156459B (zh) | 2014-08-20 | 2014-08-20 | 一种基于相同开销网格的高效寻路的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410412693.5A CN104156459B (zh) | 2014-08-20 | 2014-08-20 | 一种基于相同开销网格的高效寻路的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104156459A true CN104156459A (zh) | 2014-11-19 |
CN104156459B CN104156459B (zh) | 2016-07-06 |
Family
ID=51881957
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410412693.5A Active CN104156459B (zh) | 2014-08-20 | 2014-08-20 | 一种基于相同开销网格的高效寻路的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104156459B (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104462805A (zh) * | 2014-12-02 | 2015-03-25 | 厦门飞游信息科技有限公司 | 一种基于a*算法的地图寻路方法、设备及计算终端 |
CN104548598A (zh) * | 2014-12-31 | 2015-04-29 | 北京像素软件科技股份有限公司 | 一种虚拟现实场景中寻路的方法 |
CN104759097A (zh) * | 2015-04-13 | 2015-07-08 | 四川天上友嘉网络科技有限公司 | 游戏中的自动寻路方法 |
CN104759098A (zh) * | 2015-04-13 | 2015-07-08 | 四川天上友嘉网络科技有限公司 | 游戏寻路方法 |
CN104784932A (zh) * | 2015-04-13 | 2015-07-22 | 四川天上友嘉网络科技有限公司 | 游戏角色的寻路方法 |
CN104784933A (zh) * | 2015-04-13 | 2015-07-22 | 四川天上友嘉网络科技有限公司 | 游戏角色的最短路径确定方法 |
CN104784934A (zh) * | 2015-04-13 | 2015-07-22 | 四川天上友嘉网络科技有限公司 | 游戏角色移动方法 |
CN104815437A (zh) * | 2015-04-13 | 2015-08-05 | 四川天上友嘉网络科技有限公司 | 应用于游戏的自动寻路方法 |
CN105678054A (zh) * | 2015-12-30 | 2016-06-15 | 深圳大学 | 一种基于a星策略的最优多会合点路径搜索方法及装置 |
CN107194501A (zh) * | 2017-05-04 | 2017-09-22 | 湖州三基色信息科技有限公司 | 基于网格生成路径的方法 |
WO2018090705A1 (zh) * | 2016-11-17 | 2018-05-24 | 腾讯科技(深圳)有限公司 | 角色模型的移动控制方法、装置及数据同步方法、系统 |
CN108939547A (zh) * | 2018-07-04 | 2018-12-07 | 苏州玩友时代科技股份有限公司 | 一种最佳路径获取方法、装置、设备及存储介质 |
CN109224446A (zh) * | 2018-07-17 | 2019-01-18 | 派视觉虚拟现实(深圳)软件技术有限公司 | 一种游戏中的动物运动方法、装置及设备 |
CN109255467A (zh) * | 2018-07-27 | 2019-01-22 | 四川大学 | 一种面向虚拟现实的a*寻路优化方法 |
CN113570682A (zh) * | 2021-08-02 | 2021-10-29 | 北京经纬恒润科技股份有限公司 | 一种直角路由方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102901500A (zh) * | 2012-09-17 | 2013-01-30 | 西安电子科技大学 | 基于概率a星与智能体混合的飞行器最优路径确定方法 |
WO2013051083A1 (ja) * | 2011-10-03 | 2013-04-11 | トヨタ自動車株式会社 | 車両の運転支援システム |
CN103528586A (zh) * | 2013-10-31 | 2014-01-22 | 中国航天时代电子公司 | 基于故障网格的航迹规划算法设计 |
CN103679301A (zh) * | 2013-12-31 | 2014-03-26 | 西安理工大学 | 基于复杂地形的最优路径寻找方法 |
-
2014
- 2014-08-20 CN CN201410412693.5A patent/CN104156459B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013051083A1 (ja) * | 2011-10-03 | 2013-04-11 | トヨタ自動車株式会社 | 車両の運転支援システム |
CN102901500A (zh) * | 2012-09-17 | 2013-01-30 | 西安电子科技大学 | 基于概率a星与智能体混合的飞行器最优路径确定方法 |
CN103528586A (zh) * | 2013-10-31 | 2014-01-22 | 中国航天时代电子公司 | 基于故障网格的航迹规划算法设计 |
CN103679301A (zh) * | 2013-12-31 | 2014-03-26 | 西安理工大学 | 基于复杂地形的最优路径寻找方法 |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104462805A (zh) * | 2014-12-02 | 2015-03-25 | 厦门飞游信息科技有限公司 | 一种基于a*算法的地图寻路方法、设备及计算终端 |
CN104462805B (zh) * | 2014-12-02 | 2017-05-31 | 厦门飞游信息科技有限公司 | 一种基于a*算法的地图寻路方法、设备及计算终端 |
CN104548598A (zh) * | 2014-12-31 | 2015-04-29 | 北京像素软件科技股份有限公司 | 一种虚拟现实场景中寻路的方法 |
CN104548598B (zh) * | 2014-12-31 | 2017-08-08 | 北京像素软件科技股份有限公司 | 一种虚拟现实场景中寻路的方法 |
CN104784933A (zh) * | 2015-04-13 | 2015-07-22 | 四川天上友嘉网络科技有限公司 | 游戏角色的最短路径确定方法 |
CN104784934A (zh) * | 2015-04-13 | 2015-07-22 | 四川天上友嘉网络科技有限公司 | 游戏角色移动方法 |
CN104815437A (zh) * | 2015-04-13 | 2015-08-05 | 四川天上友嘉网络科技有限公司 | 应用于游戏的自动寻路方法 |
CN104759098A (zh) * | 2015-04-13 | 2015-07-08 | 四川天上友嘉网络科技有限公司 | 游戏寻路方法 |
CN104759097A (zh) * | 2015-04-13 | 2015-07-08 | 四川天上友嘉网络科技有限公司 | 游戏中的自动寻路方法 |
CN104784932A (zh) * | 2015-04-13 | 2015-07-22 | 四川天上友嘉网络科技有限公司 | 游戏角色的寻路方法 |
CN105678054A (zh) * | 2015-12-30 | 2016-06-15 | 深圳大学 | 一种基于a星策略的最优多会合点路径搜索方法及装置 |
WO2018090705A1 (zh) * | 2016-11-17 | 2018-05-24 | 腾讯科技(深圳)有限公司 | 角色模型的移动控制方法、装置及数据同步方法、系统 |
CN107194501A (zh) * | 2017-05-04 | 2017-09-22 | 湖州三基色信息科技有限公司 | 基于网格生成路径的方法 |
CN108939547A (zh) * | 2018-07-04 | 2018-12-07 | 苏州玩友时代科技股份有限公司 | 一种最佳路径获取方法、装置、设备及存储介质 |
CN108939547B (zh) * | 2018-07-04 | 2019-06-21 | 苏州玩友时代科技股份有限公司 | 一种最佳路径获取方法、装置、设备及存储介质 |
CN109224446A (zh) * | 2018-07-17 | 2019-01-18 | 派视觉虚拟现实(深圳)软件技术有限公司 | 一种游戏中的动物运动方法、装置及设备 |
CN109224446B (zh) * | 2018-07-17 | 2022-05-06 | 派视觉虚拟现实(深圳)软件技术有限公司 | 一种游戏中的动物运动方法、装置及设备 |
CN109255467A (zh) * | 2018-07-27 | 2019-01-22 | 四川大学 | 一种面向虚拟现实的a*寻路优化方法 |
CN113570682A (zh) * | 2021-08-02 | 2021-10-29 | 北京经纬恒润科技股份有限公司 | 一种直角路由方法和装置 |
CN113570682B (zh) * | 2021-08-02 | 2024-05-07 | 北京经纬恒润科技股份有限公司 | 一种直角路由方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104156459B (zh) | 2016-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104156459A (zh) | 一种基于相同开销网格的高效寻路的方法及系统 | |
JP6828044B2 (ja) | ルート逸脱認識方法、端末、および記憶媒体 | |
CN107643085B (zh) | 一种路径推荐方法与装置 | |
CN100517346C (zh) | 一种最优路径的寻径方法 | |
CN107462243A (zh) | 一种基于高精度地图的云控自动驾驶任务生成方法 | |
CN104165625B (zh) | 路径规划方法和设备 | |
CN109213153B (zh) | 一种车辆自动驾驶方法及电子设备 | |
CN107167152B (zh) | 路径规划方法和装置 | |
CN104391907B (zh) | 一种可变解析度的快速路径搜寻方法 | |
JP2001507143A (ja) | ネットワーク内の領域の出口および入口を決定する方法 | |
WO2009092327A1 (zh) | 一种地图寻路方法及系统 | |
CN103994768A (zh) | 动态时变环境下寻求全局时间最优路径的方法 | |
CN107063277B (zh) | 一种多成员出行的导航方法及服务器 | |
CN103968854A (zh) | 一种路径聚类规划方法 | |
CN107289925A (zh) | 一种绘制用户轨迹的方法和装置 | |
CN113758494B (zh) | 导航路径规划方法、装置、设备和存储介质 | |
CN103971530A (zh) | 一种实时路径规划方法 | |
CN110141862A (zh) | 游戏中移动控制的方法及装置、电子设备、存储介质 | |
CN104613976A (zh) | 确定路径的方法及装置 | |
CN105424045A (zh) | 一种室内跨层寻路的路网构建和寻路方法 | |
CN107952243A (zh) | 路径确定方法及装置 | |
CN110721472A (zh) | 一种寻路方法、装置、设备以及记录介质 | |
CN103268701A (zh) | 城市路网负载平衡方法 | |
CN104899329A (zh) | 一种采用最小外矩形框进行宗地四至查找的方法 | |
Zhang et al. | Distributed trip selection game for public bike system with crowdsourcing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |