【无人机】基于Matlab模拟无人机群跟踪固定目标

简介: 【无人机】基于Matlab模拟无人机群跟踪固定目标

 ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法  神经网络预测雷达通信 无线传感器

信号处理图像处理路径规划元胞自动机无人机

⛄ 内容介绍

最初,一架无人机盘旋飞行,试图找到一朵云,一旦找到它,它就会调用更多的无人机绕着云飞行,并跟踪对应于污染物浓度 1.0 的云的边界。目标是让无人机在云层周围均匀分布。每架无人机可以飞行 30 分钟,之后需要返回基地 (0,0) 充电。

思路:为了在云周围均匀分布,无人机计算云的凸包(基于采样点)并根据其他无人机的位置加速/减速。如果云的周长变得太大,就会调用新的无人机绕云飞行。 避免碰撞规则:为了实现这一点,将每架无人机建模为一个电子,每架无人机对所有其他无人机(足够接近)施加排斥力。

⛄ 部分代码

function sim_start

   % load cloud data

   % choose a scenario

   % load 'cloud1.mat'

   close all;

   load 'cloud1.mat'

   % time and time step

   t = 0;

   dt = 1;

   last_launch = 1; %time when the last UAV was launched

   % open new figure window

   figure

   hold on % so each plot doesn't wipte the predecessor

   

   %create initial UAVs

   id_count = 1; %id for the next spawned UAV

   num_uavs = 1; %number of active UAVs

   uav(num_uavs,1) = UAVsim;

   ang = rand*2*pi;

   uav(1) = UAVsim(0,0,ang,1);%x,y,ang,id

   

   

   old_msg = zeros(num_uavs,5); %keeps the messages that have to be processed for next iterration

   spawn_new_uav = false; %if this becomes true, launch a new uav

   

   for kk=1:3600

       new_msg = zeros(num_uavs,5); %create an empty matrix for the new messages

       t = t + dt;

       

       spawn_new_uav = false;

       i=1;

       while i<=num_uavs

           [x,y,p,id,new_uav] = uav(floor(i)).step(dt,t,cloud,old_msg);

           new_msg(i,1:5) = [x,y,p,id,new_uav]; %get the message from the current UAV

           if (new_uav)

               spawn_new_uav = true;

           end

           if uav(i).state == 5

               %if UAV ran out of battery

               uav(i)=[];%remove the current UAV

               i=i-1;

               num_uavs = num_uavs-1;

           end

           i=i+1;

       end

       if num_uavs<1

           %sanity check

           return;

       end

       

       %plot the UAVs and the cloud

       cla

       title(sprintf('t=%.1f secs pos=(%.1f, %.1f)  Concentration=%.2f',t, uav(1).get_real_x,uav(1).get_real_y,uav(1).p))

       

       for i=1:num_uavs

           text(uav(i).get_real_x()-14, uav(i).get_real_y()-5,sprintf('%d',uav(i).id));

           if uav(i).t_alive>15

               %I assumed that during take off, the UAV does not need to

               %do collision avoidance (until it reaches the required

               %height) so I do not plot a circle around it for the first

               %15 seconds.

               % this is useful in the case the cloud spreads over the

               % base (0,0);

               plot_circle(uav(i).get_real_x(),uav(i).get_real_y(),25);

           end

       end

       cloudplot(cloud,t);

       old_msg = new_msg;

       if spawn_new_uav && (kk-last_launch>25)

           last_launch = kk+1;

           num_uavs = num_uavs+1;

           id_count = id_count+1;

           ang = rand*2*pi;

           uav = [uav;UAVsim(0,0,ang,id_count)];

       end

   end

end

function plot_circle(x,y,r)

   %plots a circle at (x,y) corrdinates with radius r;

   %quality of the plotted circle is not very good but it is decent enough;

   ang = 0:0.5:2*pi;

   xp = r*cos(ang);

   yp = r*sin(ang);

   plot(x+xp,y+yp);

end

⛄ 运行结果

image.gif编辑

image.gif编辑

image.gif编辑

⛄ 参考文献

[1]李文超, 袁冬莉. 基于机动目标模型的无人机视场跟踪仿真研究[J]. 计算机测量与控制, 2011, 19(2):4.

[2]蔡中轩. 无人机群体分布式导引关键技术研究与系统实现[D]. 国防科技大学, 2017.

❤️ 关注我领取海量matlab电子书和数学建模资料

❤️部分理论引用网络文献,若有侵权联系博主删除

相关文章
|
12天前
|
机器学习/深度学习 算法 安全
【无人机三维路径规划】基于非支配排序的鲸鱼优化算法NSWOA与多目标螳螂搜索算法MOMSA求解无人机三维路径规划研究(Matlab代码实现)
【无人机三维路径规划】基于非支配排序的鲸鱼优化算法NSWOA与多目标螳螂搜索算法MOMSA求解无人机三维路径规划研究(Matlab代码实现)
|
12天前
|
机器学习/深度学习 算法 调度
基于NSGA-III算法求解微电网多目标优化调度研究(Matlab代码实现)
基于NSGA-III算法求解微电网多目标优化调度研究(Matlab代码实现)
|
8天前
|
传感器 机器学习/深度学习 算法
【UASNs、AUV】无人机自主水下传感网络中遗传算法的路径规划问题研究(Matlab代码实现)
【UASNs、AUV】无人机自主水下传感网络中遗传算法的路径规划问题研究(Matlab代码实现)
|
7天前
|
存储 算法 安全
【多目标工程应用】基于MOGWO的地铁隧道上方基坑工程优化设计研究(Matlab代码实现)
【多目标工程应用】基于MOGWO的地铁隧道上方基坑工程优化设计研究(Matlab代码实现)
|
7天前
|
机器学习/深度学习 运维 算法
【微电网多目标优化调度】多目标学习者行为优化算法MOLPB求解微电网多目标优化调度研究(Matlab代码实现)
【微电网多目标优化调度】多目标学习者行为优化算法MOLPB求解微电网多目标优化调度研究(Matlab代码实现)
|
10天前
|
机器学习/深度学习 运维 算法
【储能选址定容】基于多目标粒子群算法的配电网储能选址定容(Matlab代码实现)
【储能选址定容】基于多目标粒子群算法的配电网储能选址定容(Matlab代码实现)
|
10天前
|
算法 安全 定位技术
基于改进拥挤距离的多模态多目标优化差分进化(MMODE-ICD)求解无人机三维路径规划研究(Matlab代码实现)
基于改进拥挤距离的多模态多目标优化差分进化(MMODE-ICD)求解无人机三维路径规划研究(Matlab代码实现)
|
12天前
|
存储 并行计算 算法
【动态多目标优化算法】基于自适应启动策略的混合交叉动态约束多目标优化算法(MC-DCMOEA)求解CEC2023研究(Matlab代码实现)
【动态多目标优化算法】基于自适应启动策略的混合交叉动态约束多目标优化算法(MC-DCMOEA)求解CEC2023研究(Matlab代码实现)
|
10天前
|
传感器 资源调度 算法
基于无迹卡尔曼滤波(UKF)与模型预测控制(MPC)的多无人机避撞研究(Matlab代码实现)
基于无迹卡尔曼滤波(UKF)与模型预测控制(MPC)的多无人机避撞研究(Matlab代码实现)
|
10天前
|
供应链 算法 Java
【柔性作业车间调度问题FJSP】基于非支配排序的多目标小龙虾优化算法求解柔性作业车间调度问题FJSP研究(Matlab代码实现)
【柔性作业车间调度问题FJSP】基于非支配排序的多目标小龙虾优化算法求解柔性作业车间调度问题FJSP研究(Matlab代码实现)

热门文章

最新文章