一种不等距分割可通行区域的路径规划方法
【专利摘要】本发明属于机器人及低空飞行的飞行器路径或航迹规划的【技术领域】,具体涉及一种不等距分割可通行区域的路径规划方法,解决了现有规划算法时间有较大的时间复杂度和空间复杂度。其步骤如下:计算每个障碍曲线的凸极值点;过每个凸极值点作水平线用以分割可通行区域;将每个分割成的小区域抽象成一个图的顶点;把所有顶点组成一个无向图;找出起点和终点所在小区域对应的顶点序号;对于无向图通过广度优先或深度优先遍历,找出所有的路径;再根据实际地图上的情形,找出运动物体实际所要行走的路径。本发明的有益效果:克服了A*等算法的在内存空间和运算时间上问题,同时也客服了蚁群算法的收敛问题;时间复杂度和空间复杂度较其他算法有较大提高。
【专利说明】—种不等距分割可通行区域的路径规划方法
【技术领域】
[0001]本发明属于机器人及低空飞行的飞行器路径或航迹规划的【技术领域】,具体涉及一种不等距分割可通行区域的路径规划方法,用于在有障碍的地图上进行路径规划。
【背景技术】
[0002]由于路径或航迹规划问题一般是NP-hard问题,也就是说并没有计算最优解的多项式时间算法,同时在飞行器实际飞行过程中,随时间的变化以及威胁和障碍的变化,计算航迹的算法更加复杂。如A*算法、蚁群算法、模拟退火、禁忌搜索算法,遗传算法,粒子群优化算法,遗传算法等,它们都有各自的优缺点。A*算法是一种启发式算法,在搜索过程中无需遍历地图,使得计算复杂度相对较小,实现了快速、高效。但是,这也导致搜索的过程中排除了大量节点,而由于经验及实际问题的复杂性,引入启发信息的代价函数无法做到完全正确,这些被排除的节点可能就是最优路径的节点之一,从而导致不一定能找到最优路径。蚁群算法发现较好解的能力很强,具有分布式计算、鲁棒性强、易于与其它方法结合等优点;但也存在收敛速度慢,容易陷入局部最优的缺点。遗传算法具有自然系统的自适应特征,算法在效率和效益之间的权衡使得它能适用不同环境并取得较好的效果,但也并不能保证达到全局优化,仍然可能陷入局部极值的陷阱。粒子群优化算法运行的初始阶段,收敛速度比较快,运动轨迹呈正弦波摆动,但运行一段时间后,速度开始减慢甚至停滞(称为早熟收敛或停滞),发生该现象时粒子群高度聚集,严重缺乏多样性,粒子群会长时间或永远跳不出聚集点。
【发明内容】
[0003]本发明为了解决现有规划算法时间有较大的时间复杂度和空间复杂度,提出一种基于可通行区域不等距分割的路径(或航迹)规划方法。
[0004]本发明基于遍布障碍物的地图进行讨论,其中的障碍物包括阻碍飞行的高地、雷达或敌方火力威胁等。将地图中的高地、雷达、敌方火力威胁等视为障碍,每一个障碍可看成一个闭合曲线,运动物体不能进入闭合曲线内,而地图中剩余的部分为可通行区域。S点为运动物体的起点,E点为运动物体的目标点,假设运动物体要从S点运动到E点,从地图中找出一条或若干条路径(或航迹),见图1。
[0005]本发明采用如下技术方案完成,一种不等距分割可通行区域的路径规划方法,步骤如下:
(1)计算每个障碍曲线的凸极值点;
(2)过每个凸极值点作水平线用以分割可通行区域;
(3)将每个分割成的小区域抽象成一个图的顶点;
(4)把所有顶点组成一个无向图;
(5)找出起点和终点所在小区域对应的顶点序号;
(6)对于无向图通过广度优先或深度优先遍历,找出所有的路径; (7)再根据实际地图上的情形,找出运动物体实际所要行走的路径。
[0006]本发明具体步骤如下:
O障碍物建模
利用拟合曲线模拟障碍物的外沿,采用Bezier曲线,计算出构成曲线的所有点的横、纵坐标;
2)计算障碍曲线的凸极值点
通过循环计算每段曲线上的极大值或极小值,进而求得曲线上的极值点坐标,仅保留障碍曲线的凸极值点;
3)水平分割可通行区域
通过凸极值点做水平切线对可通行区域进行一维分割,方法如下:求出所有曲线上的最大值与最小值,从而求出曲线的外接矩形,判断极值点纵坐标是否介于一个区域的最小值与最大值之间,如果是,则得到过该极值点的水平切线与一个区域相交;如果相交,求出交点坐标,并保存在一个数组中,求曲线的交点与极值点的距离;若距离的最小值>0,说明过极值点所做的水平切线只与一个区域相交,且在所交区域的左侧;同理,若距离的最大值〈0,说明过极值点所做的水平切线也只与一个区域相交,且在所交区域的右侧;若距离有正有负,则说明过极值点所做水平切线不止与一个区域相交;最后画出经过每个极值点的水平切线;
4)可通行区域的存储
在区域存储过程中,使用队列将所有的区域存储;区域存储后,根据构造的邻接表中顶点间的邻接关系,抽象出一个无向图;具体方法如下:
先存储第一个区域,若是直线边就存储两个端点,若是曲线边就将曲线上的所有的点都存储下来,对区域编号,并入队;构建邻接表,存储区域的标志位和公共边,标志位是用来标记该区域是否已访问,公共边则是为了判断区域之间的邻接关系;队头元素出队,将其相邻的区域存储,编号并入队;在入队过程中先判断,该区域是否已经访问过以及是否在队列中。若既没有被访问过且不在队列中,则入队;否则继续判断其相邻区域;每个区域抽象为图的一个顶点,若划分出的小区域有公共边,则与之对应的顶点间就有连线,构造无向图;
确定无向图中的路径,设置访问标记数组,用来标记该顶点是否已被访问;先将第一个顶点入栈;栈不为空,将栈顶元素出栈,并将其相邻的顶点入栈,设置访问标志位为已访问;若与它邻接的下一个顶点没有被访问过,将出栈元素保存到数组中;如此构成循环,找出所有的路径,并将这些路径分别存放在不同的数组中;
5)反算无向图边计算最短路径
确定路径后,根据实际情况为每条路径动态设定权值,并算出权值和,权值和最小的即为最短路径;
设定权值遵循的原理是:求两个直角三角形的斜边和,若它们的水平直角边不共线,求出起点与终点在水平方向上的中间点,连接起点与中间点,中间点与终点,此时求得的两条斜边和最短;
为每条路径设定权值的过程中,将每条路径的路径画出来,并算出每条路径的权值和;权值和为最小的即为最短路径。
[0007]本发明相对于现有技术具有如下有益效果:克服了 A*等算法的在内存空间和运算时间上问题,同时也客服了蚁群算法的收敛问题。因为本算法只是在二维空间的一维上作了区域分割,达到了降维的目的和效果,实验证明本发明算法的时间复杂度和空间复杂度较其他算法有较大提高。
【专利附图】
【附图说明】
[0008]图1遍布障碍的地图(其中的S点为起点,E为终点),
图2过每个障碍的凸极值点水平分割可通行区域并编号,
图3抽象每个可通行小区域而得到的无向图,
图4确定无向图中的路径,
图5无向图中边的权值设定(方法之一)示意图,
图6 A*算法得到的路径,
图7蚁群算法的规划路径,
图8本发明计算的结果。
【具体实施方式】
[0009]结合附图对本发明的【具体实施方式】作进一步说明。
[0010]I)障碍物建模
由于障碍物的外沿是连续的光滑曲线,可利用拟合曲线来模拟,采用Bezier曲线。绘制Bezier曲线时要将控制点的位置向量分解为二维平面上的方向的分量,则表达式可以表述为:
【权利要求】
1.一种不等距分割可通行区域的路径规划方法,其特征在于步骤如下: 1)计算每个障碍曲线的凸极值点; 2)过每个凸极值点作水平线用以分割可通行区域; 3)将每个分割成的小区域抽象成一个图的顶点; 4)把所有顶点组成一个无向图; 5)找出起点和终点所在小区域对应的顶点序号; 6)对于无向图通过广度优先或深度优先遍历,找出所有的路径; 7)再根据实际地图上的情形,找出运动物体实际所要行走的路径。
2.根据权利要求1所述的不等距分割可通行区域的路径规划方法,其特征在于具体步骤如下: O障碍物建模 利用拟合曲线模拟障碍物的外沿,采用Bezier曲线,计算出构成曲线的所有点的横、纵坐标; 2)计算障碍曲线的凸极值点 通过循环计算每段曲线上的极大值或极小值,进而求得曲线上的极值点坐标,仅保留障碍曲线的凸极值点; 3)水平分割可通行区域 通过凸极值点做水平切线对可通行区域进行一维分割,方法如下:求出所有曲线上的最大值与最小值,从而求出曲线的外接矩形,判断极值点纵坐标是否介于一个区域的最小值与最大值之间,如果是,则得到过该极值点的水平切线与一个区域相交;如果相交,求出交点坐标,并保存在一个数组中,求曲线的交点与极值点的距离;若距离的最小值>0,说明过极值点所做的水平切线只与一个区域相交,且在所交区域的左侧;同理,若距离的最大值〈0,说明过极值点所做的水平切线也只与一个区域相交,且在所交区域的右侧;若距离有正有负,则说明过极值点所做水平切线不止与一个区域相交;最后画出经过每个极值点的水平切线; 4)可通行区域的存储 在区域存储过程中,使用队列将所有的区域存储;区域存储后,根据构造的邻接表中顶点间的邻接关系,抽象出一个无向图;具体方法如下: 先存储第一个区域,若是直线边就存储两个端点,若是曲线边就将曲线上的所有的点都存储下来,对区域编号,并入队;构建邻接表,存储区域的标志位和公共边,标志位是用来标记该区域是否已访问,公共边则是为了判断区域之间的邻接关系;队头元素出队,将其相邻的区域存储,编号并入队;在入队过程中先判断,该区域是否已经访问过以及是否在队列中; 若既没有被访问过且不在队列中,则入队;否则继续判断其相邻区域;每个区域抽象为图的一个顶点,若划分出的小区域有公共边,则与之对应的顶点间就有连线,构造无向图; 确定无向图中的路径,设置访问标记数组,用来标记该顶点是否已被访问;先将第一个顶点入栈;栈不为空,将栈顶元素出栈,并将其相邻的顶点入栈,设置访问标志位为已访问;若与它邻接的下一个顶点没有被访问过,将出栈元素保存到数组中;如此构成循环,找出所有的路径,并将这些路径分别存放在不同的数组中; 5)反算无向图边计算最短路径 确定路径后,根据实际情况为每条路径动态设定权值,并算出权值和,权值和最小的即为最短路径; 设定权值遵循的原理是:求两个直角三角形的斜边和,若它们的水平直角边不共线,求出起点与终点在水平方向上的中间点,连接起点与中间点,中间点与终点,此时求得的两条斜边和最短; 为每条路径设定权值的过程中,将每条路径的路径画出来,并算出每条路径的权值和;权值和为最小 的即为最短路径。
【文档编号】G01C21/20GK103528585SQ201310444105
【公开日】2014年1月22日 申请日期:2013年9月26日 优先权日:2013年9月26日
【发明者】潘广贞, 于一, 乔慧芬 申请人:中北大学