m基于flocking算法的无人机群空间避障飞行matlab仿真,对比二维场景和三维场景

1.算法描述

近年来,随着通信网络、人工智能、自主系统、大数据的前沿技术的发展,无人机蜂群作战也正在由概念变成现实,从理论走向实践。航迹规划,多机协作,集群控制等问题成为当下研究热点。在军事作战中派遣多无人机协同作战相比于单无人机能够在穿透敌方防御系统,探测目标以及执行攻击任务等方面更具优势[1],采用大规模、低成本的无人机蜂群进行低空突防,实施饱和攻击已成为一种全 新的"非对称"对抗战术[2]。在各种民事应用中,无人机蜂群已经被广泛用于环境 和自然灾害监测、边境监视、突发事件援助、搜索和救援、货物传递和建筑等任务。随着航空技术与人工智能的迅速发展,无人机以其操作灵活,成本低廉等特 点,在民用及军事领域都有广阔的应用前景。


基于无人机(Unmanned Aerial Vehicle, UAV)的各种应用是一个近年来得到飞速发展的高技术领域。由于单架 UAV 存在能力受限、可靠性弱等缺点,由多 UAV 协作构成多 UAV 蜂群可以更高效、更可靠、更低代价地支持完成各种任务。


无人机蜂群是由若干配备多种任务载荷的低成本小型无人机组成,参照蜜蜂等昆虫的集体行动模式,以智能化无人控制技术和网络信息系统为支撑,在人类指挥或监督下共同完成特定作战任务。无人机蜂群可以是同构的,也可以是异构 的,其以数量众多、群体智能为典型特征,可实现协同任务分配、协同探测和协同 攻击,能够极大增强无人机的通信能力和抗毁伤能力,扩展无人机对战场信息的 感知获取能力,提高无人机协同执行任务的能力。


Flocking(有时也称为是warming或herding),拥有4项简单的规则,把它们组合在一起时,为自治主体群给出一个类似于鸟群、鱼群的群体行为的逼真形式。定向行为规则:分离原则、列队原则、聚合原则、躲避原则

分离原则:定向时要避免与本地flock同伴拥挤。即定时检测邻近同伴,避免拥挤;

列队原则:驶向本地flock同伴的平均航向。即检测邻近同伴航向、速度,获取平均值并调整自己;

聚合原则:定向时朝着本地flock同伴的平均位置移动。即检测邻近同伴,平均位置然后调整其匹配航向;

躲避原则:使避免撞上局部区域内的障碍或敌人。即“向前看一段距离”,遇到障碍物、敌人调整航向、速度进行躲避。



无人机蜂群网络是一种由大量节点组成的分层、多簇结构的无线通信网络。针对多无人机协同任务分配问题,提出了一种新的系统框架。将其转化为一个组合优化问题,并用改进的聚类算法进行求解。目的是使多无人机以低能耗完成任务。随着无人机数量的增加,无人机之间的碰撞等飞行安全问题也随之出现,提出了一种基于改进人工势场的多无人机抗碰撞改进方法。针对联网无人机易受到各种网络攻击的问题,提出了一种基于入侵检测系统(IDS)的多无人机执行任务时抵抗网络攻击的方法。为了进一步提高任务分配的 准确性,提出了一种改进的方法。此外,提出了一种在线实时路径规划和任务重 新分配方法,以增强多无人机的鲁棒性,特别是在任务中增加一个紧急目标等突 发问题的响应。最后,数值仿真和真实的物理飞行实验表明,该方法为多无人机 任务分配提供了一种可行的解决方案,与其他任务分配方法相比,该方法具有良好的性能。


2.仿真效果预览

matlab2022a仿真结果如下:




3.MATLAB核心程序

for i = 1:UAV_num        

if norm(Speed_0(i,:))~=0

Speed_0(i,:) = Speed_0(i,:)/norm(Speed_0(i,:));

end

while 1

%初始化随机位置

Position_0(i,:) = [rand*Width/4,randn*Width/40+Width/2, randn*Width/40+Width/2,atan2(Speed_0(i,2), Speed_0(i,1))];

%计算任意两个无人机之间的距离

d = func_dist_btuav(Position_0(1:i-1,1:3), Position_0(i,1:3));

if( all(d>0.5))

break

end

end

end


Position = Position_0;

Speed    = Speed_0;


..............................................................

for t = 0:ts:TIMES

t

i=i+1;

%flocking控制,输出速度变量

Speed1          = func_flocking_Speed(Position(:,[1,2,4]),Speed(:,[1,2]),Radius);

Speed2          = func_flocking_Speed(Position(:,[2,3,4]),Speed(:,[2,3]),Radius);

Speed3          = func_flocking_Speed(Position(:,[1,3,4]),Speed(:,[1,3]),Radius);

Speed           = [Speed1(:,1)+Speed3(:,1),Speed1(:,2)+Speed2(:,1),Speed2(:,2)+Speed3(:,2)]/2;



for j = 1:UAV_num

theta  = atan((Goal(2)-Position(j,2))/(Goal(1)-Position(j,1)));

theta_ = atan((Goal(3)-Position(j,3))/(Goal(2)-Position(j,2)));

for jc = 1:2

dist(jc) = sqrt((Position(j,1) - C(jc,1))^2 + (Position(j,2) - C(jc,2))^2 + (Position(j,3) - C(jc,3))^2);

end

%检测无人机和障碍物之间的间距,通过flocking控制器和PPO,作用到无人机,做出避障的运动决策

%注意,如果采用PID+flocking的控制方式,响应速度kg大约为0.6左右,不同控制策略,响应速度不一样,如果要对比则修改kg参数

[V,I] = min(dist);   

if Position(j,1)<=max(C(1,1),C(2,1))


if Position(j,2)>1.02*(C(1,2)+R(1))  &  Position(j,2)<0.98*(C(2,2)-R(2))

vv(j,:)  = [0.8*Speedv,0,Speedv*sin(theta)*sin(theta_)];

else

if Position(j,2)<=1.02*(C(1,2)+R(1)) %第二个障碍物

if dist(I) >= (1+6*Kg)*R(I)%不避障

vv(j,:)  = [0.8*Speedv,0,Speedv*sin(theta)*sin(theta_)];  

else%切线方式避障

theta0 = atan((C(1,2)-Position(j,2))/(C(1,1)-Position(j,1)));

d0     = sqrt((C(1,2)-Position(j,2))^2+(C(1,1)-Position(j,1))^2);

theta1 = -real(asin(1.3*R(1)/d0));

if Position(j,2)<C(1,2)

thetas=theta1;

else

thetas=theta0+theta1;  

end

vv(j,:)= 1.5*[Speedv*cos(thetas),Speedv*sin(thetas),Speedv*sin(theta)*sin(theta_)];

end

end

if Position(j,2)>=0.98*(C(2,2)-R(2))%第一个障碍物

if dist(I) >= (1+6*Kg)*R(I)%不避障

vv(j,:)  = [0.8*Speedv,0,Speedv*sin(theta)*sin(theta_)];   

else%切线方式避障

theta0 = atan((C(2,2)-Position(j,2))/(C(2,1)-Position(j,1)));

d0     = sqrt((C(2,2)-Position(j,2))^2+(C(2,1)-Position(j,1))^2);

theta1 = real(asin(1.3*R(2)/d0));  

if Position(j,2)<C(2,2)

thetas=theta0+theta1;

else

thetas=theta1;  

end

vv(j,:)= 1.5*[Speedv*cos(thetas),Speedv*sin(thetas),Speedv*sin(theta)*sin(theta_)];

end

end

end

else



vv(j,:)=[Speedv*cos(theta),Speedv*sin(theta)*cos(theta_),Speedv*sin(theta)*sin(theta_)];

end

end

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,047评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,807评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,501评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,839评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,951评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,117评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,188评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,929评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,372评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,679评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,837评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,536评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,168评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,886评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,129评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,665评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,739评论 2 351

推荐阅读更多精彩内容