无人机集群对抗,是自动驾驶中路径规划的新问题,并且连续两年出现在最近的中国大学生数学建模竞赛中。可见,这是一个急需解决的数学问题(体现了官方的军事战略意志),同时,还没有成熟解决方案的问题。

本人在自动驾驶无人艇领域也会碰到类似的路径规划的问题。海军装备每年组织的海上竞赛中,多无人艇编队的拦截、追踪、护航、穿插,都是军用无人艇的必考项目。

本文主要根据前期《无人机集群协同对抗仿真案例(2020数学建模MCM试题)》一题的工作研究,总结了一些基本方法。同时,这些方法,将会收录到无人机集群协同对抗工具包中。

若谷:Matlab仿真----无人机集群协同对抗仿真案例(2020数学建模MCM试题)​zhuanlan.zhihu.com

有兴趣的朋友,可以加微信,继续沟通。

若谷:《自动驾驶行业交流群》及公约​zhuanlan.zhihu.com

零、无人机集群对抗问题的关键问题

无人机集群对抗是未来无人机作战的重要模式,它是一群无人机对另一群无人机进行拦截而形成的空中协作式的缠斗,对抗中无人机具有自组织、自适应特点和拟人思维属性,通过感知环境,对周围态势进行判断,依据一定的行为规则,采取攻击、避让、分散、集中、协作、援助等有利策略,使得在整体上涌现出集群对抗系统的动态特性。

本文及后面一篇文章,将会重点分享无人机集群对抗仿真中的数学建模方法。

  1. 无人机集群协同对抗演化过程机理及其表述

由于集群对抗中信息的多元化和不完全、不确定性,对抗系统是一个复杂的动态随机过程,空战对抗态势随着时空不断演化,每个无人机作为一个智能体必须依据不断变化的态势并依据一定的准则调整自己的策略,进行己方个体之间的合作、与对方的博弈。因此,在充分分析无人机集群对抗演化过程特点及其内涵的基础上,理解无人机集群对抗的非线性动态过程演化机,利用系统动力学和复杂系统理论建立各种因素的相互作用和信息的传递关系的网络拓扑架构,利于对无人机集群对抗过程的定量和定性分析。

2. 无人机自适应自主决策对抗行为

集群对抗中,无人机个体是直接动作发出和执行者,无人机个体不断与环境进行交互并相互作用,促使对抗过程不断演化。因此,集群对抗最终是要依赖于无人机的对抗规则,即无人机依据敌方态势、友机态势及自身飞行状态、武器状况、健康情况等因素,采取某种机动和攻击策略,如攻击敌机、威胁回避、支援友机、战术协同,使在最大化对敌杀伤、对敌态势、瓦解敌方意图和最小化自身损失等方面的综合效益取得最大化。

3. 无人机集群智能控制方法

暂时略

4. 无人机集群探测与识别

复杂而多变的集群对抗环境具有极大的状态不确定性和极强的时间约束,对于敌我双方大规模无人机个体和集群进行精确地探测和识别是对抗行为成功与否的先决条件。

5.无人机集群对抗态势评估

态势评估是对抗决策的依据,由于集群对抗威胁可以来自任意方向,数量多,友机与敌方飞机相互缠绕,信息量大,且存在不完全、不确定性,态势评估比单机对抗情况复杂的多。这就需要集群中每个无人机利用其对周围环境的感知信息和接收到的邻近友机传来的信息,根据所获得的综合数据信息进行数据挖掘,分析理解敌方的作战意图、战术战法。

6.无人机集群通信技术

暂时略

根据海军装备技术的发展纲要,军用低轨通信卫星,是十五规划的重点。

一、基于拐弯半径限制的前进方向角度

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

% Function: 根据过去一步的运动方向(历史轨迹,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: 根据过去一步的运动方向(历史轨迹,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 

汽车和山羊问题matlab仿真_Matlab----无人机集群对抗中的关键问题和仿真平台(开发中)案例...相关推荐

  1. 智能集群理论优化控制_无人机集群对抗研究的关键问题

    1)无人机集群协同对抗演化过程机理及其表述.由于集群对抗中信息的多元化和不完全.不确定性,对抗系统是一个复杂的动态随机过程,空战对抗态势随着时空不断演化,每个无人机作为一个智能体必须依据不断变化的态势 ...

  2. 三维空间无人机集群编队控制,避障,目标追踪

    无人机集群编队控制算法,二维,三维空间MATALB仿真 引言 无人机集群编队 无人机避障 无人机目标追踪 引言 本人研究生期间,主要研究无人机集群编队,目标追踪,避障,路径规划等,参考了大量论文,也走 ...

  3. 无人机集群控制代码推荐

    无人机集群控制代码推荐,matlab平台 无人机集群控制Gábor Vásárhelyi模型 无人机集群控制matlab代码链接 无人机集群控制Gábor Vásárhelyi模型 [1] V. Gá ...

  4. 小型固定翼无人机集群仿真演示平台

    简介 一个小型固定翼无人机集群仿真演示平台,使用matlab和simulink搭建.可以被用于验证协同控制算法或者运动规划算法的可行性.平台本身具有可扩展性,可以增加到10架,20架甚至更多的无人机. ...

  5. 猿创征文 | 一文看懂!无人机集群半物理仿真系统的7大模块拆解,超详细!

    在无人机集群研究领域,仿真验证技术可以高效且低廉的对算法理论,极大的缩短研制周期,降低研制成本.全数字仿真技术和半物理仿真技术是仿真验证技术的两种主要实现方式,本篇带你快速了解无人机集群半物理仿真系统 ...

  6. 无人机集群自组织搜索仿真模型设计与实现

    摘要:城市威胁背景下无人机集群自组织搜索移动目标问题,是无人机集群作战应用的一个重要发展方向.采用基于Agent的复杂系统建模仿真工具,构建了无人机集群搜索仿真模型框架,设计实现了无人机集群自组织搜索 ...

  7. 无人机集群作战仿真研究现状及在城市作战中的应用前景(附最新无人集群项目内容)

    随着人工智能.分布式系统.组网通信等技术的推进,以及机载硬件水平的显著提升,无人机集群受到以中美为首的军事强国高度关注和大力发展.无人机集群也被认为能够颠覆未来战场形势的一种作战手段,因此军事强国均在 ...

  8. 核心案例|国防科技大学虚实结合的无人机集群系统

    项目名称:虚实结合的无人机集群系统 场       地:室内 关  键  词:无人机.集群编队.协同控制 核心案例|国防科技大学虚实结合的无人机集群系统 01 ■  项目背景 本项目通过多无人机仿真模 ...

  9. 这四个问题处理好,无人机集群编队研究会有新突破

    已剪辑自: https://zhuanlan.zhihu.com/p/164849525 无人机.机器人编队或者是集群控制,说到底,虽然都是多智能体的控制,唯一有区别的在于空间或者平面,但随之带来的问 ...

最新文章

  1. dw8与mysql的连接,VS2019连接mysql8.0数据库的教程图文详解
  2. win10定时关机c语言,Win10系统怎么定时关机?Windows10设置定时关机的两种方法
  3. rust油桶用什么打_选什么样的柜子才好用?别再选定制柜了,还是老手艺人打的柜子好...
  4. GDCM:提取DICOM文件数据元素值字段的测试程序
  5. Mysql的drop/truncate/delete
  6. 空间谱专题07:干涉仪仿真思路
  7. Unity罗技方向盘接入
  8. 给予redis和zookeeper的分布式锁
  9. C++模板实现,支持多维,安全数组的完整代码
  10. 解决eclipse编辑jsp、js文件时,经常出现卡死的问题
  11. Julia 下载 安装 juno 开发环境搭建
  12. linux 模拟windows7,Linux游戏:原生、Wine模拟对比Windows 7
  13. MPB:猪胃肠道内容物和黏膜样品采集与微生物组成分析
  14. 文本分类入门(一)文本分类问题的定义
  15. .xin 域名信用验证问题集锦
  16. 从说话人识别demo开始学习kaldi--(6)训练UBM和PLDA
  17. 我敢说,没人能超过这份产品经理推荐书单(40本)!
  18. python百度地图标注_利用python和百度地图API实现数据地图标注
  19. 基于Python(Django)+MySQL实现(Web)大学生信用评价系统分析与设计【100010400】
  20. 【Nmap使用详解】黑客渗透工具Nmap下载安装/实战使用,保姆级Namp教程

热门文章

  1. 毕昇 JDK:“传奇再现”华为如何打造 ARM 上最好用的 JDK?
  2. Java操作HBase
  3. C语言(CED)输入一个任意长度的正整数,将该数逆序输出。
  4. java中图片文件的传输及显示(Socket以及ServerSocket演示)
  5. grafana zabbix 模板_Grafana + Zabbix 监控系统搭建
  6. 工作汇报ppt案例_【赠书】开工大吉!今年一定要干过写PPT的!
  7. Mysql 启动失败没日志,MySQL Server 5.7将无法启动,并且未填充错误日志
  8. python中的常量可以修改吗_深入理解Python变量与常量
  9. linux课堂笔记(7)
  10. Linux 服务器停止当前运行的程序,实验,代码