UP目录

一、理论基础

二、核心程序

三、测试结果


一、理论基础

Flocking(有时也称为是warming或herding),拥有4项简单的规则,把它们组合在一起时,为自治主体群给出一个类似于鸟群、鱼群的群体行为的逼真形式。多智能体集群运动控制技术,是未来大规模无人机集群搜索、大规模自主编队表演技术、超远距无人机集群中继通信等一系列应用场景的技术基石。如何让分布式集群拥有超强避障能力,更是现有研究中的重点。现有的比较成熟的方案是以建模生物体集群运动为核心出发的,通过将障碍物比作虚拟的智能体来实现避障,这种方案又被称为Flocking算法。

在本方案中,考虑由N个α-智能体组成的智能群体, 其动态方程为:

在Flocking算法中,定向行为规则可以分为分离原则、列队原则、聚合原则、躲避原则
        分离原则:定向时要避免与本地flock同伴拥挤。即定时检测邻近同伴,避免拥挤;
        列队原则:驶向本地flock同伴的平均航向。即检测邻近同伴航向、速度,获取平均值并调整自己;
        聚合原则:定向时朝着本地flock同伴的平均位置移动。即检测邻近同伴,平均位置然后调整其匹配航向;
        躲避原则:使避免撞上局部区域内的障碍或敌人。即“向前看一段距离”,遇到障碍物、敌人调整航向、速度进行躲避。

二、核心程序

....................................................
clear;
close all;
clc;
%% Parameters 初始化参数
num_agents = 100;
t_gap=1;               % 迭代间隔
queue_gap=15;          % 队形间隔
queue_vy=12;
queue_vx=13;
queue_r=40;
r_c=20;                % 交互范围(半径)
k=1.2;                 % 晶格的ratio
d=r_c/k;               % 晶格的scale(表示两两智能体之间的距离(论文中公式5))
v_0=2;                 % 初始速度
v_limit=0;             % 最大速度
efs = 1;               % sigma-norms parameter
h=0.4;                 % 设置bump function的分割点(公式10)
d_o = r_c;
r_c_sigma = sigma_norm(r_c,efs);         % r_c的σ范数
d_sigma = sigma_norm(d,efs);             % d的σ范数
map_width = 400;                         % width of a squre map
map_res = 0.5;                           % width of a grid to play obstacles pixel
c1=0.2;c2=0.5;c3=0.2;c4=0.1;c5=10;c6=0.01;
x = zeros(num_agents,2);                 % current position
x_1 = zeros(num_agents,2);               % previous position
v_1 = zeros(num_agents,2);               % previous velocity
x_r0= zeros(num_agents,2);               % x_r0:用来存储指定的队形信息
v_r_1st_point=300;
path_num = zeros(1000,2,num_agents);
v_r=[1,0];
%% 生成不同编队队形的智能体坐标% % 使α-agent群集呈现竖“一”(指定预期坐标)
for a=1:1:num_agentsb=v_r_1st_point-(a-1)*queue_gap;      x_r1(a,2)=b;
end% % 使α-agent群集呈现V字形
for a=1:1:num_agentsqueue_vy=12;b=250-(a-1)*queue_vy;x_r2(a,2)=b;if a<=num_agents/2c=100+queue_vx*(a-1);x_r2(a,1)=c;elsec=100+queue_vx*(num_agents-a);x_r2(a,1)=c;end
end% % 坐标更新后的竖“一”
for a=1:1:num_agentsb=v_r_1st_point-(a-1)*queue_gap;x_r3(a,2)=b;x_r3(a,1)=200+queue_vx*ceil(num_agents/2);
end% % 使α-agent群集呈现倒V字形
for a=1:1:num_agentsb=250-(a-1)*queue_vy;x_r4(a,2)=b;if a<=num_agents/2c=340+queue_vx*ceil(num_agents/2)-queue_vx*(a-1);x_r4(a,1)=c;elsec=340+queue_vx*ceil(num_agents/2)-queue_vx*(num_agents-a);x_r4(a,1)=c;end
end% % 使α-agent群集呈现圆形
for a=1:num_agentstheta=2*pi/num_agents;xo=[450+queue_vx*ceil(num_agents/2),240];x_r5(a,1)=xo(1)+queue_r*sin(a*theta);x_r5(a,2)=xo(2)-queue_r*cos(a*theta);
end% % 坐标再次更新后的横“一”
for a=1:1:num_agentsb=v_r_1st_point-(a-1)*queue_gap;x_r6(a,2)=b;x_r6(a,1)=580+2*queue_r;
end
%   x_r=[0,150;0,130;0,110]; % %initializing agents 随机生成坐标
x_1(:,1)=20*rand(num_agents,1);                          % x_1第一列是agent的x初始坐标
x_1(:,2) = map_width/2*rand(num_agents,1)+map_width/4;   % x_1第二列是agent的y初始坐标
counter = 0;                                             % 用于记录循环次数
%% main loop 主循环
while(true)counter=counter+1;u_alpha=zeros(num_agents,2);                % alpha-agents correspond to UAVs   初始化alpha agentu_gamma=zeros(num_agents,2);                % gamma-objects which model the effect of “collective objective” of a group  初始化gamma agentdist_gap = get_gap(x_1);                    % 获取间隔距离dist_2 = squd_norm(dist_gap);               % 距离间隔平方和dist = sqrt(dist_2);                        % 对距离平方和开方  获得距离dist_sigma=sigma_norm(dist_gap,efs);adj = bump_func(dist_sigma/r_c_sigma,h);    % 求邻接矩阵nbr = zeros(num_agents);                    % 初始化相邻agent矩阵参数nbr(dist<=r_c) = 1;                         % 如果两个agent距离小于r_c就算是邻居nbr = nbr - diag(diag(nbr));                % set diagonal to 0 取中心元素adj = nbr.*adj;                             % 得到邻接矩阵
%% 计算过α-agent的控制输入
% % 这个控制输入主要包括两部分
% % 1.目标对α-agent的吸引力
% % 2.α-agent之间的相互作用力% % 计算γ-agent对每个α-agent的吸引力% u_gamma=-c1*limit(x_1-repmat(x_r,size(u_gamma,1),1),1)-c2*(v_1-repmat(v_r,size(u_gamma,1),1)); u_gamma=-c1*limit(x_1-x_r0,size(u_gamma,1))-c2*(v_1-repmat(v_r,size(u_gamma,1),1)); % % 计算α-agent之间的相互作用力for a=1:1:num_agents                % 选定一个α-agentfor b=1:num_agents              % 通过循环的方式依次计算每个α-agent对选定α-agent的作用力的合力kk=x_1(b,:)-x_1(a,:);u_alpha(a,:)=u_alpha(a,:)+c3*adj(a,b)*phi_func(sigma_norm_2(kk,efs)-d_sigma)*sigma_norm_gradient(kk,efs)+c4*adj(a,b)*(v_1(b,:)-v_1(a,:));   % 将选定α-agent受到的合力一次叠加
%           u_alpha(a,:)=u_alpha(a,:)+c3*nbr(a,b)*action_function( sigma_norm_2(x_1(a,:)-x_1(b,:),efs),r_c_sigma,d_sigma,h )*sigma_norm_gradient(x_1(b,:)-x_1(a,:),efs)+c4*nbr(a,b)*(v_1(b,:)-v_1(a,:));endend
%% 根据gamma和alpha agent得到v和x(卡尔曼滤波),前提在一个运动周期内速度不变。u=u_gamma+u_alpha;                   % 计算控制输入         v = v_1 + u*t_gap;                   % 当前时刻的速度估计 = 前一时刻的速度 + 速度增量v_1=v;                               % 不考虑噪声,将估计值直接认为当前时刻的真实值x(:,1:2) = x_1(:,1:2) + 0.8*v_1*t_gap;   % 根据速度计算当前时刻的位置x,x_1表示前一时刻的位置x_1 = x;for nn = 1:1:num_agentspath_num(counter,1,nn) = x(nn,1);path_num(counter,2,nn) = x(nn,2);end
%% 队形变换if (counter<100)x_r1=x_r1+v_r*t_gap;x_r0=x_r1;elseif (counter<200)x_r2=x_r2+v_r*t_gap;x_r0=x_r2;elseif counter<300x_r3=x_r3+v_r*t_gap;x_r0=x_r3;elseif counter<400x_r4=x_r4+v_r*t_gap;x_r0=x_r4;elseif counter<500x_r5=x_r5+v_r*t_gap;x_r0=x_r5;elsex_r6=x_r6+v_r*t_gap;x_r0=x_r6;end%% plothold offplot(x(:,1),x(:,2),'ro');hold onaxis([0 800 0 map_width]);plot(x_r0(:,1),x_r0(:,2),'k*');if counter>650break;endhold on%     text(340,150,'★');%% 通信agent画线for ii=1:1:num_agentsfor jj=1:1:num_agentsif nbr(ii,jj)>0plot([x(ii,1);x(jj,1)],[x(ii,2);x(jj,2)]);endendend%% scatter(x(:,1),x(:,2),20,'black')
%      plot(x_r1(:,1),x_r1(:,2),'r*');pause(0.1);end
figure(1)
%hold off
for tt = 1:1:num_agents
for t = 1:1:1000plot(path_num(t,1,tt),path_num(t,2,tt),'k.','MarkerSize',1);hold on;
end
end......................................

三、测试结果

使用matlab2021a仿真测试结果如下所示:

up0009

基于Flocking算法的多智能体编队matlab仿真相关推荐

  1. 用matlab编程仿真分析多智能体群集控制和多机器人系统编队,多机器人编队(三)基于关联矩阵的多智能体编队稳定性分析...

    作者在读学校Singapore University of Technology and Design 参考文献 _Dimarogonas D V, Johansson K H. Stability ...

  2. 基于RRT自动探索算法的多智能体SLAM仿真实验

    基于RRT自动探索算法的多智能体SLAM仿真实验 一.引述 1.自动探索内容简述 2.自动探索算法 RRT搜索算法 滤波算法 动态角色分配算法 建图即地图融合算法 二.在ROS上的实现 1.准备工作 ...

  3. 中科院自动化所利用光学定位系统实现多智能体编队避障

    协同控制提高智能体系统鲁棒性,编队避障是重点 随着工业技术的发展,任务复杂程度和规模逐渐增加,单个智能体获取信息及解决问题的能力有限,在多数情况下无法满足任务要求.而多智能体系统强调单体之间的合作与协 ...

  4. 基于E-PUCK 2.0多智能体自主协同 高频投影定位系统

    群体智能机器人是一种国际前沿的人工智能研究项目,由多个小型机器人组成的集群式解决系统,灵感源于蚂蚁.蜜蜂.鱼等群体生物,在没有统一领导的情况下,也能合作执行大量复杂的任务,比如组建一个图形,再在此基础 ...

  5. 基于cpt的组网实验_基于E-PUCK 2.0多智能体自主协同 高频投影定位系统

    群体智能机器人是一种国际前沿的人工智能研究项目,由多个小型机器人组成的集群式解决系统,灵感源于蚂蚁.蜜蜂.鱼等群体生物,在没有统一领导的情况下,也能合作执行大量复杂的任务,比如组建一个图形,再在此基础 ...

  6. 论文阅读|Nash Q-Learning for General-Sum Stochastic Games基于强化学习的多智能体研究(附代码)

    论文:Nash Q-learning for general-sum stochastic games 链接:http://www.jmlr.org/papers/volume4/hu03a/hu03 ...

  7. 论文:多智能体编队控制综述

    目录 多智能体编队基本分类 多智能体编队的其他分类方式 基于位置的编队控制: 基于位移的编队控制 基于距离的编队控制 基于无向图的双积分模型: 多智能体编队基本分类 基于位置的编队控制:智能体感知自己 ...

  8. 【控制】《多智能体系统的协同群集运动控制》陈杰老师-第5章-基于骨干网络的多智能体系统群集运动与避障控制

    第4章 回到目录 第6章 第5章-基于骨干网络的多智能体系统群集运动与避障控制 5.1 研究背景 5.2 预备知识 5.2.1 问题描述 运动方程 (5.1) 5.2.2 流体力学基础 可压缩性 黏性 ...

  9. 如何利用AI(ChatGPT、NewBing、PHIND、YouChat)实现多智能体系统一致性仿真的代码编写

    多智能体系统(Multi-Agent System,MAS)已成为人工智能.机器人.自动化等领域的研究热点之一.在MAS中,实现智能体之间的一致性是一个重要问题.为了研究这个问题,如今爆火的AI软件被 ...

最新文章

  1. django下载excel,使用django-excel插件
  2. 如何查看Linux是32位还是64位
  3. java将json转为hashmap_将JSON字符串转换为HashMap
  4. 使用MS Test做单元测试
  5. 怎么查看电脑有没有python_使用python获取电脑的磁盘信息方法
  6. 观点 PK | 商用 PC or 消费 PC,开发者究竟该如何取舍?
  7. 系统镜像ISO写入U盘
  8. error_page 详解
  9. 文件无法删除 你需要计算机管理员 提供的权限才能对此文件进行更改解决办法
  10. layui.css如何使用,Layui新手教程
  11. 分析bootstrap class path not set in conjunction with -source 1.6
  12. 【系统函数】2. 系统的因果性、稳定性
  13. http拨测是什么意思_网络性能拨测-网络传输速度体验检测系统有哪些指标?
  14. 三国群英传霸业之王服务器维护,《三国群英传:霸王之业》1月7日维护更新公告...
  15. 腾讯云短信服务实现 Java 发送手机验证码(SpringBoot+Redis 实现)
  16. 全日制本科生入户东莞指南
  17. 自己动手作PPPOE服务器
  18. java ladp用户认证_java – LDAP:如何使用连接详细信息验证用户身份
  19. html 手机qq图片预览,模拟QQ心情图片上传预览示例
  20. 袋鼠云与中航金网达成战略合作,成立信创大数据联合实验室

热门文章

  1. Windows7下使用Fixedsys和Tahoma字体
  2. Dev-Board-SIG刘洋:打造一站式平台,助力OpenHarmony商业化落地
  3. C语言经典例题-小球下落
  4. 个人永久性免费-Excel催化剂功能第58波-批量生成单选复选框
  5. 盘一盘 Python 系列特别篇 - 面向对象编程
  6. 阿里物联网套件-服务端SDK学习实践(基础篇-12推送数据给设备并得到响应)
  7. 英语语法最终珍藏版笔记- 22反意疑问句
  8. LearnOpenGL学习笔记——OpenGL摄像机
  9. 安卓手机键盘弹出导致h5页面错乱
  10. 怎么报考华为认证hcip?