汽车和山羊问题matlab仿真_Matlab----无人机集群对抗中的关键问题和仿真平台(开发中)案例...
無人機集群對抗,是自動駕駛中路徑規(guī)劃的新問題,并且連續(xù)兩年出現(xiàn)在最近的中國大學生數(shù)學建模競賽中。可見,這是一個急需解決的數(shù)學問題(體現(xiàn)了官方的軍事戰(zhàn)略意志),同時,還沒有成熟解決方案的問題。
本人在自動駕駛無人艇領(lǐng)域也會碰到類似的路徑規(guī)劃的問題。海軍裝備每年組織的海上競賽中,多無人艇編隊的攔截、追蹤、護航、穿插,都是軍用無人艇的必考項目。
本文主要根據(jù)前期《無人機集群協(xié)同對抗仿真案例(2020數(shù)學建模MCM試題)》一題的工作研究,總結(jié)了一些基本方法。同時,這些方法,將會收錄到無人機集群協(xié)同對抗工具包中。
若谷:Matlab仿真----無人機集群協(xié)同對抗仿真案例(2020數(shù)學建模MCM試題)?zhuanlan.zhihu.com有興趣的朋友,可以加微信,繼續(xù)溝通。
若谷:《自動駕駛行業(yè)交流群》及公約?zhuanlan.zhihu.com零、無人機集群對抗問題的關(guān)鍵問題
無人機集群對抗是未來無人機作戰(zhàn)的重要模式,它是一群無人機對另一群無人機進行攔截而形成的空中協(xié)作式的纏斗,對抗中無人機具有自組織、自適應(yīng)特點和擬人思維屬性,通過感知環(huán)境,對周圍態(tài)勢進行判斷,依據(jù)一定的行為規(guī)則,采取攻擊、避讓、分散、集中、協(xié)作、援助等有利策略,使得在整體上涌現(xiàn)出集群對抗系統(tǒng)的動態(tài)特性。
本文及后面一篇文章,將會重點分享無人機集群對抗仿真中的數(shù)學建模方法。
由于集群對抗中信息的多元化和不完全、不確定性,對抗系統(tǒng)是一個復雜的動態(tài)隨機過程,空戰(zhàn)對抗態(tài)勢隨著時空不斷演化,每個無人機作為一個智能體必須依據(jù)不斷變化的態(tài)勢并依據(jù)一定的準則調(diào)整自己的策略,進行己方個體之間的合作、與對方的博弈。因此,在充分分析無人機集群對抗演化過程特點及其內(nèi)涵的基礎(chǔ)上,理解無人機集群對抗的非線性動態(tài)過程演化機,利用系統(tǒng)動力學和復雜系統(tǒng)理論建立各種因素的相互作用和信息的傳遞關(guān)系的網(wǎng)絡(luò)拓撲架構(gòu),利于對無人機集群對抗過程的定量和定性分析。
2. 無人機自適應(yīng)自主決策對抗行為
集群對抗中,無人機個體是直接動作發(fā)出和執(zhí)行者,無人機個體不斷與環(huán)境進行交互并相互作用,促使對抗過程不斷演化。因此,集群對抗最終是要依賴于無人機的對抗規(guī)則,即無人機依據(jù)敵方態(tài)勢、友機態(tài)勢及自身飛行狀態(tài)、武器狀況、健康情況等因素,采取某種機動和攻擊策略,如攻擊敵機、威脅回避、支援友機、戰(zhàn)術(shù)協(xié)同,使在最大化對敵殺傷、對敵態(tài)勢、瓦解敵方意圖和最小化自身損失等方面的綜合效益取得最大化。
3. 無人機集群智能控制方法
暫時略
4. 無人機集群探測與識別
復雜而多變的集群對抗環(huán)境具有極大的狀態(tài)不確定性和極強的時間約束,對于敵我雙方大規(guī)模無人機個體和集群進行精確地探測和識別是對抗行為成功與否的先決條件。
5.無人機集群對抗態(tài)勢評估
態(tài)勢評估是對抗決策的依據(jù),由于集群對抗威脅可以來自任意方向,數(shù)量多,友機與敵方飛機相互纏繞,信息量大,且存在不完全、不確定性,態(tài)勢評估比單機對抗情況復雜的多。這就需要集群中每個無人機利用其對周圍環(huán)境的感知信息和接收到的鄰近友機傳來的信息,根據(jù)所獲得的綜合數(shù)據(jù)信息進行數(shù)據(jù)挖掘,分析理解敵方的作戰(zhàn)意圖、戰(zhàn)術(shù)戰(zhàn)法。
6.無人機集群通信技術(shù)
暫時略
根據(jù)海軍裝備技術(shù)的發(fā)展綱要,軍用低軌通信衛(wèi)星,是十五規(guī)劃的重點。
一、基于拐彎半徑限制的前進方向角度
function [Angle_Left, Angle_Right] = UAVForwardDirection_TurningRadius(UAV_Motion_Status, UAV_Speed, StepTime, TurningRadius)
% Function: 根據(jù)過去一步的運動方向(歷史軌跡,x,y,Angle_Motion),基于拐彎半徑的限制,以及步長和飛行速度,計算下一步的運動方向范圍。
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: 根據(jù)過去一步的運動方向(歷史軌跡,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位小數(shù)
三、根據(jù)歷史軌跡,預測其軌跡
function BlueUAV_Location_next =Forecast_BlueUAV_Location(BlueUAV_Trajectory,BlueUAV_speed,N)
(預防后面求多個位置的根據(jù)要求,計算% 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個步長。(預防后面求多個位置的根據(jù)要求,計算 % 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 % 當軌跡點的數(shù)量等于3 if Num_Points_BlueUAV_Trajectory == 3% 確定方向% 連續(xù)兩個中點的相對方位,作為整體方位。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 % 當軌跡點的數(shù)量多于3,則基于最后4個軌跡點,進行線性回歸 if Num_Points_BlueUAV_Trajectory > 3% 確定方向% 連續(xù)兩個中點的相對方位,作為整體方位。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總結(jié)
以上是生活随笔為你收集整理的汽车和山羊问题matlab仿真_Matlab----无人机集群对抗中的关键问题和仿真平台(开发中)案例...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ajax 传递arraybuffer,j
- 下一篇: 计算机网络本直通线的制作方法,电脑网络: