💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文内容如下:🎁🎁🎁
⛳️赠与读者
👨💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能解答你胸中升起的一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。
或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎
💥第一部分——内容介绍
基于分布式模型预测控制的多个固定翼无人机一致性控制研究
摘要:多架固定翼无人机编队时的运动规划颇具挑战性,因为必须同时考虑固定翼无人机的运动学特性与碰撞规避。本文提出了一种新颖的基于一致性的分布式模型预测控制算法,用于多架固定翼无人机。该算法可在实现避碰的同时,使所有无人机同时达到期望编队。文中设计了一个将一致性与分布式模型预测控制相结合的框架,更适合固定翼无人机。采用分布式方式后,该算法相比其他优化方法可显著缩短计算时间,并通过大量仿真验证了其有效性。
关键词:固定翼无人机;分布式模型预测控制;一致性控制;编队飞行;避碰
一、引言
随着无人机技术的迅猛发展,多无人机协同作业在军事、民用等领域展现出巨大的应用潜力。在复杂任务场景下,单架无人机的能力往往受到限制,而多无人机协同作业能够充分发挥每架无人机的优势,完成单机无法完成的任务。其中,多固定翼无人机的协同控制因其任务覆盖范围广、灵活性高等特点备受关注。
多固定翼无人机编队飞行时,需要实现精确的运动规划,不仅要考虑每架无人机的运动学特性,还要确保无人机之间不会发生碰撞。传统的集中式控制方法在处理大规模无人机集群时,计算复杂度高,鲁棒性差,难以满足实际应用需求。因此,分布式控制方法成为解决多无人机协同控制问题的关键技术之一。分布式模型预测控制(DMPC)作为一种有效的分布式控制方法,将整个系统分解为多个子系统,每个子系统通过自身的状态和邻居节点的信息,独立地进行优化控制,最终实现全局的协同目标。一致性控制作为一种重要的多智能体协同控制方法,旨在使所有智能体最终达成一致的状态,如位置、速度、姿态等。将一致性控制与分布式模型预测控制相结合,能够更好地实现多固定翼无人机的编队飞行。
二、相关研究现状
近年来,国内外学者在多无人机协同控制领域开展了大量研究。在分布式模型预测控制方面,许多研究将其应用于多无人机系统,以实现协同任务。例如,有研究提出了一种基于分布式模型预测控制的多无人机协同规避控制技术,将整个系统分解为多个子系统,每个子系统独立求解优化问题,同时考虑邻居无人机的信息,实现了多无人机的协同规避。在一致性控制方面,也有不少研究将其应用于多无人机编队控制。例如,有研究基于一致性理论设计了分布式编队控制协议,解决了有向通讯拓扑下具有二阶积分器特性的多无人机系统的时变编队控制问题。
然而,目前的研究大多针对多旋翼无人机,对于固定翼无人机的研究相对较少。固定翼无人机具有独特的运动学特性,其飞行速度较快、转弯半径较大,编队飞行时的运动规划更加复杂。因此,需要针对固定翼无人机的特点,设计专门的分布式模型预测控制与一致性控制算法。
三、基于一致性的分布式模型预测控制算法设计
3.1 系统建模与线性化
固定翼无人机具有复杂的非线性动力学模型,直接进行控制设计难度较大。因此,需要对其进行适当的简化和线性化处理。基于合理的假设,如忽略气动扰动、简化姿态动力学等,建立简化的无人机模型。在特定的工作点附近,将非线性模型进行线性化处理,得到线性时变(LTV)或线性时不变(LTI)模型。选择合适的模型简化和线性化方法,需要在精度和计算复杂度之间进行权衡。不同的任务需求和无人机类型,也需要采用不同的建模方法。
3.2 一致性协议设计
一致性协议定义了无人机之间如何交换信息,以及如何利用这些信息更新自身的状态估计和控制策略。常用的协议包括平均一致性协议、领导 - 跟随者协议等。平均一致性协议将邻居无人机的状态进行加权平均,并将平均值作为自身的目标状态。领导 - 跟随者协议则指定部分无人机作为领导者,其余无人机作为跟随者,跟随者跟踪领导者的状态,从而实现整个系统的共识。

3.3 分布式模型预测控制设计
DMPC 的关键在于如何设计合适的代价函数和约束条件,以及如何利用一致性协议实现无人机之间的信息交互和协同。
3.3.1 代价函数设计
代价函数通常包括状态误差项和控制输入项,用于衡量无人机与期望状态的偏差和控制能量的消耗。为了实现共识控制,需要在代价函数中引入一致性项,例如邻居无人机状态的加权平均值。一致性项可以促使无人机向邻居的状态靠拢,从而实现整个系统的共识。设无人机 i 的代价函数为:

3.3.2 约束条件设计
约束条件包括状态约束和控制输入约束,用于限制无人机的状态和控制输入在安全范围内。状态约束可以避免无人机之间发生碰撞,控制输入约束可以保证控制输入的物理可行性。例如,可以设置无人机的位置约束,使其与其他无人机的距离大于一定的安全距离;设置无人机的速度和加速度约束,使其在合理的范围内变化。
3.3.3 分布式优化问题求解
DMPC 需要解决分布式优化问题,即每个无人机独立地求解自身的优化问题,同时考虑邻居无人机的信息。常用的分布式优化算法包括交替方向乘子法(ADMM)和对偶分解法。
ADMM 是一种常用的分布式优化算法,它将原始的优化问题分解为多个子问题,每个子问题对应一个无人机。通过引入拉格朗日乘子,将全局约束分解为局部约束,从而实现分布式求解。对偶分解法将原始的优化问题转化为对偶问题,通过求解对偶问题,可以得到原始问题的解。对偶分解法也适用于分布式优化,可以将对偶问题分解为多个子问题,每个子问题对应一个无人机。
四、仿真验证
为了验证所提出的基于一致性的分布式模型预测控制算法的有效性,我们进行了大量仿真实验。在仿真环境中,设置多架固定翼无人机,每架无人机具有相同的动力学模型和初始状态。通过设计不同的任务场景,如编队飞行、避障等,验证算法在不同情况下的性能。
4.1 编队飞行仿真
在编队飞行仿真中,设置无人机初始位置随机分布,期望编队形状为菱形。通过所提出的算法,无人机能够逐渐调整自身的位置和速度,最终达到期望的编队形状。仿真结果表明,无人机在编队过程中能够保持稳定的状态,且各无人机之间的相对位置误差较小。
4.2 避障仿真
在避障仿真中,在无人机飞行路径上设置多个障碍物。无人机通过传感器获取障碍物的位置信息,并利用所提出的算法进行避障。仿真结果表明,无人机能够及时检测到障碍物,并调整飞行路径,成功避开障碍物,同时保持编队的基本形状。
4.3 计算时间对比
将所提出的分布式算法与集中式算法进行计算时间对比。在相同的任务场景和无人机数量下,分布式算法的计算时间明显短于集中式算法。随着无人机数量的增加,分布式算法的计算时间增长较为缓慢,而集中式算法的计算时间增长迅速。这表明分布式算法具有更好的可扩展性,适用于大规模无人机集群。
五、结论
本文提出了一种基于一致性的分布式模型预测控制算法,用于多架固定翼无人机的编队飞行。该算法将一致性控制与分布式模型预测控制相结合,设计了合适的代价函数、约束条件和一致性协议,并通过分布式优化算法求解优化问题。大量仿真实验结果表明,该算法能够在实现避碰的同时,使所有无人机同时达到期望编队,且具有较好的鲁棒性和适应性。与集中式算法相比,分布式算法显著缩短了计算时间,具有更好的可扩展性。未来的研究可以进一步优化算法参数,提高算法的性能,并将其应用于实际的多固定翼无人机系统中。
📚第二部分——运行结果

通过网盘分享的文件:gif1
链接: https://pan.baidu.com/s/10jF2fwhVXi2XfIo-aR1QYg?pwd=jrjr提取码: jrjr
--来自百度网盘超级会员v6的分享


部分代码:
close all;clear;
addpath 'data'
addpath 'uavA1'
% addpath 'uavShow'
% If you want to use other planning 5 trajectories files
% You should change as followws:
% 1. getWpp.m load '5jia.mat'
% 2. para_chap1.m load '5jia.mat'
% Change the name of '5jia.mat'
% And the simulink time also needs to adjusted if too long or long short
%----------------
uavW = 1;
save('uavW.mat','uavW');
sim('New_mavsim_chap12');
ii = 1;
eval(['x' num2str(ii) '= x;'])
eval(['path' num2str(ii) '= path;'])
eval(['waypoints' num2str(ii) '= waypoints;'])
save('x1.mat','x1','path1','waypoints1');
%----------------
clear;
uavW = 2;
uavi = uavW;
save('uavW.mat','uavW');
sim('New_mavsim_chap12');
ii = 2;
eval(['x' num2str(ii) '= x;'])
eval(['path' num2str(ii) '= path;'])
eval(['waypoints' num2str(ii) '= waypoints;'])
save('x2.mat','x2','path2','waypoints2');
%----------------
clear;
uavW = 3;
save('uavW.mat','uavW');
sim('New_mavsim_chap12');
ii = 3;
eval(['x' num2str(ii) '= x;'])
eval(['path' num2str(ii) '= path;'])
eval(['waypoints' num2str(ii) '= waypoints;'])
save('x3.mat','x3','path3','waypoints3');
%----------------
clear;
uavW = 4;
save('uavW.mat','uavW');
sim('New_mavsim_chap12');
ii = 4;
eval(['x' num2str(ii) '= x;'])
eval(['path' num2str(ii) '= path;'])
eval(['waypoints' num2str(ii) '= waypoints;'])
save('x4.mat','x4','path4','waypoints4');
%----------------
clear;
uavW = 5;
save('uavW.mat','uavW');
sim('New_mavsim_chap12');
ii = 5;
eval(['x' num2str(ii) '= x;'])
eval(['path' num2str(ii) '= path;'])
eval(['waypoints' num2str(ii) '= waypoints;'])
save('x5.mat','x5','path5','waypoints5');
%----------------
close all;clear;
load 'x1'
load 'x2'
load 'x3'
load 'x4'
load 'x5'
addpath 'uavShow'
sim('mavsim_show');
🎉第三部分——参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。(文章内容仅供参考,具体效果以运行结果为准)
🌈第四部分——Matlab代码实现
资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取

958

被折叠的 条评论
为什么被折叠?



