作者是一名菜鸟研究生,目前的研究领域偏向于多机器人协同下的编队避碰及协同。近一年来开始探索在matlab上进行仿真。把目前的困难和瓶颈列出来,以供大家参考,少走弯路。
本文中有部分灵感来源于@RedGlass_lee 的大佬的 多机器人协同编队算法原理及实现 这篇文章。后续我对他文章里面的代码进行了调整。
目前多机器人方向上的研究包括多无人机(UAVs)、多无人车(UGVs)、及多无人艇(USVs).作者的研究领域主要集中于多无人艇的避碰和协同。
对于多无人艇的研究,面临的主要问题是无人艇在编队情况下:
1.如何保持无人艇的队形不变.
2.如果存在干扰的情况,如何在排除干扰后恢复编队的队形.
3.多无人艇的编队如何组织运动.
针对上述问题,作者进行了一些探索。下面把仿真结果呈上,便于大家学习。
1.如何保持无人艇的队形不变这个问题,采用领导-跟随模型,设置一个领导者及四个跟随者,作者考虑计算跟随艇与其他艇之间的误差(领导艇不计算误差),利用误差的大小及x,y方向上的夹角进行计算速度v,使其跟随领导者前进。
2.这里作者假设,如果有一个攻击者进入编队内部,破坏编队的队形,编队在给攻击者让路的过程中,如何避开攻击者并且进行恢复队形的操作。作者这里提前设定了攻击者的进行路线,使其穿过编队。编队采用的人工势场法(Artificial Potenial Field)进行避障,即把攻击者看成移动障碍物进行避让。
如何进行让路之后的队形恢复,作者仍旧采用计算编队内队形的误差,调整编队内各个无人艇的速度值。使“掉队”的无人艇加速赶上自己应有的位置。
3.对于多无人艇的编队如何进行运动,作者以设定目标点的方式,使得目标点给领导者艇一个引力,领导者艇将引力转化为速度大小和方向进行运动。领导者避障采用的是人工势场法避障,不考虑编队中的艇的影响。
无人艇编队中的其他艇的速度由目标点给的引力+其他编队艇形成的障碍物阻力+存在的动态障碍物施加的阻力+静态障碍物的阻力合成的速度及方向。
该图为单艇人工势场跑出的结果。
该图为无人艇编队的行进路线(红色为领导者,其余为跟随者)
各个跟随者与无人艇之间的误差(效果显然不好)
由于局部最优问题没有解决好,导致规定时间内无法到达终点
该图为实时显示无人艇编队的行进轨迹及各个障碍物的位置
%%
下一步要解决的问题还有很多:
1.靠人工势场得出的编队内部速度变化过大,算法原理有问题。
2. 动态障碍物给定路线与无人艇编队进行对遇。
3.实现编队被打散之后的快速恢复队形。
作者第一次发表blog,并且刚刚开始学习matlab,可能有一些表述不清的地方,请大家多多指正。另外作者的研究领域包括编队智能体的避碰及算法研究。如果有感兴趣的网友可以加作者qq:1131445521 进行交流。
后续解决上述问题后,会继续进行更新,就当一条探索的道路吧。