一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于弹簧算法的机器人路径规划方法与流程

2021-12-08 00:17:00 来源:中国专利 TAG:

1.本发明涉及机器人路径规划技术领域,具体是一种基于弹簧算法的移动机器人路径规划方法。


背景技术:

2.路径规划技术是移动机器人研究领域的一个重要组成部分,主要目的是在有障碍物的环境中,根据一定的准则(如路径最短,位置拐点最少,用时最短等),寻求一条从起始位置节点到目标位置节点之间的最优或次优安全无碰路径。
3.路径规划技术的发展在一定程度上标志着机器人智能水平的高低,而路径规划方法的优劣直接影响路径规划效果。
4.目前,国内外许多专家学者都在致力于路径规划算法的研究,常用的优化算法主要有dijkstra、a*、人工势场法、免疫算法、蚁群优化算法、神经网络、粒子群优化算法和遗传算法等。
5.其中,以dijkstra、a*为代表的传统路径优化算法虽然能保证取得最优解,但其优化效率对栅格地图的节点规模较为敏感,因此,对于节点规模较大的栅格地图的寻路问题,传统优化算法的表现并不十分优秀,而以蚁群算法、遗传算法为代表的启发式算法,不必遍历整个解空间,仅需对部分解子空间进行寻优,即可大概率获得最优解,该特性使得启发式算法对栅格图节点规模的敏感程度低于传统优化算法,但同时也使得启发式算法存在陷入局部最优解的可能。


技术实现要素:

6.本发明的目的在于提供一种基于弹簧(spring algorithm,sa)的移动机器人路径规划方法,该算法的用时对节点规模的敏感程度远小于a*,且其得到的最优解也优于传统蚁群算法。
7.首先,针对栅格地图下的障碍物提出形变点的概念,即可能对弹簧产生形变的栅格顶点,如图1所示。
8.图1中,障碍物的四个顶点皆为形变点,当障碍物由栅格图下界向上移动至原位置时,顶点a将使得弹簧产生形变,如图1(a)效果所示;当障碍物由栅格图上界向下移动至原位置时,顶点c将使得弹簧产生形变,如图1(b)效果所示。
9.定义弹簧形变规则,即在障碍物移动的过程中,通过检测障碍物上的形变点是否逾越弹簧线段来判定弹簧是否发生形变。方法如algorithm 1所示。
10.以图2所示为例,障碍物由上至下移动至其原位置,对顶点c检测其与弹簧各线段的位置状态,通过algorithm 1可得状态列表state = [0]。
[0011]
随着障碍物继续下移,顶点c会首先逾越弹簧线段se,此时情形如图3。
[0012]
由algorithm 1可得state = [1],此时标志着c点产生了逾越行为,这将使得弹簧产生形变,即弹簧线段由se变成sc ce,具体操作见algorithm 2。
[0013]
定义后文解空间中解的所含属性名及其功能如表1所示。
[0014]
表1 解的属性名及其功能本发明解决其技术问题所采用的技术方案是:一种基于弹簧算法的移动机器人路径规划方法,包括以下步骤:s1、对障碍物进行编号(i=1,2,3

),以及记录其原位置;更新障碍物所属矩阵
map_obs_belong;初始化解空间solution_space,即向其中放入初始解,其'way'属性为起点与终点两个节点,'length'为计算后的弹簧长度,'collision'为起点与终点连线所在节点上所有障碍物的编号构成的列表,'avoid'为空列表,'map'值为无障碍物时的地图数据;s2、进入循环:s21、从solution_space中以'length'为参考值,找到最小值所对应的那个解,记作shortest,若该解的'collision'列表为空,则退出循环,执行s3;否则执行s22;s22、依次选取shortest['collision']中的障碍物obs,分别从不同的方向使其移动至原位置,并在每次移动后,构建新的解存入solution_space中,新的解的'way'属性值由algorithm2决定,'length'由'way'重新计算得到,'collision'为shortest['collision']去除obs后的列表,'avoid'为shortest['avoid']添加obs以及其移动方向的列表,'map'值为obs移动至原为之后的地图数据,执行s23;s3、输出全局最优解shortest。
[0015]
本发明通过仿真弹簧形变的原理,设计了一种弹簧算法(spring algorithm,sa)。初始化先将障碍物全部移除,起点与终点之间以一根弹簧相连,随后将障碍物按照一定顺序由边界外移动至原位置,在此过程中,障碍物的移动会对弹簧产生碰撞形变,当所有障碍物回归至原位置时,形变后的弹簧的长度,将对应一个解,其中,最小解即为最优路径。通过案例仿真可以看出,弹簧算法的用时对节点规模的敏感程度远小于a*,且其得到的最优解也优于蚁群算法。
[0016]
本发明的有益效果是,弹簧算法由于仅对障碍物进行研究,因此对于一些障碍物个数较少的栅格地图的寻路任务,其运行时间较短,且弹簧算法对节点规模的敏感程度较a*来看较小。同时,算法所得最终路径,优于a*以及蚁群算法。
附图说明
[0017]
下面结合附图和实施例对本发明进一步说明:图1 形变点使弹簧产生形变示意图;图2 障碍物完全位于弹簧线段之上;图3 障碍物局部位于弹簧线段之下;图4 弹簧算法流程图;图5 弹簧算法障碍物编码;图6 弹簧算法所得结果;图7 弹簧算法结果等价图;图8 a*算法所得结果;图9 蚁群算法所得结果;图10 蚁群算法迭代收敛图。
具体实施方式
[0018]
本发明的目的在于提供一种基于弹簧算法(spring algorithm)的移动机器人路径规划方法,该算法的用时对节点规模的敏感程度远小于a*,且其得到的最优解也优于传统蚁群算法。
[0019]
首先,针对栅格地图下的障碍物提出形变点的概念,即可能对弹簧产生形变的栅格顶点,如图1所示。
[0020]
图1中,障碍物的四个顶点皆为形变点,当障碍物由栅格图下界向上移动至原位置时,顶点a将使得弹簧产生形变,如图1(a)效果所示;当障碍物由栅格图上界向下移动至原位置时,顶点c将使得弹簧产生形变,如图1(b)效果所示。
[0021]
定义弹簧形变规则,即在障碍物移动的过程中,通过检测障碍物上的形变点是否逾越弹簧线段来判定弹簧是否发生形变。方法如algorithm 1所示。
[0022]
以图2所示为例,障碍物由上至下移动至其原位置,对顶点c检测其与弹簧各线段的位置状态,通过algorithm 1可得状态列表state = [0]。
[0023]
随着障碍物继续下移,顶点c会首先逾越弹簧线段se,此时情形如图3所示。
[0024]
由algorithm 1可得state = [1],此时标志着c点产生了逾越行为,这将使得弹簧产生形变,即弹簧线段由se变成sc ce,具体操作见algorithm 2。
[0025]
定义后文解空间中解的所含属性名及其功能如表1所示。
[0026]
表1 解的属性名及其功能
本发明解决其技术问题所采用的技术方案是:一种基于弹簧算法的移动机器人路径规划方法,包括以下步骤:s1、对障碍物进行编号(i=1,2,3

),以及记录其原位置;更新障碍物所属矩阵map_obs_belong;初始化解空间solution_space,即向其中放入初始解,其'way'属性为起点与终点两个节点,'length'为计算后的弹簧长度,'collision'为起点与终点连线所在节点上所有障碍物的编号构成的列表,'avoid'为空列表,'map'值为无障碍物时的地图数据;s2、进入循环:s21、从solution_space中以'length'为参考值,找到最小值所对应的那个解,记作shortest。若该解的'collision'列表为空,则退出循环,执行s3;否则执行s22;s22、依次选取shortest['collision']中的障碍物obs,分别从不同的方向使其移动至原位置,并在每次移动后,构建新的解存入solution_space中,新的解的'way'属性值由algorithm2决定,'length'由'way'重新计算得到,'collision'为shortest['collision']去除obs后的列表,'avoid'为shortest['avoid']添加obs以及其移动方向的列表,'map'值为obs移动至原为之后的地图数据。执行s23;s3、输出全局最优解shortest。
[0027]
本发明的有益效果是,弹簧算法由于仅对障碍物进行研究,因此对于一些障碍物个数较少的栅格地图的寻路任务,其运行时间较短,且弹簧算法对节点规模的敏感程度较a*来看较小。同时,算法所得最终路径,优于a*以及蚁群算法。
[0028]
本发明的效果可以通过以下仿真实验进一步说明:为验证本方法的正确性和合理性,运用python语言编程,在20
×
20的栅格环境模型下对弹簧算法(spring algorithm,sa)进行仿真,栅格图数据选取期刊《电子科技》在2019年第32卷第9期中5

9页 29页《基于改进蚁群算法的移动机器人路径规划研究》文献中数据为案例,并与a*算法以及基本蚁群算法进行比较。其中,蚁群算法算法的主要参数如下:距离启发因子α=7,距离启发因子β=1,信息素挥发系数q=0.3,,蚂蚁数量m = 50,最大迭代次数为t = 100。
[0029]
弹簧算法对栅格图中的障碍物编号见图5,算法所得最短路径的way列表[[12,3],[8,0],[5,0]],其中,0为由栅格上界向下移动,3为由栅格下界向上移动,因此,最短路径对应的障碍物移动次序为,先将障碍物12由下向上移动,再将障碍物8由上向下移动,组以后将障碍物5由上向下移动,最终所得弹簧形态即为最短路径,如图6所示;弹簧算法得到的结果等价图如图7所示。另外,算法所得结果也说明了其余障碍物对最短路径无影响。其他算法所得到的结果如图8

图10所示及表2所示。
[0030]
由表2可知,在路径长度方面,a*与蚁群算法皆能找到最优解,而弹簧算法由于不遵循栅格图节点之间移动的角度限制问题(即机器人仅能沿着水平/垂直/对角移动),因此,其能得到更好的解,而这个结果也更符合实际情况。在运行时间方面,a*算法速度更快,而弹簧算法用时略长,但却明显小于蚁群算法。
[0031]
为了测试各算法在不同节点规模下的表现,针对上述案例的栅格地图,进一步提高地图栅格环境的复杂度,选取40*40、60*60的规模进行仿真,实验数据如表3所示。
[0032]
表 3 不同栅格环境下的算法仿真结果由表3数据可知,弹簧算法在大规模地图的寻路问题上,依然比a*算法和蚁群算法能获得更优秀的结果,进一步说明本发明的可行性。
[0033]
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制;任何熟悉本领域的技术人员,在不脱离本发明技术方案范围情况下,都可利用上述揭示的方法和技术内容对本发明技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同替换、等效变化及修饰,均仍属于本发明技术方案保护的范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献