汽車和山羊問題matlab仿真_Matlab----無人機集群對抗中的關鍵問題和仿真平臺(開發中)案例...

無人機集群對抗,是自動駕駛中路徑規劃的新問題,并且連續兩年出現在最近的中國大學生數學建模競賽中。可見,這是一個急需解決的數學問題(體現了官方的軍事戰略意志),同時,還沒有成熟解決方案的問題。

本人在自動駕駛無人艇領域也會碰到類似的路徑規劃的問題。海軍裝備每年組織的海上競賽中,多無人艇編隊的攔截、追蹤、護航、穿插,都是軍用無人艇的必考項目。

本文主要根據前期《無人機集群協同對抗仿真案例(2020數學建模MCM試題)》一題的工作研究,總結了一些基本方法。同時,這些方法,將會收錄到無人機集群協同對抗工具包中。

若谷:Matlab仿真----無人機集群協同對抗仿真案例(2020數學建模MCM試題)?zhuanlan.zhihu.com
7e556f243f89e5df0dc2a1e9c29ed7f6.png

有興趣的朋友,可以加微信,繼續溝通。

若谷:《自動駕駛行業交流群》及公約?zhuanlan.zhihu.com
83e35172296342547e18374ce6075684.png

零、無人機集群對抗問題的關鍵問題

無人機集群對抗是未來無人機作戰的重要模式,它是一群無人機對另一群無人機進行攔截而形成的空中協作式的纏斗,對抗中無人機具有自組織、自適應特點和擬人思維屬性,通過感知環境,對周圍態勢進行判斷,依據一定的行為規則,采取攻擊、避讓、分散、集中、協作、援助等有利策略,使得在整體上涌現出集群對抗系統的動態特性。

本文及后面一篇文章,將會重點分享無人機集群對抗仿真中的數學建模方法。

  1. 無人機集群協同對抗演化過程機理及其表述

由于集群對抗中信息的多元化和不完全、不確定性,對抗系統是一個復雜的動態隨機過程,空戰對抗態勢隨著時空不斷演化,每個無人機作為一個智能體必須依據不斷變化的態勢并依據一定的準則調整自己的策略,進行己方個體之間的合作、與對方的博弈。因此,在充分分析無人機集群對抗演化過程特點及其內涵的基礎上,理解無人機集群對抗的非線性動態過程演化機,利用系統動力學和復雜系統理論建立各種因素的相互作用和信息的傳遞關系的網絡拓撲架構,利于對無人機集群對抗過程的定量和定性分析。

6f07ca52931941ee80cc78988ccaff73.png

2. 無人機自適應自主決策對抗行為

集群對抗中,無人機個體是直接動作發出和執行者,無人機個體不斷與環境進行交互并相互作用,促使對抗過程不斷演化。因此,集群對抗最終是要依賴于無人機的對抗規則,即無人機依據敵方態勢、友機態勢及自身飛行狀態、武器狀況、健康情況等因素,采取某種機動和攻擊策略,如攻擊敵機、威脅回避、支援友機、戰術協同,使在最大化對敵殺傷、對敵態勢、瓦解敵方意圖和最小化自身損失等方面的綜合效益取得最大化。

0d055425efffd1d5cde6926532e33657.png

3. 無人機集群智能控制方法

暫時略

4. 無人機集群探測與識別

復雜而多變的集群對抗環境具有極大的狀態不確定性和極強的時間約束,對于敵我雙方大規模無人機個體和集群進行精確地探測和識別是對抗行為成功與否的先決條件。

cfa71047d8e2e5ffe0b5979538a8f87b.png

5.無人機集群對抗態勢評估

態勢評估是對抗決策的依據,由于集群對抗威脅可以來自任意方向,數量多,友機與敵方飛機相互纏繞,信息量大,且存在不完全、不確定性,態勢評估比單機對抗情況復雜的多。這就需要集群中每個無人機利用其對周圍環境的感知信息和接收到的鄰近友機傳來的信息,根據所獲得的綜合數據信息進行數據挖掘,分析理解敵方的作戰意圖、戰術戰法。

3ad5bb93764ba1449aa201613c053894.png

6.無人機集群通信技術

暫時略

根據海軍裝備技術的發展綱要,軍用低軌通信衛星,是十五規劃的重點。

一、基于拐彎半徑限制的前進方向角度

function [Angle_Left, Angle_Right] = UAVForwardDirection_TurningRadius(UAV_Motion_Status, UAV_Speed, StepTime, TurningRadius)

% Function: 根據過去一步的運動方向(歷史軌跡,x,y,Angle_Motion),基于拐彎半徑的限制,以及步長和飛行速度,計算下一步的運動方向范圍。

fdaab09283afb2cef9155643b699560e.png
function [Angle_Left, Angle_Right] = UAVForwardDirection_TurningRadius(UAV_Motion_Status, UAV_Speed, StepTime, TurningRadius)
%% Definition
% Input:
% UAV_Motion_Status:[x,y,Direction]*1, UAV的運動軌跡
% UAV_Speed: x m/s, 比如250m/s
% StepTime: x s仿真步長,比如0.2s
% TurningRadius: x km, N個紅色UAV運輸機,即紅色UAV的中心位置
% Output: 
% Angle_Left, Angle_Right: 前行方向的左右邊界(指北為零,順時針為正,范圍是[0, 2*pi)  )
% Function: 根據過去一步的運動方向(歷史軌跡,x,y,Angle_Motion),基于拐彎半徑的限制,以及步長和飛行速度,計算下一步的運動方向范圍。
%% Steps:
% 1 獲取BlueUAV_Trajectory的維度;
% 2 如果維度為1,直接向右方(默認的飛行方向),出行一個步長;
% 3 如果維度為2,向外延伸一個步長;
% 4 如果維度大于或等于3,向外延伸,取得方向,再延伸一個步長;
% Author: ruogu7(380545156@qq.com)
% Date: Sep, 28th.
% Latest update: Sep, 28th.
% Example:
% UAV_Motion_Status = [0 25 90]  
% UAV_Speed = 0.25   % km/s
% StepTime = 0.4;  % s
% TurningRadius = 0.5  % km
% [Angle_Left, Angle_Right] = UAVForwardDirection_TurningRadius(UAV_Motion_Status, UAV_Speed, StepTime, TurningRadius)
% Arc_length = UAV_Speed * StepTime;
Arc_Angel = Arc_length/(TurningRadius*2*pi); 
TurnningAngle = Arc_Angel/2;% 前行方向的左右邊界(指北為零,順時針為正,范圍是[0, 2*pi)
% Angle_Left, Angle_Right  
Temp_Angle_Left = UAV_Motion_Status(1,3)*pi/180 - TurnningAngle + 2*pi;
Angle_Left = Temp_Angle_Left - fix(Temp_Angle_Left/(2*pi))*(2*pi);Temp_Angle_Right = UAV_Motion_Status(1,3)*pi/180 + TurnningAngle + 2*pi;
Angle_Right = Temp_Angle_Right - fix(Temp_Angle_Left/(2*pi))*(2*pi);

二、兩個點的相對方位角

function [azimuth, dist ] = GetAzimuth_2points(point1, point2)

功能:求Point1相對與Point2的相對方位和距離
% point的格式:[x,y]
% azimuth: 指北方向為0度,然后順時針為正,直到360度,保留1位小數

function [azimuth, dist ] = GetAzimuth_2points(point1, point2)
%% 功能:求Point1相對與Point2的相對方位和距離
% point的格式:[x,y]
% azimuth: 指北方向為0度,然后順時針為正,直到360度,保留1位小數
% point1 = [-1 1];
% point2 = [1 -1];
% [azimuth, dist ] = GetAzimuth_2points(point1, point2)P_local = [point1(1)-point2(1) point1(2)-point2(2)];dist = sqrt(P_local(1)^2+P_local(2)^2);sin_value = P_local(2)/dist;
cos_value = P_local(1)/dist;if (P_local(1)>=0) && (P_local(2)>=0)  % 第一象限azimuth = 90-asin(P_local(2)/dist) * 180/pi;return;
end
if (P_local(1)<=0) && (P_local(2)>=0)   % 第二象限azimuth = asin(P_local(2)/dist)*180/pi+270 return;
end
if (P_local(1)<=0) && (P_local(2)<=0)   % 第三象限azimuth = 180 + asin(-P_local(1)/dist) * 180 / pi;return;
end
if (P_local(1)>=0) && (P_local(2)<=0)   % 第四象限azimuth = 180 - asin(P_local(1)/dist) * 180 / pi;return;
end

三、根據歷史軌跡,預測其軌跡

function BlueUAV_Location_next =Forecast_BlueUAV_Location(BlueUAV_Trajectory,BlueUAV_speed,N)

(預防后面求多個位置的根據要求,計算% Output: BlueUAV_Location_next(x,y)% function: 基于BlueUAV的軌跡,預測其下一時刻的位置

function BlueUAV_Location_next = Forecast_BlueUAV_Location(BlueUAV_Trajectory,BlueUAV_speed,N)
% BlueUAV_Trajectory:[x,y] * N
% BlueUAV_speed: 0.3km/s
% N: N個步長。(預防后面求多個位置的根據要求,計算
% Output: BlueUAV_Location_next(x,y)
% function: 基于BlueUAV的軌跡,預測其下一時刻的位置
% Steps:
% 1 獲取BlueUAV_Trajectory的維度;
% 2 如果維度為1,直接向右方(默認的飛行方向),出行一個步長;
% 3 如果維度為2,向外延伸一個步長;
% 4 如果維度大于或等于3,向外延伸,取得方向,再延伸一個步長;
% Author: ruogu7(380545156)
% Date: sep, 21th.
% Latest update: sep, 21th.
% Example:
% BlueUAV_Trajectory = [ 2  3 ; 3  4 ; 4  5; 5  6;]  
% BlueUAV_speed = 0.25
% N  = 1;
% BlueUAV_Location_next = Forecast_BlueUAV_Location(BlueUAV_Trajectory,BlueUAV_speed,N)
% 
% import math.*Num_Points_BlueUAV_Trajectory = size(BlueUAV_Trajectory,1)
BlueUAV_Trajectory
if Num_Points_BlueUAV_Trajectory == 1% xBlueUAV_Location_next(1,1) =  BlueUAV_Trajectory(1,1) + BlueUAV_speed * N;% yBlueUAV_Location_next(1,2) =  BlueUAV_Trajectory(1,2);return;
end 
if Num_Points_BlueUAV_Trajectory == 2% 確定方向[azimuth_BlueUAV, dist ] = GetAzimuth_2points(BlueUAV_Trajectory(2,:), BlueUAV_Trajectory(1,:))% xBlueUAV_Location_next(1,1) =  BlueUAV_Trajectory(end,1) + BlueUAV_speed * N * cos((360-(azimuth_BlueUAV-90))*pi/180);% yBlueUAV_Location_next(1,2) =  BlueUAV_Trajectory(end,2) + BlueUAV_speed * N * sin((360-(azimuth_BlueUAV-90))*pi/180);return;
end % 當軌跡點的數量等于3
if Num_Points_BlueUAV_Trajectory == 3% 確定方向% 連續兩個中點的相對方位,作為整體方位。Front_centor = [(BlueUAV_Trajectory(1,1) + BlueUAV_Trajectory(2,1))/2 (BlueUAV_Trajectory(1,2) + BlueUAV_Trajectory(2,2))/2]Back_centor = [(BlueUAV_Trajectory(2,1) + BlueUAV_Trajectory(3,1))/2 (BlueUAV_Trajectory(2,2) + BlueUAV_Trajectory(3,2))/2][azimuth_Red, dist ] = GetAzimuth_2points(Back_centor, Front_centor)% import math.*% x = 1:100;% y = -0.3*x + 2*randn(1,100);% [p,S] = polyfit(x,y,1);% azimuth_BlueUAV = math.atan(p(1))% xBlueUAV_Location_next(1,1) =  BlueUAV_Trajectory(end,1) + BlueUAV_speed * N * cos((360-(azimuth_Red-90))*pi/180);% yBlueUAV_Location_next(1,2) =  BlueUAV_Trajectory(end,2) + BlueUAV_speed * N * sin((360-(azimuth_Red-90))*pi/180);return;
end % 當軌跡點的數量多于3,則基于最后4個軌跡點,進行線性回歸
if Num_Points_BlueUAV_Trajectory > 3% 確定方向% 連續兩個中點的相對方位,作為整體方位。Front_centor = [(BlueUAV_Trajectory(1,1) + BlueUAV_Trajectory(2,1))/2 (BlueUAV_Trajectory(1,2) + BlueUAV_Trajectory(2,2))/2]Back_centor = [(BlueUAV_Trajectory(3,1) + BlueUAV_Trajectory(4,1))/2 (BlueUAV_Trajectory(3,2) + BlueUAV_Trajectory(4,2))/2][azimuth_Red, dist ] = GetAzimuth_2points(Back_centor, Front_centor)% import math.*% x = 1:100;% y = -0.3*x + 2*randn(1,100);% [p,S] = polyfit(x,y,1);% azimuth_BlueUAV = math.atan(p(1))% xBlueUAV_Location_next(1,1) =  BlueUAV_Trajectory(end,1) + BlueUAV_speed * N * cos((360-(azimuth_Red-90))*pi/180);% yBlueUAV_Location_next(1,2) =  BlueUAV_Trajectory(end,2) + BlueUAV_speed * N * sin((360-(azimuth_Red-90))*pi/180);return;
end 

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/538149.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538149.shtml
英文地址,請注明出處:http://en.pswp.cn/news/538149.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用durid的ConfigFilter對數據庫密碼加密

原文連接&#xff1a;http://blog.csdn.net/aixiaoyang168/article/details/49930513 ----------------------------------------------------------------------- 對于大部分程序員來說&#xff0c;數據庫的信息&#xff0c;如用戶名&#xff0c;密碼等信息一般都寫到配置文件…

序(不知道是什么時候的模擬題)

序 【問題背景】 zhx 給他的妹子們排序。 【問題描述】 \(zhx\) 有 \(N\) 個妹子&#xff0c; 他對第 \(i\) 個妹子的好感度為\(a_i\), 且所有\(a_i\),兩兩不相等。 現在 \(N\) 個妹子隨意站成一排&#xff0c; 他要將她們根據好感度從小到大排序。 他使用的是冒泡排序算法&…

html寫用戶導入,用戶基本信息錄入.html

&#xfeff;用戶基本信息錄入$axure.utils.getTransparentGifPath function() { return resources/images/transparent.gif; };$axure.utils.getOtherPath function() { return resources/Other.html; };$axure.utils.getReloadPath function() { return resources/reload.…

adg oracle 架構_技術棧數據中心有了ADG架構就高枕無憂了?你還需要做這一步!...

技術棧數據中心有了ADG架構&#xff0c;就高枕無憂了&#xff1f;你還需要做這一步&#xff01;如果把數據中心建設比喻成西天取經&#xff0c;那旅途上的九九八十一難就是我們不得不躲閃、跨越、攻堅的堡壘。即日起&#xff0c;希嘉推出“技術棧”板塊&#xff0c;集結數據治理…

String length must be a multiple of four.

今天在整理2013年的工作時的一個項目&#xff0c;修改了數據庫連接&#xff0c;初始化數據庫&#xff0c;部署運行報錯&#xff0c;主要原因是阿里巴巴druid報錯&#xff0c;導致DataSource初始化失敗。 druid報錯日志&#xff1a; Caused by: java.lang.IllegalArgumentExce…

論文筆記:Person Re-identification with Deep Similarity-Guided Graph Neural Network

Person Re-identification with Deep Similarity-Guided Graph Neural Network 2018-07-27 17:41:45 Paper&#xff1a; https://128.84.21.199/pdf/1807.09975.pdf 本文將 Graph Neural Network (GNN) 應用到 person re-ID 的任務中&#xff0c;用于 model 不同 prob-gallery …

CGLib動態代理原理及實現

原文連接&#xff1a;http://songbo-mail-126-com.iteye.com/blog/968792 ------------------------------------------------------------------------ JDK實現動態代理需要實現類通過接口定義業務方法&#xff0c;對于沒有接口的類&#xff0c;如何實現動態代理呢&#xff…

微型計算機的硬件組成中ssd硬盤通常是指,2015年計算機一級msoffice選擇題121道及答案...

31、通常&#xff0c;在微機中標明的P4或奔騰4是指( D )A、產品型號B、主頻C、微機名稱D、微處理器型號32、以平均無故障時間(MTBF)&#xff0c;用于描述計算機的( A )A、可靠性B、可維護性C、性能價格比D、以上答案都不對33、以平均修復時間(MTTR)&#xff0c;用于描述計算機的…

雙曲函數奇偶性_基本初等函數之奇偶性(強基系列42)

基本初等函數之奇偶性(強基系列4-2)開卷有益初等函數是由冪函數(power function)、指數函數(exponential function)、對數函數(logarithmic function)、三角函數(trigonometric function)、反三角函數(inverse trigonometric function)與常數經過有限次的有理運算(加、減、乘、…

Caused by: Parent package is not defined: json-default - [unknown location]

原文連接&#xff1a;http://blog.csdn.net/bebested/article/details/52627890 ------------------------------------------------------------------------------------------- Unable to load configuration. - [unknown location] at com.opensymphony.xwork2.config.Co…

【window】git安裝教程

相關鏈接&#xff1a;https://blog.csdn.net/nly19900820/article/details/73379854 作者&#xff1a;smile.轉角 QQ&#xff1a;493177502轉載于:https://www.cnblogs.com/websmile/p/9384060.html

html文件打開系統錯誤,win7打開word提示“無法打開文件Normal因為內容有錯誤”的兩種解決方法...

win7系統打開Word的時候&#xff0c;彈出提示“無法打開文件Normal.dotm,因為內容有錯誤”&#xff0c;為什么會出現錯誤提示呢&#xff1f;小編就按照錯誤提示尋找文件&#xff0c;最后發現是Word自動生成的模板Normal出錯了&#xff0c;知道故障原因后&#xff0c;接下去教程…

超鏈接跳轉到action使用哪個方法_管道疏通劑哪個牌子好 管道疏通機使用方法有哪些...

平時大家不用的水或者一些物品&#xff0c;在處理的時候應該都會倒到下水道之中&#xff0c;而下水道確實具備著這一種效果&#xff0c;但很多時候&#xff0c;下水道往往會因為口比較小&#xff0c;而被一些物品所堵塞&#xff0c;這樣一來&#xff0c;影響上其實會非常大&…

linux學習-將seafile啟動腳本設置為開機啟動服務

有時候&#xff0c;我們安裝的linux軟件和程序不是通過yum安裝&#xff0c;而是通過編譯或者其他方式安裝。有時需要將程序設置為服務&#xff0c;達到開機啟動的目的。我在公有云的與服務器上搭建了seafile網盤&#xff0c;當我重啟云服務器的時候&#xff0c;seafile的程序不…

物理借助傳感器用計算機測速度,用打點計時器測速度教案_物理_教學設計_人教版...

第四節、實驗&#xff1a;用打點計時器測速度西安中學&#xff1a;張衛崗郵編&#xff1a;710021【教材版本】人民教育出版社【設計理念】實驗是物理學習的基礎&#xff0c;通過自主探究、問題研究&#xff0c;結合速度概念的科學認識&#xff0c;體驗科學研究與生活實際的聯系…

Failed to load or instantiate TagLibraryValidator class: org.apache.taglibs.standard.tlv.JstlFmtTLV

原因&#xff1a; 1、缺包。如缺 standard-1.1.2.jar servlet-api-2.4.jar jstl-1.1.2.jar 2、包重復。最可能是 servlet-api-2.4.jar jsp-api-2.0.jar 與Tomcat lib 下的沖突。刪掉 web-inf/lib下的

中文整合包_案例 | 美研市場營銷和整合營銷專業1620Fall 580+申請實例(含MS+PHD)...

關注“留學壹周刊”&#xff0c;回復專業名稱&#xff0c;如“金融”&#xff0c;可以自由查詢相關資料介紹本篇微信主要包括如下內容&#xff1a;580美研市場營銷和整合營銷專業16-20Fall申請實例&#xff0c;包括6個文件&#xff1a;1、MS項目申請實例2、PHD項目申請實例3、成…

關于HttpClient上傳中文亂碼的解決辦法

使用過HttpClient的人都知道可以通過addTextBody方法來添加要上傳的文本信息&#xff0c;但是&#xff0c;如果要上傳中文的話&#xff0c;或還有中文名稱的文件會出現亂碼的問題&#xff0c;解決辦法其實很簡單&#xff1a; 第一步&#xff1a;設置MultipartEntityBuilder的編…

寫在開頭

今年項目組任務超量完成&#xff0c;到過年都可以輕松了。 今年開發了一個基于dubbo的分布式系統&#xff0c;高并發&#xff0c;大數據&#xff0c;數據分析建模。目前熱門的都用上了。 近期決定把我2013年時一個單體應用架構的項目改造成基于dubbo的分布式系統。 該項目是…

學計算機的讓修電腦搞笑段子精選,搞笑段子:阿姨,我是真的就來給他們修電腦的!...

搞笑段子&#xff1a;阿姨&#xff0c;我是真的就來給他們修電腦的修電腦在上大學的時間&#xff0c;經常用修電腦的名號進入到女生宿舍之中&#xff0c;當時的宿管阿姨人特別好&#xff0c;稍微的問一下就讓我進去了。有一天&#xff0c;我剛要進去的時間&#xff0c;她拉著我…