无人机在三维空间中如何均匀分布?
提示:从力学的角度出发
问题描述
本人之前研究的无人机集群方向是从力学的角度入手,通过计算无人机之间的相互作用力,进而规划下一步的动作。
后来在执行目标追踪任务的时候,想到了两个问题,如何判断追踪成功?如何对目标进行有效的控制?
在二维空间中可以进行有效的包围,不论是正方形,还是圆形,那么在三维空间呢?
算法分析
提示:在三维空间中对目标有效控制的难点是:无人机在三维球体如何均匀分布。
思路:对每一个无人机设定坐标:x, y, z; 设定速度:Vx , Vy, Vz,计算其余无人机对当前粒子的作用力,求解一个微分方程,初始状态随机分布,每一次迭代更新当前无人机
的运动速度和位移。
我简单画了个图,希望大家看的直观一些,应该是三维球体,这只是一个切面,大家不要理解错了哦!
F1表示P1对Pi的斥力;
F2表示P2对Pi的斥力;
将所有力求合力,即得到F合力,将F合力分解为径向分量Fr和切向分量Fv(这个力忘记画了,其实就是球体切线方向的力
)
速度更新:
Vt+1 = Vt + G*Fv
欲求切向分量,先求径向分量:
FV = F合力 - Fr
求合力的方法:
球面无人机i的坐标
Ri = [xi, yi, zi]
求无人机i与邻居无人机j的矢量之差
ddj = (ri - rj)
敲公式太费劲了,我还是上图片吧
求无人机i与邻居各点的距离
计算合力
F合力 = Fx + Fy + Fz
求径向分量
(xi*Fx + yi*Fy + zi*Fz) *(xi, yi, zi) = Fr
为啥???
看到这里大家一脸懵逼,为什么这么计算呢?
因为,我是以球心为原点建立的坐标系。
求切向分量
FV = F合力 - Fr
更新坐标
rt+1 = rt + vt
更新速度
vt+1 = vt + G*Fv
最后,提醒大家,一定要注意矢量运算,在matlab中,一切皆为矩阵,这是基础!!!
给大家看一下仿真结果吧,这应该是一个动态的视频,我截取了两张图,分别是初始状态,和最后的状态。
仿真结果
代码跑出来的结果如下:
初始时刻,无人机粒子随机散落在球体表面。
算法迭代结束时,无人机粒子均匀散落在球体表面。
两句辛酸
在研究的过程中是痛苦,也是难忘的,我们会遇到零星散落的星光,却难以找到准确的答案。不论是集群算法,还是避障算法,目标追踪等,我没法给大家一个系统的全面的解释,只能简单介绍一下我的心得,剩下的需要大家一起摸索。我们的研究方向或许有所出入,但是我相信散落的星光会汇聚成星河,星河的尽头就是光明的方向。
欢迎大家留言,一起交流哦!