您现在的位置:首页 >> 智能控制 >> 内容

m基于flocking算法的无人机群空间避障飞行matlab仿真,对比二维场景和三维场景

时间:2023/1/20 20:56:45 点击:

  核心提示:05_114_m,包括程序操作录像+参考文献...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/Y56XlZ5t

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览








3.算法概述

         近年来,随着通信网络、人工智能、自主系统、大数据的前沿技术的发展, 无人机蜂群作战也正在由概念变成现实,从理论走向实践。航迹规划,多机协作, 集群控制等问题成为当下研究热点。在军事作战中派遣多无人机协同作战相比于 单无人机能够在穿透敌方防御系统,探测目标以及执行攻击任务等方面更具优势,采用大规模、低成本的无人机蜂群进行低空突防,实施饱和攻击已成为一种全 新的"非对称"对抗战术。在各种民事应用中,无人机蜂群已经被广泛用于环境 和自然灾害监测、边境监视、突发事件援助、搜索和救援、货物传递和建筑等任务。随着航空技术与人工智能的迅速发展,无人机以其操作灵活,成本低廉等特 点,在民用及军事领域都有广阔的应用前景。基于无人机(Unmanned Aerial Vehicle, UAV)的各种应用是一个近年来得到飞速发展的高技术领域。由于单架 UAV 存在能力受限、可靠性弱等缺点,由多 UAV 协作构成多 UAV 蜂群可以更高效、更可靠、更低代价地支持完成各种任务。

4.部分源码

.................................................................

for i = 1:UAV_num        

    if norm(Speed_0(i,:))~=0 

       Speed_0(i,:) = Speed_0(i,:)/norm(Speed_0(i,:));

    end

    while 1

        %初始化随机位置

        Position_0(i,:) = [rand*Width/4,randn*Width/40+Width/2, randn*Width/40+Width/2,atan2(Speed_0(i,2), Speed_0(i,1))];

        %计算任意两个无人机之间的距离

        d = func_dist_btuav(Position_0(1:i-1,1:3), Position_0(i,1:3));

        if( all(d>0.5))

            break

        end

    end

end

Position = Position_0; 

Speed    = Speed_0;

..............................................................

for t = 0:ts:TIMES

    t

    i=i+1;

    %flocking控制,输出速度变量

    Speed1          = func_flocking_Speed(Position(:,[1,2,4]),Speed(:,[1,2]),Radius);

    Speed2          = func_flocking_Speed(Position(:,[2,3,4]),Speed(:,[2,3]),Radius);

    Speed3          = func_flocking_Speed(Position(:,[1,3,4]),Speed(:,[1,3]),Radius); 

    Speed           = [Speed1(:,1)+Speed3(:,1),Speed1(:,2)+Speed2(:,1),Speed2(:,2)+Speed3(:,2)]/2;

    for j = 1:UAV_num

        theta  = atan((Goal(2)-Position(j,2))/(Goal(1)-Position(j,1))); 

        theta_ = atan((Goal(3)-Position(j,3))/(Goal(2)-Position(j,2))); 

        for jc = 1:2

            dist(jc) = sqrt((Position(j,1) - C(jc,1))^2 + (Position(j,2) - C(jc,2))^2 + (Position(j,3) - C(jc,3))^2);

        end

        %检测无人机和障碍物之间的间距,通过flocking控制器和PPO,作用到无人机,做出避障的运动决策

        %注意,如果采用PID+flocking的控制方式,响应速度kg大约为0.6左右,不同控制策略,响应速度不一样,如果要对比则修改kg参数

        [V,I] = min(dist);   

        if Position(j,1)<=max(C(1,1),C(2,1))

        

        if Position(j,2)>1.02*(C(1,2)+R(1))  &  Position(j,2)<0.98*(C(2,2)-R(2))

           vv(j,:)  = [0.8*Speedv,0,Speedv*sin(theta)*sin(theta_)]; 

        else

            if Position(j,2)<=1.02*(C(1,2)+R(1)) %第二个障碍物

               if dist(I) >= (1+6*Kg)*R(I)%不避障

                  vv(j,:)  = [0.8*Speedv,0,Speedv*sin(theta)*sin(theta_)];  

               else%切线方式避障

                  theta0 = atan((C(1,2)-Position(j,2))/(C(1,1)-Position(j,1)));

                  d0     = sqrt((C(1,2)-Position(j,2))^2+(C(1,1)-Position(j,1))^2); 

                  theta1 = -real(asin(1.3*R(1)/d0));

                  if Position(j,2)<C(1,2)

                     thetas=theta1;

                  else

                     thetas=theta0+theta1;  

                  end

                  vv(j,:)= 1.5*[Speedv*cos(thetas),Speedv*sin(thetas),Speedv*sin(theta)*sin(theta_)]; 

               end

            end

            if Position(j,2)>=0.98*(C(2,2)-R(2))%第一个障碍物

               if dist(I) >= (1+6*Kg)*R(I)%不避障

                  vv(j,:)  = [0.8*Speedv,0,Speedv*sin(theta)*sin(theta_)];   

               else%切线方式避障

                  theta0 = atan((C(2,2)-Position(j,2))/(C(2,1)-Position(j,1)));

                  d0     = sqrt((C(2,2)-Position(j,2))^2+(C(2,1)-Position(j,1))^2); 

                  theta1 = real(asin(1.3*R(2)/d0));  

                  if Position(j,2)<C(2,2)

                     thetas=theta0+theta1;

                  else

                     thetas=theta1;  

                  end

                  vv(j,:)= 1.5*[Speedv*cos(thetas),Speedv*sin(thetas),Speedv*sin(theta)*sin(theta_)]; 

               end

            end

        end

        else

            vv(j,:)=[Speedv*cos(theta),Speedv*sin(theta)*cos(theta_),Speedv*sin(theta)*sin(theta_)];

        end

    end

05_114_m

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关文章
  • 没有相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168