✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
基于二阶一致性的方法可用于实现一领导多无同编队控制。以下是基本的实现步骤:
- 确定系统模型:建立无人机编队控制的系统模型,包括每个无人机的动力学方程、位置和速度等变量。
- 指定领导者无人机:从多个无人机中选择一个作为领导者,其路径和速度将被其他从属无人机跟随。
- 设计追踪控制器:为每个从属无人机设计追踪控制器,使其跟随领导者的轨迹。常用的控制器设计方法包括PID控制器、线性二次型(LQR)控制器等。
- 设计协同控制器:为每个从属无人机设计协同控制器,通过与邻近无人机的信息交换和协同调整来实现编队的一致性。常用的协同控制器设计方法包括基于相对位置误差的协同控制器、虚拟结构等。
- 实现通信和数据传输:设置无人机之间的通信网络,并确保及时的信息传输,例如领导者无人机的位置和速度信息以及从属无人机的状态更新。
- 仿真与实验:使用适当的仿真工具或实际无人机平台进行的轨迹和相对位置误差等指标,评估系统的性和编队的协同度。
需要注意的是,在实际应用中,还需要考虑到传感器误差、障碍物避障、通信延迟等实际情况,对控制算法进行进一步改进和优化。此外,无人机编队控制还涉及到领导者选择策略、路径规划方法以及更高阶一致性的实现等方面的研究。
⛄ 部分代码
clc
clear
close all
t0=0;tf=250;
step_qw=0.01;
p1=20;
q0=[(rand(1)-0.5)*p1;(rand(1)-0.5)*p1;0.2;0.2;
(rand(1)-0.5)*p1;(rand(1)-0.5)*p1;0.1;0.1;
(rand(1)-0.5)*p1;(rand(1)-0.5)*p1;0.1;0.1;
(rand(1)-0.5)*p1;(rand(1)-0.5)*p1;0.1;0.1;
(rand(1)-0.5)*p1;(rand(1)-0.5)*p1;0.1;0.1];
%这一组是赋初值,里面有些给的是随机值,也可以改成定值
%save('q0.mat','q0');
load('q0.mat','q0');
%t,返回列向量的时间点.q,返回对应T的求解列向量.是函数句柄,可以是函数文件名
%'Whole_Twodimension_total_state'是函数句柄,可以是函数文件名,匿名函数句柄或内联函数名
%t0:step_qw:tf,从t0到tf,步长step_qw
%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
plot(q(:,17),q(:,18),'c');
hold on
legend('leader ','follower 1','follower 2','follower 3','follower 4');
hold on
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(1,17),q(1,18),'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{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
plot(t,q(:,19),'m:',t,q(:,20),'m');
box on
legend('leader ','follower 1','follower 2','follower 3','follower 4');
figure(3)
hold on
xlabel('t/s','FontName','Times New Roman','FontSize',14);ylabel('xi-x0','interpreter','latex','fontsize',14);
hold on
plot(t,q(:,5)-q(:,1),'r:',t,q(:,6)-q(:,2),'r');
hold on
plot(t,q(:,9)-q(:,1),'b:',t,q(:,10)-q(:,2),'b');
hold on;
plot(t,q(:,13)-q(:,1),'k:',t,q(:,14)-q(:,2),'k');
hold on;
plot(t,q(:,17)-q(:,1),'m:',t,q(:,18)-q(:,2),'m');
hold on
legend('leader ','follower 1','follower 2','follower 3','follower 4');
box on
figure(4)
hold on
xlabel('t/s','FontName','Times New Roman','FontSize',14);ylabel('vi-v0','interpreter','latex','fontsize',14);
hold on
plot(t,q(:,3)-q(:,7),'r:',t,q(:,4)-q(:,8),'r');
hold on
plot(t,q(:,3)-q(:,11),'b:',t,q(:,4)-q(:,12),'b');
hold on;
plot(t,q(:,3)-q(:,15),'k:',t,q(:,4)-q(:,16),'k');
hold on;
plot(t,q(:,3)-q(:,19),'m:',t,q(:,4)-q(:,20),'m');
hold on
box on
legend('leader ','follower 1','follower 2','follower 3','follower 4');
grid off%作用是关闭网格线,即在figure界面里的图形底版是空白
⛄ 运行结果
⛄ 参考文献
[1] 王瑾.变质量无人机编队控制技术及其在农业植保场景下的应用研究[D].浙江大学[2023-06-24].
[2] 樊琼剑.多无人机协同编队仿生飞行控制关键技术研究[D].南京航空航天大学,2008.DOI:10.7666/d.d051985.