✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
二阶一致性是指多个系统或智能体在互相交流和协作的过程中,不仅能够达到一致的目标状态,还能够保持彼此的速度和加速度达到一致。简而言之,它要求系统在目标一致性上,以及速度和加速度一致性上都达到协调。
具体来说,二阶一致性原理可以描述为以下两个:
- 目标一致性:多个系统或智能体的目标状态在整体上达到一致。这意味着无论系统的初始状态如何,通过一定的通信和控制机制,系统最终会收敛到共同的目标状态。
- 速度和加速度一致性:除了目标状态一致,系统的速度和加速度也应该保持一致,实现相对位置、速度和加速度的协同控制。这样可以避免系统之间的碰撞、错位或不稳定的情况。
二阶一致性原理在多智能体系统、群体机器人、无人机编队等领域有广泛应用。通过确保系统之间的目标和运动协调,可以实现适应性、合作和集体行为,提高系统的性能和效率。
实现二阶一致性涉及到分布式控、通信协议和算法设计等方面的技术。常用的方法包括分布式协同控制、一致性算法(如一致性协议或共识算法)、信息交换和合作机制等。
基于二阶一致性的无领导多无人机协同编队控制可以通过以下步骤实现:
- 状态建模:为每个无人机建立动力学模型,包括位置和速度。常见的模型包括二维平面模型或三维空间模型。
- 通信拓扑构建:根据无人机之间的通信范围和连接条件,建立无人机之间的通信拓扑结构,确定彼此之间的连接关系。
- 设计局部控制器:对于每个无人机,设计局部控制器来实现二阶一致性。一种常用的方法是通过调整速度来使无人机相对于周围邻居保持一致。
- 协同控制设计:设计协同控制器来实现全局一阶和二阶一致性。这可以通过考虑无人机之间的相对位置、速度和加速度来实现。
- 跟踪参考轨迹:如果需要无人机按照一定的轨迹进行移动,可以设计相应的轨迹生成器来生成参考轨迹。
- 实现与仿真:将设计好的控制器实现在无人机平台上,并进行仿真或实际测试。可以使用无人机仿真平台(如ROS/Gazebo)进行仿真。
- 优化与改实验结果,对控制器参数进行调整和优化,以获得更好的编队控制性能。
需要注意的是,无领导多无人机协同编队控制中涉及到通信、邻居选择、障碍物避障等复杂问题。此外,实际应用中可能还需要考虑安全性、鲁棒性和动态环境等因素,并结合其他技术如路径规划、目标跟踪等来实现具体任务需求。最终的控方案应根据具体应用场景和编队要求进行定制。
⛄ 部分代码
clc
clear
close all
t0=0;tf=15;
step_qw=0.01;
p1=20;Y=0.1;M=0.15;N=0.275;
q0=[0.0; 0.0; 0.1; 0.1;
0.0; 0.4; 0.1; 0.1;
0.4; 0.1; 0.1; 0.1;
0.2; 0.6; 0.1; 0.1];
%save('q0.mat','q0');
load('q0.mat','q0');
[t,q]=ode45('Whole_Twodimension_total_state',t0:step_qw:tf,q0);
figure(1);
hold on
xlabel('x position','FontName','Times New Roman','FontSize',14);ylabel('y position','FontName','Times New Roman','FontSize',14);
plot(q(:,1),q(:,2),'g');
hold on
plot(q(:,5),q(:,6),'r');
hold on
plot(q(:,9),q(:,10),'b');
hold on
plot(q(:,13),q(:,14),'k');
hold on
legend('agent 1','agent 2','agent 3','agent 4');
plot(q(1,1),q(1,2),'ro');
hold on
plot(q(1,5),q(1,6),'bo');
hold on
plot(q(1,9),q(1,10),'bo');
hold on
plot(q(1,13),q(1,14),'bo');
hold on
plot(q(end,1),q(end,2),'rp');
hold on
box on
figure(2)
hold on
xlabel('t/s','FontName','Times New Roman','FontSize',14);ylabel('$\bar{x}_i$','interpreter','latex','fontsize',14);
hold on
plot(t,q(:,1),'r:',t,q(:,2),'r');
hold on
plot(t,q(:,5),'b:',t,q(:,6),'b');
hold on;
plot(t,q(:,9),'k:',t,q(:,10),'k');
hold on;
plot(t,q(:,13),'m:',t,q(:,14),'m');
hold on
legend('agent 1','agent 2','agent 3','agent 4');
box on
figure(3)
hold on
xlabel('t/s','FontName','Times New Roman','FontSize',14);ylabel('$\bar{v}_i$','interpreter','latex','fontsize',14);
hold on
plot(t,q(:,3),'r:',t,q(:,4),'r');
hold on
plot(t,q(:,7),'b:',t,q(:,8),'b');
hold on;
plot(t,q(:,11),'k:',t,q(:,12),'k');
hold on;
plot(t,q(:,15),'m:',t,q(:,16),'m');
hold on
legend('agent 1','agent 2','agent 3','agent 4');
box on
figure(4)
hold on
xlabel('t/s','FontName','Times New Roman','FontSize',14);ylabel('vi-$\bar{v}_i$','interpreter','latex','fontsize',14);
hold on
plot(t,q(:,3)-Y,'r:',t,q(:,4)-Y,'r');
hold on
plot(t,q(:,7)-Y,'b:',t,q(:,8)-Y,'b');
hold on;
plot(t,q(:,11)-Y,'k:',t,q(:,12)-Y,'k');
hold on;
plot(t,q(:,15)-Y,'m:',t,q(:,16)-Y,'m');
hold on
legend('agent 1','agent 2','agent 3','agent 4');
box on
%figure(4)
%hold on
%xlabel('t/s','FontName','Times New Roman','FontSize',14);ylabel('','interpreter','latex','fontsize',14);
%hold on
%plot(t,q(:,1)-M,'r:',t,q(:,2)-N,'r');
%hold on
%plot(t,q(:,5)-M,'b:',t,q(:,6)-N,'b');
%hold on;
%plot(t,q(:,9)-M,'k:',t,q(:,10)-N,'k');
%hold on;
%plot(t,q(:,13)-M,'m:',t,q(:,14)-N,'m');
%hold on
%box on
grid off
⛄ 运行结果
⛄ 参考文献
[1] 熊涛,曹科才,柴运,等.基于输入约束一致性算法的多无人机编队控制[J].计算机工程与应用, 2018, 54(12):7.DOI:10.3778/j.issn.1002-8331.1704-0458.
[2] 马培蓓,雷明,纪军.基于一致性的多无人机协同编队设计[J].战术导弹技术, 2017(2):5.DOI:10.16358/j.issn.1009-1300.2017.02.15.
[3] 吴宇,梁天骄.基于改进一致性算法的无人机编队控制[J].航空学报, 2020.DOI:10.7527/S1000-6893.2020.23848.