一种时间优化的平滑A*算法制造技术

技术编号:22637120 阅读:35 留言:0更新日期:2019-11-26 15:03
本发明专利技术公开了一种时间优化的平滑A*算法,包括如下步骤:步骤S1:对A*算法的代价估计函数进行加权处理;步骤S2:对A*算法的OPEN列表使用最小二叉堆进行优化;步骤S3:对步骤S1、S2优化后的路径进行3次B样条优化处理,得到最终的经3次B样条优化处理之后的路径;本发明专利技术采用时间优化的平滑A*算法,通过对A*算法的代价估计函数进行加权处理以及对A*算法的OPEN列表使用最小二叉堆进行优化,减少了路径规划算法运算时间,优化了整体路径平滑度,解决了现有的A*算法在实际的工程运用中存在折线多、转折次数多、累计转角大等问题,提高了机器人的工作效率。

A smooth a * algorithm for time optimization

The invention discloses a time optimized smooth a * algorithm, which comprises the following steps: step S1: weighting the cost estimation function of the a * algorithm; step S2: optimizing the open list of the a * algorithm with the minimum binary heap; step S3: optimizing the path optimized in steps S1 and S2 by three times of B-spline optimization to obtain the final path after three times of B-spline optimization; The invention adopts the smooth a * algorithm of time optimization. By weighting the cost estimation function of the a * algorithm and optimizing the open list of the a * algorithm with the minimum binary heap, the operation time of the path planning algorithm is reduced, the overall path smoothness is optimized, and the existing a * algorithm has many broken lines, many turning times and large cumulative turning angle in actual engineering application The work efficiency of the robot is improved.

【技术实现步骤摘要】
一种时间优化的平滑A*算法
本专利技术涉及一种路径规划A*算法,尤其涉及一种时间优化的平滑A*算法,具体来说是涉及一种融合最小二叉堆、系数加权和3次B样条优化来减少路径规划算法运算时间和对整体路径平滑度进行优化的平滑A*算法。
技术介绍
A*算法是广泛用于寻路和图遍历的计算机算法。由于其具有较好的性能和准确性,经常被使用在最短路径求解中,是一种启发式搜索算法,其成本估计函数为:f(n)=g(n)+h(n);式中:f(n)为从起始节点经由当前节点n到目标节点的估计成本,g(n)为初始节点到当前节点n的实际成本,h(n)为从当前节点到目标节点n的最佳路径的估计成本。A*算法的算法思想在于:A*算法典型的实现方法是使用优先级队列来重复执行选择要扩展的最小估计成本节点。此优先级队列称为开集,在算法的每个步骤中,从开集中移除具有最低f(n)值的节点,其相邻节点的f(n)和g(n)值被相应地更新,并且这些相邻节点被添加到队列中。算法继续进行,直到目标节点具有比队列中的任何节点更低的值(或者直到队列为空),而该目标节点的值就是最短路径的长度。在运行此算法之后,目标节点将指向其前导节点。依此类推,直到某个节点的前导是开始节点,就可以得到最短路径序列。A*算法采用了一个启发函数h(n),使算法利用启发信息朝着某个确定的方向搜索,所以其访问的节点比Dijkstra算法少得多,能快速地导向目标结点,访问到目标节点后算法停止。对于起始点和目标点都确定的情况,A*能利用启发函数快速找到目标点,现有的A*算法生成的路径图如图1所示,图1中的白色折线连接起来所经过的黑点为算法计算出的CLOSE节点,其他黑色部分均为障碍物。目前,A*算法的运行过程主要是按照移入、排序、移出的步骤来进行的,其中所耗费的主要代价在于遍历状态表来找出open表中f(n)最小的顶点。当移动机器人所处的面积比较大的时候,出行路线很长,open表中的数据量将很大,当反复查询这张open表的时候会导致算法运行所需的时间代价更高。因此open表的数据结构决定了算法效率的高低,优化算法中状态的查找速度可以有效提升算法的效率。同时,A*算法在实际的工程运用中存在折线多、转折次数多、累计转角大等问题,给机器人运行造成较大的麻烦,例如,转角多时,必须准确计算出机器人和障碍物间距,否则就会发生碰撞;当累计角度大、转角多时,机器人的工作效率也会下降。本专利技术选择A*算法作为最短路径规划的基础算法,其代价估计函数f(n)=g(n)+h(n)是影响算法运行效率的重要因素。当从初始点向目标点搜索时,算法权衡g(n)、h(n)这两个值,每次循环时,检查最小节点。搜索最短路径的关键在于启发函数h(n)的选取。h(n)越接近实际值,搜索效率越高。理论上,如果h(n)是0,则只有g(n)起作用,此时A*演变为Dijkstra算法。而Dijkstra算法是用于在有向图或无向图中的节点之间找到最短路径的算法。常见的方法是将单个节点固定为源节点,并找到从源节点到图中所有其他节点的最短路径,形成最短路径树;Dijkstra算法的算法思想在于:开始节点被称为源节点,某个节点的距离是指从初始节点到该节点的距离。Dijkstra算法将分配一些初始距离值,并逐步更新节点的距离值。如果h(n)小于实际代价,则算法保证能找到一条最短路径。随着h(n)的减小,A*扩展的节点越来越多,算法运行得越慢;如果h(n)正好与实际代价相等,那么算法只访问最佳路径上的节点而不扩展其余节点,算法将运行得很快。如果h(n)比实际代价大,则算法不一定能找到最短路径,但会运行得更快。如果h(n)比g(n)大很多,则只有h(n)起作用,A*就变成广度优先算法(breadthfirstsearch,BFS)。为了快速地得到最短路径,关键在于h(n)的选择。启发函数h(n)代表当前节点到目标节点的代价估计,经典A*算法通常采用欧几里得度量(欧氏距离)和曼哈顿距离来表示代价估计。欧氏距离是常用的一个空间里两点间的距离定义,代表两个点之间的实际距离。欧氏距离的估计代价值计算公式如下:h(n)=sqrt[(nx-goalx)2+(ny-goaly)2],式中:(nx,ny)为算法中访问的当前节点坐标,(goalx,goaly)为目标节点坐标;另一种用来表示代价估计的距离是曼哈顿距离,表示两个点在标准坐标系上的绝对轴距离的和。用曼哈顿距离表示估计代价时的评价函数为:h(n)=abs(nx-goalx)+abs(ny-goaly)。
技术实现思路
本专利技术解决的技术问题是,克服现有技术的缺陷,提供一种时间优化的平滑A*算法,该算法通过对A*算法的代价估计函数进行加权处理以及对A*算法的OPEN列表使用最小二叉堆进行优化,减少了路径规划算法运算时间,优化了整体路径平滑度,解决了现有的A*算法在实际的工程运用中存在折线多、转折次数多、累计转角大等问题,提高了机器人的工作效率。为了解决上述技术问题,本专利技术通过下述技术方案得以解决:一种时间优化的平滑A*算法,包括如下步骤:步骤S1:对A*算法的代价估计函数进行加权处理;步骤S2:对A*算法的OPEN列表使用最小二叉堆进行优化;步骤S3:对步骤S1、S2优化后的路径进行3次B样条优化处理,得到最终的经3次B样条优化处理之后的路径,该路径即为优化路径,减少了路径规划算法运算时间,优化了整体路径平滑度,解决了现有的A*算法在实际的工程运用中存在折线多、转折次数多、累计转角大等问题,提高了机器人的工作效率。作为优选,步骤S1中的对A*算法的代价估计函数进行加权处理的步骤为:步骤一:采用代价估计函数f(n)=g(n)+h(n)计算代价值:其中,f(n)是代价估计函数,g(n)是由起始节点到节点n的代价值,h(n)是节点n到目标节点的代价启发值;步骤二:采用加权处理之后的函数h(n)=C{ω1[abs(nx-goalx)]+ω2[abs(ny-goaly)]}计算(nx,ny)与(goalx,goaly)两点之间的距离:其中,abs(nx-goalx)+abs(ny-goaly)为曼哈顿距离计算公式,C为单位代价系数,C的实际值设为10,ω1、ω2为加权系数,(nx,ny)为算法中访问的当前节点坐标,(goalx,goaly)为目标节点坐标;步骤三:选取不同的加权系数ω1、ω2进行试验,最后得到试验最优系数ω1=1、ω2=3。作为优选,步骤S2中对A*算法的OPEN列表使用最小二叉堆进行优化的步骤为:步骤Ⅰ:初始化OPEN表、CLOSE表和目标点A,将起始节点S放入OPEN表,CLOSE表置空;步骤Ⅱ:判断OPEN表是否为空:如果否,则从OPEN表的表头取一个节点n;如果是,则算法结束;步骤Ⅲ:判断n是否为目标节点:如果否,则进入步骤Ⅳ;如果是,则算法结束;步骤Ⅳ:将节点n的所有后继节点展开形成直接关联子节本文档来自技高网
...

【技术保护点】
1.一种时间优化的平滑A*算法,其特征在于:包括如下步骤:/n步骤S1:对A*算法的代价估计函数进行加权处理;/n步骤S2:对A*算法的OPEN列表使用最小二叉堆进行优化;/n步骤S3:对步骤S1、S2优化后的路径进行3次B样条优化处理,得到最终的经3次B样条优化处理之后的路径。/n

【技术特征摘要】
1.一种时间优化的平滑A*算法,其特征在于:包括如下步骤:
步骤S1:对A*算法的代价估计函数进行加权处理;
步骤S2:对A*算法的OPEN列表使用最小二叉堆进行优化;
步骤S3:对步骤S1、S2优化后的路径进行3次B样条优化处理,得到最终的经3次B样条优化处理之后的路径。


2.根据权利要求1所述的一种时间优化的平滑A*算法,其特征在于:步骤S1中的对A*算法的代价估计函数进行加权处理的步骤为:
步骤一:采用代价估计函数f(n)=g(n)+h(n)计算代价值:
其中,f(n)是代价估计函数,g(n)是由起始节点到节点n的代价值,h(n)是节点n到目标节点的代价启发值;
步骤二:采用加权处理之后的函数h(n)=C{ω1[abs(nx-goalx)]+ω2[abs(ny-goaly)]}计算(nx,ny)与(goalx,goaly)两点之间的距离:
其中,abs(nx-goalx)+abs(ny-goaly)为曼哈顿距离计算公式,C为单位代价系数,C的实际值设为10,ω1、ω2为加权系数,(nx,ny)为算法中访问的当前节点坐标,(goalx,goaly)为目标节点坐标;
步骤三:选取不同的加权系数ω1、ω2进行试验,最后得到试验最优系数ω1=1、ω2=3。


3.根据权利要求1或2所述的一种时间优化的平滑A*算法,其特征在于:步骤S2中对A*算法的OPEN列表使用最小二叉堆进行优化的步骤为:
步骤Ⅰ:初始化OPEN表、CLOSE表和目标点A,将起始节点S放入OPEN表,CLOSE表置空;
步骤Ⅱ:判断OPEN表是否为空:如果否,则从OPEN表的表头取一个节点n;如果是,则算法结束;
步骤Ⅲ:判断n是否为目标节点:如果否,则进入步骤Ⅳ;如果是,则算法结束;
步骤Ⅳ:将节点n的所有后继节点展开形成直接关联子节点,判断子节点是否在CLOSE表中,如果否,则将子节点放入OPEN表中;如果是,则进入步骤Ⅴ;
步...

【专利技术属性】
技术研发人员:黎建军齐强
申请(专利权)人:中国计量大学
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1