【蜂群无人机】时间与角度约束下的协同攻击算法(Matlab实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

在无人机蜂群作战里,协同攻击的核心难题在于,如何让多架无人机在有限飞行时间内,以最优攻击角度同步抵达目标,达成高效打击。传统方法往往因环境复杂、约束条件繁多而效果欠佳,而协同攻击算法正是为解决这一问题应运而生。它通过智能规划与控制,平衡时间、角度、路径等多重约束,让蜂群形成强大的 “群体合力”。

二、核心原理

协同攻击算法的运作逻辑可拆分为三个关键环节:

 统一目标引导

设置 “虚拟引导点”,也就是位于目标区域内的动态虚拟坐标,让所有无人机都以该点为共同参照。引导点的运动轨迹经过预先规划,能确保无人机群在飞行过程中始终保持协同节奏,防止个体行动脱节。

 动态路径规划

结合 “人工势场法” 构建虚拟力场,目标和引导点产生 “吸引力”,推动无人机靠近;障碍物产生 “排斥力”,引导无人机规避。无人机在力场中自主调整方向,既保证向目标移动,又能灵活绕开障碍,实现路径最优化。

 约束精准控制

借助模型预测控制(MPC)技术,算法实时预测无人机的未来飞行状态,如位置、速度、角度等,并依据目标时间和攻击角度要求,动态调整飞行参数。比如通过加速或减速确保所有无人机 “同时抵达”,通过微调姿态保证攻击角度符合战术需求。

三、核心价值

该算法突破了单无人机作战的局限性,让蜂群在复杂战场环境中既能 “抱团行动”,又能 “各尽其责”。它显著提升了多目标打击的精准度效率,增强了蜂群的抗干扰能力生存能力和任务成功率,为无人机集群作战提供了核心技术支撑,是实现蜂群战术规模化应用效能最大化的关键保障,更是提升作战体系整体威慑力实战能力的重要基石。

📚2 运行结果

主函数部分代码:

clc
clear all
close all

%%
figure
axis([0 50 0 50 0 10]);
axis equal
xlabel('x/(m)')
ylabel('y/(m)')
zlabel('z/(m)')
view(3)
grid on

%上色选择
rng(1)
all_colors = rand(6,3);
%%
%。。。。。。。数据记录。。。。。。
bag=zeros(6,300);
%%
%。。。。。。。数据记录。。。。。。
bag2=zeros(6,300);
%%
%。。。。。。。初始点-终止点。。。。。。。。
begin=[5,0];
over=[25,45];
%%
%。。。。。。。初始点-终止点。。。。。。。。
begin2=[40,0];
% over=[25,45];
%%
%。。。。。。。虚拟导引点。。。。。
r_gui=6;  %虚拟导引半径guide
theta_gui=-0.75*pi;   %虚拟导引点的夹角
v_target=0; %目标运动速度
over_gui=over+r_gui*[cos(theta_gui),sin(theta_gui)];  %给虚拟导引点赋值
%%
%。。。。。。。虚拟导引点。。。。。
% r_gui=5;  %虚拟导引半径guide
theta_gui2=-0.25*pi;   %虚拟导引点的夹角
% v_target=0; %目标运动速度
over_gui2=over+r_gui*[cos(theta_gui2),sin(theta_gui2)];  %给虚拟导引点赋值

%%
%。。。。。。。障碍物位置。。。。。。。。
obstacle=[15 35 10 24 40 20 21 35; ...
    15 15 30 30 25 15 30 30];
%%
%。。。。。。。是否可视化无人机。。。。。。。
vision_uav=1;
%%
%。。。。。。。是否可视化无人机。。。。。。。
vision_uav2=1;
%%
%。。。。。。。协同标志位。。。。。。。。
flag_co=0;  %cooperate
%%
%。。。。。。。协同标志位。。。。。。。。
flag_co2=0;  %cooperate
%%
accu=0;
accu2=0;
accu_time=0;
%%
%。。。。。。。初始化参数。。。。。。。。。。。
v=3;    %每次迭代的速度m/s
delta_t=0.1;    %时间间隔
t_end=200;  %最大仿真时间
iters=1;    %迭代次数初始化
%%
curr=[begin';0]; %当前位置
curr_previous=curr;    %上一刻位置
%%
curr2=[begin2';0]; %当前位置
curr_previous2=curr2;    %上一刻位置
%% 
testR=v*delta_t;   %测试圆的半径
Q_star=5;   %障碍物涉及的半径

num_point=36;       %周围的势能点个数
testPoint=zeros(num_point,2);   %周围8个点的坐标数组(x,y)
testOut=zeros(1,num_point); %周围8个点的势能??
step_predict=10; %预测步长
%%
pos_predict=zeros(step_predict,3);  %预测域内的位置数组(x,y,z),z信息固定
%%
pos_predict2=zeros(step_predict,3);  %预测域内的位置数组(x,y,z),z信息固定

%%
%。。。。。。。预测点加上z轴信息。。。。。。。。
h=2;
pos_predict(:,3)=h; %无人机飞行定高为(m)
%%
%。。。。。。。预测点加上z轴信息。。。。。。。。
h2=4;
pos_predict2(:,3)=h2; %无人机飞行定高为(m)
%%
%。。。。。。。画无人机所需的参数。。。。。。。。。
roll_max=5;
pitch_max=5;
%%
U_k=zeros(3,1);
%%
U_k2=zeros(3,1);
%%
%。。。。。。。。画初始点。。。。。。。。
hold on;
plot3(begin(1),begin(2),0,'*b','MarkerSize',10);
%%
plot3(begin2(1),begin2(2),0,'*b','MarkerSize',10);
%%
%。。。。。。。画目标的圆形范围。。。。。。。。
plot_target(over(1),over(2),h,r_gui)
%%
%。。。。。。。画目标的圆形范围。。。。。。。。
plot_target(over(1),over(2),h2,r_gui)

%% 
%。。。。。。。。。MPC初始参数。。。。。。。。。。。
A=[zeros(3),eye(3);
    zeros(3),zeros(3)]*delta_t+ ...
    eye(6);   %状态矩阵A初始条件x_k,权重矩阵Q,R及终端误差矩阵F为输入

B=[0.5*eye(3)*delta_t^2;eye(3)*delta_t];    %输入矩阵B

N=step_predict;    %预测长度
%%
x_k=[begin(1);begin(2);0;
    0*ones(3,1)];   %当前状态,初始化

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]孙绍芳,鲁亚飞,邵帅,等.战术侦察无人机装备应用发展综述[J/OL].航空工程进展,1-15[2025-07-20].http://kns.cnki.net/kcms/detail/61.1479.V.20250717.1455.002.html.

[2]陈守阔,陈景豪,田宇翔,等.集成智能AI的无人机巡检任务规划算法[J].东北电力技术,2025,46(07):18-22.

🌈4 Matlab代码实现

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值