目錄
1.算法描述
2.仿真效果預(yù)覽
3.MATLAB核心程序
4.完整MATLAB
1.算法描述
? ? ? ? 近年來,隨著通信網(wǎng)絡(luò)、人工智能、自主系統(tǒng)、大數(shù)據(jù)的前沿技術(shù)的發(fā)展, 無人機(jī)蜂群作戰(zhàn)也正在由概念變成現(xiàn)實(shí),從理論走向?qū)嵺`。航跡規(guī)劃,多機(jī)協(xié)作, 集群控制等問題成為當(dāng)下研究熱點(diǎn)。在軍事作戰(zhàn)中派遣多無人機(jī)協(xié)同作戰(zhàn)相比于 單無人機(jī)能夠在穿透敵方防御系統(tǒng),探測(cè)目標(biāo)以及執(zhí)行攻擊任務(wù)等方面更具優(yōu)勢(shì) [1],采用大規(guī)模、低成本的無人機(jī)蜂群進(jìn)行低空突防,實(shí)施飽和攻擊已成為一種全 新的"非對(duì)稱"對(duì)抗戰(zhàn)術(shù)[2]。在各種民事應(yīng)用中,無人機(jī)蜂群已經(jīng)被廣泛用于環(huán)境 和自然災(zāi)害監(jiān)測(cè)、邊境監(jiān)視、突發(fā)事件援助、搜索和救援、貨物傳遞和建筑等任務(wù)。隨著航空技術(shù)與人工智能的迅速發(fā)展,無人機(jī)以其操作靈活,成本低廉等特 點(diǎn),在民用及軍事領(lǐng)域都有廣闊的應(yīng)用前景。
? ? ? ? 基于無人機(jī)(Unmanned Aerial Vehicle, UAV)的各種應(yīng)用是一個(gè)近年來得到飛速發(fā)展的高技術(shù)領(lǐng)域。由于單架 UAV 存在能力受限、可靠性弱等缺點(diǎn),由多 UAV 協(xié)作構(gòu)成多 UAV 蜂群可以更高效、更可靠、更低代價(jià)地支持完成各種任務(wù)。
? ? ? ?無人機(jī)蜂群是由若干配備多種任務(wù)載荷的低成本小型無人機(jī)組成,參照蜜蜂 等昆蟲的集體行動(dòng)模式,以智能化無人控制技術(shù)和網(wǎng)絡(luò)信息系統(tǒng)為支撐,在人類指揮或監(jiān)督下共同完成特定作戰(zhàn)任務(wù)。無人機(jī)蜂群可以是同構(gòu)的,也可以是異構(gòu) 的,其以數(shù)量眾多、群體智能為典型特征,可實(shí)現(xiàn)協(xié)同任務(wù)分配、協(xié)同探測(cè)和協(xié)同 攻擊,能夠極大增強(qiáng)無人機(jī)的通信能力和抗毀傷能力,擴(kuò)展無人機(jī)對(duì)戰(zhàn)場(chǎng)信息的 感知獲取能力,提高無人機(jī)協(xié)同執(zhí)行任務(wù)的能力。
? ? ? ?Flocking(有時(shí)也稱為是warming或herding),擁有4項(xiàng)簡(jiǎn)單的規(guī)則,把它們組合在一起時(shí),為自治主體群給出一個(gè)類似于鳥群、魚群的群體行為的逼真形式。定向行為規(guī)則:分離原則、列隊(duì)原則、聚合原則、躲避原則
? ? ? ? 分離原則:定向時(shí)要避免與本地flock同伴擁擠。即定時(shí)檢測(cè)鄰近同伴,避免擁擠;
? ? ? ? 列隊(duì)原則:駛向本地flock同伴的平均航向。即檢測(cè)鄰近同伴航向、速度,獲取平均值并調(diào)整自己;
? ? ? ? 聚合原則:定向時(shí)朝著本地flock同伴的平均位置移動(dòng)。即檢測(cè)鄰近同伴,平均位置然后調(diào)整其匹配航向;
? ? ? ? 躲避原則:使避免撞上局部區(qū)域內(nèi)的障礙或敵人。即“向前看一段距離”,遇到障礙物、敵人調(diào)整航向、速度進(jìn)行躲避。
? ? ? ?無人機(jī)蜂群網(wǎng)絡(luò)是一種由大量節(jié)點(diǎn)組成的分層、多簇結(jié)構(gòu)的無線通信網(wǎng)絡(luò)。?針對(duì)多無人機(jī)協(xié)同任務(wù)分配問題,提出了一種新的系統(tǒng)框架。將其轉(zhuǎn)化為一個(gè)組合優(yōu)化問題,并用改進(jìn)的聚類算法進(jìn)行求解。目的是使多無人機(jī)以低能耗完 成任務(wù)。隨著無人機(jī)數(shù)量的增加,無人機(jī)之間的碰撞等飛行安全問題也隨之出現(xiàn),提出了一種基于改進(jìn)人工勢(shì)場(chǎng)的多無人機(jī)抗碰撞改進(jìn)方法。針對(duì)聯(lián)網(wǎng)無人機(jī)易受到各種網(wǎng)絡(luò)攻擊的問題,提出了一種基于入侵檢測(cè)系統(tǒng) (IDS)的多無人機(jī)執(zhí)行任務(wù)時(shí)抵抗網(wǎng)絡(luò)攻擊的方法。為了進(jìn)一步提高任務(wù)分配的 準(zhǔn)確性,提出了一種改進(jìn)的方法。此外,提出了一種在線實(shí)時(shí)路徑規(guī)劃和任務(wù)重 新分配方法,以增強(qiáng)多無人機(jī)的魯棒性,特別是在任務(wù)中增加一個(gè)緊急目標(biāo)等突 發(fā)問題的響應(yīng)。最后,數(shù)值仿真和真實(shí)的物理飛行實(shí)驗(yàn)表明,該方法為多無人機(jī) 任務(wù)分配提供了一種可行的解決方案,與其他任務(wù)分配方法相比,該方法具有良好的性能。
2.仿真效果預(yù)覽
matlab2022a仿真結(jié)果如下:
?
?
?
?
?
文章來源:http://www.zghlxwxcb.cn/news/detail-443189.html
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
%初始化隨機(jī)位置
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))];
%計(jì)算任意兩個(gè)無人機(jī)之間的距離
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
%檢測(cè)無人機(jī)和障礙物之間的間距,通過flocking控制器和PPO,作用到無人機(jī),做出避障的運(yùn)動(dòng)決策
%注意,如果采用PID+flocking的控制方式,響應(yīng)速度kg大約為0.6左右,不同控制策略,響應(yīng)速度不一樣,如果要對(duì)比則修改kg參數(shù)
[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)) %第二個(gè)障礙物
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))%第一個(gè)障礙物
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
05_114_m
4.完整MATLAB
V文章來源地址http://www.zghlxwxcb.cn/news/detail-443189.html
到了這里,關(guān)于m基于flocking算法的無人機(jī)群空間避障飛行matlab仿真,對(duì)比二維場(chǎng)景和三維場(chǎng)景的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!