💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
🎁完整资源、论文复现、期刊合作、论文辅导及科研仿真定制事宜点击:
👉👉👉本文完整资源下载
⛳️座右铭:行百里者,半于九十。
⛳️赠与读者
👨💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能解答你胸中升起的一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。
或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎
💥第一部分——内容介绍
摘要
无人水面艇编队轨迹跟踪是海洋自主系统领域的重要研究方向,在环境监测、海上搜救、协同巡逻与水文测绘等任务中具有广泛的应用前景。针对无人水面艇强非线性、欠驱动、多约束以及多艇协同等特点,本文系统研究了一套基于分层模型预测控制的编队轨迹跟踪方法。该方法采用上层运动学模型预测控制与下层动力学模型预测控制相结合的级联结构:上层控制器以位置与航向误差为状态量,求解速度指令;下层控制器以速度误差为状态量,求解推力与舵角指令。控制器通过增广状态将控制增量纳入决策变量,构造预测矩阵,并将滚动时域优化问题转化为标准二次规划问题。参考轨迹由正弦指数衰减曲线生成,三艘无人水面艇通过平行偏移的参考轨迹形成纵向编队。本文详细阐述了该方法的数学建模过程、控制器设计原理、权重矩阵配置策略、仿真流程与数据流,深入讨论了级联系统的稳定性、可行性与计算复杂度,分析了原代码在约束处理、维度匹配、参考速度更新、终端代价与编队耦合等方面的不足,并提出了相应的改进方向。本文的研究为无人水面艇编队分层模型预测控制的理论分析与工程实现提供了系统性参考。
关键词:无人水面艇;模型预测控制;分层控制;编队跟踪;二次规划;轨迹跟踪;级联控制;海洋自主系统
1. 引言
1.1 研究背景与意义
无人水面艇作为一种能够在复杂海洋环境中自主执行任务的水面平台,近年来受到学术界与工业界的广泛关注。与单个无人水面艇相比,多艇编队系统具有任务覆盖范围广、容错能力强、作业效率高等显著优势,因而在海洋环境监测、海上搜救、协同巡逻、水文测绘、海底资源勘探以及军事任务等领域展现出巨大的应用潜力。
然而,无人水面艇编队控制面临诸多挑战。首先,无人水面艇本身是一个强非线性、欠驱动的复杂系统,其运动学与动力学特性存在显著耦合。其次,海洋环境中的风、浪、流等外部干扰具有随机性与时变性,对控制系统的鲁棒性提出了较高要求。再次,编队控制不仅要保证单艇的轨迹跟踪性能,还要维持艇间期望的几何构型,同时满足避碰、通信、执行器饱和等多重约束。这些挑战使得传统的控制方法难以同时兼顾各方面性能。
模型预测控制由于能够显式处理约束、实现滚动时域优化、天然适合多变量耦合系统,已成为无人水面艇编队控制的主流方法之一。模型预测控制的核心思想是在每个采样时刻求解一个有限时域的最优控制问题,只执行优化解的第一步,并在下一时刻重新优化,从而形成滚动时域控制。这种机制使得模型预测控制能够在线处理约束、适应环境变化,并具有良好的鲁棒性。
然而,无人水面艇的完整模型包含运动学与动力学两个层面。运动学描述位置、航向与速度之间的几何关系,动力学描述推力、舵角与速度、角速度之间的动态关系。若采用单一模型预测控制器同时处理两个层面,会导致模型阶数高、非线性强、求解困难,难以满足实时性要求。因此,分层模型预测控制结构应运而生。该结构将控制问题分解为上下两层:上层在运动学层面处理轨迹跟踪,下层在动力学层面处理速度跟踪,二者通过速度指令级联。这种分解不仅降低了单层优化问题的维数与复杂度,还提高了系统的模块化程度与可扩展性。
1.2 国内外研究现状
模型预测控制在无人水面艇控制中的应用已有大量研究。早期工作主要集中于单艇的轨迹跟踪与路径跟踪,采用线性化模型或非线性模型,结合二次规划或非线性规划求解。随着计算能力的提升与算法的发展,模型预测控制逐渐扩展到编队控制、避碰控制、鲁棒控制等更复杂的场景。
在编队控制方面,分布式模型预测控制通过邻居间信息交互实现协同优化,具有计算负担分散、通信需求低等优点。分层模型预测控制则通过时间尺度分离,将慢变运动学与快变动力学解耦,降低了单层优化问题的复杂度。近年来,研究者们还将学习算法、干扰观测器、自适应机制等引入模型预测控制框架,以提升系统在不确定环境下的性能。
尽管已有大量研究成果,无人水面艇编队分层模型预测控制在约束处理、稳定性保证、计算效率、编队耦合等方面仍存在诸多开放问题,值得深入研究。
1.3 本文工作与贡献
本文围绕一套基于分层模型预测控制的无人水面艇编队轨迹跟踪仿真程序,展开系统性研究。本文的主要贡献包括以下几个方面。
第一,建立了无人水面艇运动学与动力学的完整数学模型,给出了连续时间方程与前向欧拉离散化形式,为控制器设计奠定基础。
第二,详细推导了上层模型预测控制器的误差模型、增广模型、预测方程与二次规划形式。通过将控制增量纳入决策变量,构造增广状态空间,实现了对控制量变化的显式惩罚,有利于提高控制平滑性。
第三,给出了下层模型预测控制器的类似推导,阐明了上下层之间的信息流与级联机制。
第四,分析了参考轨迹生成方法、权重矩阵设计策略与仿真流程,给出了完整的参数配置与数据流描述。
第五,深入讨论了级联系统的稳定性、可行性与计算复杂度,指出了分层结构在时间尺度分离假设下的合理性及其局限。
第六,系统分析了原代码在约束处理、维度匹配、参考速度更新、终端代价与编队耦合等方面的问题,并提出了相应的改进方向。
第七,展望了未来研究方向,包括终端约束设计、鲁棒模型预测控制、非线性模型预测控制、分布式协同优化、避碰约束、通信约束、能量优化与实验验证等。
1.4 论文组织结构
本文其余部分组织如下。第二章介绍问题描述与符号定义。第三章阐述分层模型预测控制的总体架构。第四章详细推导上层模型预测控制器。第五章详细推导下层模型预测控制器。第六章讨论权重矩阵设计。第七章分析稳定性、可行性与计算复杂度。第八章描述仿真流程与参数配置。第九章给出结果分析框架。第十章讨论原代码问题与改进方向。第十一章对比标准模型预测控制与分层模型预测控制。第十二章展望未来工作。第十三章总结全文。
2. 问题描述与符号定义
2.1 坐标系与状态变量
考虑多艘无人水面艇在二维平面上的运动。为描述每艘无人水面艇的运动状态,定义惯性坐标系与船体坐标系。惯性坐标系用于描述无人水面艇在全局平面中的位置与航向,船体坐标系用于描述无人水面艇相对于自身的方向上的速度分量。
第艘无人水面艇的运动学状态由其在惯性坐标系下的位置与航向角组成,包括横坐标、纵坐标与航向角三个分量。速度状态由前向速度、横向速度与偏航角速度三个分量组成。下层控制输入由推力与舵角两个分量组成。
在本文的分层控制框架中,上层状态维数取为三,上层控制维数取为三,下层状态维数取为三,下层控制维数取为二。这种维数配置与无人水面艇的物理特性相符:运动学层面涉及位置与航向,动力学层面涉及速度与角速度。
2.2 参考轨迹与编队构型
参考轨迹由基准轨迹与编队偏移共同确定。基准轨迹是一条在纵向匀速前进、在横向呈衰减振荡的曲线,能够充分激发无人水面艇的跟踪能力与动态响应。基准轨迹的参考航向角由位置差分计算得到,参考速度设定为纵向常值、横向为零,参考角速度由航向角差分得到。
三艘无人水面艇的参考轨迹由同一条基准轨迹平移得到。第一艘无人水面艇跟踪基准轨迹,第二艘与第三艘无人水面艇分别跟踪在横向偏移正负半个单位、纵向偏移负二十个单位的参考轨迹。这种配置使得三艘无人水面艇形成纵向编队,横向间距约为一,便于观察编队保持性能。
2.3 误差定义
为便于控制器设计,定义上层状态误差为实际位姿与参考位姿之差,上层控制量误差为实际速度指令与参考速度之差,上层控制增量为当前控制量误差与上一时刻控制量误差之差。上层增广状态由状态误差与控制量误差拼接而成。
类似地,定义下层状态误差为实际速度与下层参考速度之差,下层控制量误差为实际推力舵角与参考推力舵角之差,下层控制增量为当前控制量误差与上一时刻控制量误差之差。下层增广状态由下层状态误差与下层控制量误差拼接而成。
在分层框架中,下层参考速度由上层速度指令给出,从而实现上下层的级联。
2.4 符号约定
本文采用如下符号约定。下标表示第艘无人水面艇,上标表示时间索引。采样周期记为,预测时域记为,控制时域记为。上层状态维数记为,上层控制维数记为,下层状态维数记为,下层控制维数记为。
运动学状态记为,速度状态记为,下层控制输入记为。状态误差记为,控制量误差记为,增广状态记为,控制增量序列记为。
预测状态矩阵记为,预测控制矩阵记为。状态权重矩阵记为,控制权重矩阵记为。二次规划的 Hessian 矩阵记为,梯度向量记为。
此外,旋转矩阵记为,动力学漂移项记为,动力学控制项记为,质量记为,转动惯量记为,舵效系数记为与。
3. 分层模型预测控制总体架构
3.1 级联结构
分层模型预测控制采用上层运动学控制器与下层动力学控制器相级联的结构。参考轨迹首先输入上层控制器,上层控制器根据当前位姿误差与上一时刻速度误差,求解速度指令。速度指令随后输入下层控制器,下层控制器根据当前速度误差与上一时刻控制量误差,求解推力与舵角指令。推力与舵角作用于无人水面艇,驱动其运动,形成闭环。
这种级联结构的优势在于将复杂的整体控制问题分解为两个相对简单的子问题。上层控制器只处理运动学层面的轨迹跟踪,模型阶数低、非线性弱;下层控制器只处理动力学层面的速度跟踪,模型相对简单、参数明确。两者通过速度指令解耦,便于独立设计与调试。
3.2 时间尺度分离假设
分层模型预测控制的合理性建立在时间尺度分离假设之上。该假设认为,下层动力学响应速度远快于上层运动学响应速度,因而下层能够在较短时间内跟踪上层速度指令。若下层跟踪足够快,则实际速度近似等于上层速度指令,级联系统近似为上层运动学控制器直接驱动无人水面艇。
时间尺度分离假设在实际系统中通常成立,因为无人水面艇的速度动态响应时间常数远小于其位置与航向的变化时间常数。然而,当速度指令变化剧烈或动力学响应受限时,该假设可能不成立,导致级联性能下降。因此,在控制器设计中需要合理配置上下层权重,确保下层跟踪速度与上层指令变化速度相匹配。
3.3 信息流与数据传递
在每个采样时刻,每艘无人水面艇的信息流包括以下步骤。首先,读取当前位姿与速度状态。其次,计算上层状态误差与控制量误差,构造上层增广状态。再次,调用上层控制器求解速度增量,更新速度指令。然后,根据运动学模型推进位姿,得到下一时刻位姿。接着,计算下层状态误差与控制量误差,构造下层增广状态。随后,调用下层控制器求解推力舵角增量,更新执行量。最后,根据动力学模型推进速度,得到下一时刻速度。整个流程在每个采样时刻重复执行,形成滚动时域控制。
三艘无人水面艇在每个采样时刻独立执行上述流程,各自跟踪自己的参考轨迹。由于没有显式的编队耦合项,编队保持完全依赖参考轨迹的几何偏移。这种设计简化了控制器结构,但缺乏对编队误差的主动调节能力。
4. 上层模型预测控制器设计
4.1 误差模型推导
上层控制器以运动学模型为基础。为设计模型预测控制器,需要建立误差模型。误差模型描述状态误差与控制量误差之间的动态关系。通过对运动学方程在参考点附近进行一阶泰勒展开,可以得到线性化的误差模型。
误差模型的状态矩阵反映了参考速度与参考航向对位置误差传播的影响。具体而言,航向误差对横向位置误差的影响与参考前向速度、参考横向速度以及参考航向角有关。控制矩阵反映了速度指令对位置与航向的影响,其结构与旋转矩阵密切相关。
通过引入控制增量作为决策变量,可以将误差模型改写为增量形式。增量形式的优势在于能够显式惩罚控制量的变化率,有利于提高控制平滑性、减少执行器磨损。
4.2 增广状态空间
为将控制增量纳入状态空间,构造增广状态。增广状态由原始状态误差与上一时刻控制量误差拼接而成。增广系统矩阵由原始状态矩阵、控制矩阵、零矩阵与单位矩阵组成。增广控制矩阵由原始控制矩阵与单位矩阵组成。
增广状态空间的维数为上层状态维数与上层控制维数之和。在本文中,该维数为六。增广模型的建立使得预测方程可以直接用增广状态表示,简化了预测矩阵的构造。
4.3 预测方程
在预测时域内,通过递推展开增广状态方程,可以得到预测方程。预测方程将未来预测时域内的增广状态表示为当前增广状态与控制增量序列的线性组合。预测状态矩阵由增广系统矩阵的幂次组成,预测控制矩阵由增广系统矩阵与控制矩阵的乘积组成,呈下三角结构。
预测控制矩阵的下三角结构反映了因果性:未来时刻的状态只受当前及之前时刻控制增量的影响,不受未来控制增量的影响。这种结构在二次规划中体现为决策变量的块下三角约束,有利于稀疏求解。
预测方程的建立是模型预测控制的核心步骤,它将滚动时域优化问题转化为关于控制增量序列的有限维优化问题。
4.4 代价函数
上层控制器的代价函数由状态误差惩罚项与控制增量惩罚项组成。状态误差惩罚项促使实际位姿跟踪参考位姿,控制增量惩罚项抑制控制量的剧烈变化。代价函数写成二次型形式,其中 Hessian 矩阵由预测控制矩阵、状态权重矩阵与控制权重矩阵共同决定,梯度向量由预测状态矩阵、状态权重矩阵、预测控制矩阵与当前增广状态共同决定。
代价函数的二次型结构使得优化问题可以转化为标准二次规划问题,从而利用成熟的二次规划求解器高效求解。
4.5 约束条件
原代码为上层控制器构造了速度约束、舵角约束与增量约束。速度约束限制前向速度与横向速度的范围,舵角约束限制舵角的范围,增量约束限制控制量的变化率。这些约束通过不等式约束矩阵与上下界向量表示。
不等式约束矩阵由控制量约束的系数矩阵与负系数矩阵组成,用于表示控制量的上下界。上下界向量由控制量上界减去当前控制量、负的控制量下界加上当前控制量组成。
然而,原代码在构造约束后又将其清空,导致所有不等式约束失效,仅保留变量上下界。这是原代码最严重的问题之一,使得速度、舵角与增量约束全部失效,可能导致速度指令超出物理可行范围、舵角饱和、控制增量过大引起抖振等不良后果。
4.6 二次规划求解
上层控制器的优化问题最终转化为标准二次规划问题。该问题以控制增量序列为决策变量,以代价函数的二次型为目标函数,以不等式约束与上下界为约束条件。代码使用二次规划求解器求解该问题,并取优化解的第一步作为当前时刻的控制增量。
只取第一步是滚动时域控制的标准做法,称为滚动优化或退步优化。这种做法的优势在于能够在线处理约束、适应环境变化,并具有较好的鲁棒性。
5. 下层模型预测控制器设计
5.1 误差模型推导
下层控制器以动力学模型为基础。与上层类似,通过对动力学方程在参考点附近进行一阶泰勒展开,可以得到线性化的误差模型。误差模型的状态矩阵反映了参考速度与参考角速度对速度误差传播的影响,控制矩阵反映了推力与舵角对速度与角速度的影响。
下层误差模型的参考速度由上层速度指令给出,参考控制量设定为零推力与零舵角。这种设定简化了下层控制器的设计,但可能引入稳态误差,需要通过积分项或前馈项补偿。
5.2 增广状态空间
下层增广状态由下层状态误差与下层控制量误差拼接而成。增广系统矩阵与增广控制矩阵的构造方式与上层一致。下层增广状态的维数为下层状态维数与下层控制维数之和,在本文中为五。
5.3 预测方程与代价函数
下层预测方程的构造方式与上层一致。预测状态矩阵由下层增广系统矩阵的幂次组成,预测控制矩阵由下层增广系统矩阵与控制矩阵的乘积组成。
下层代价函数同样由状态误差惩罚项与控制增量惩罚项组成。状态误差惩罚项促使实际速度跟踪上层速度指令,控制增量惩罚项抑制推力与舵角的剧烈变化。
5.4 二次规划求解
下层控制器的优化问题同样转化为标准二次规划问题,并使用二次规划求解器求解。取优化解的第一步作为当前时刻的推力舵角增量,叠加到上一时刻执行量上,得到当前时刻执行量。
6. 权重矩阵设计
6.1 上层权重矩阵
上层状态权重矩阵采用分块对角结构,每个对角块为状态误差权重与控制量误差权重的组合。状态误差权重与控制量误差权重相同,均为六十倍单位矩阵。这种设计使得位置、航向、速度误差具有相同的惩罚强度。
上层控制权重矩阵采用单位矩阵的倍数,系数为零点零二五。较小的控制权重意味着允许控制量有较大变化,以快速跟踪参考轨迹。
6.2 下层权重矩阵
下层状态权重矩阵与上层结构类似,每个对角块为六十倍单位矩阵。下层控制权重矩阵同样采用零点零二五倍单位矩阵。
上下层权重结构一致,便于统一设计与调试。然而,上下层权重的最优配置可能需要根据具体任务与系统特性进行调整,以达到最佳跟踪性能与控制平滑性的平衡。
6.3 权重选择原则
权重矩阵的选择对模型预测控制性能具有决定性影响。一般而言,状态权重越大,跟踪越快,但控制量可能饱和;控制权重越大,控制越平滑,但跟踪变慢。终端权重越大,终端收敛越强,但可能导致控制量过大。
在分层结构中,上下层权重需要协调配置。若下层权重过小,下层跟踪不上上层指令,导致级联性能下降;若下层权重过大,下层控制量剧烈变化,可能导致执行器磨损。因此,需要通过仿真实验反复调整权重,找到兼顾跟踪性能与控制平滑性的配置。
7. 稳定性、可行性与计算复杂度分析
7.1 稳定性分析
对于无约束线性模型预测控制,若状态权重矩阵半正定、控制权重矩阵正定,且终端权重满足 Lyapunov 方程,则闭环系统渐近稳定。终端权重的存在保证了终端代价函数沿闭环轨迹递减,从而保证稳定性。
原代码未设置终端权重,稳定性缺乏理论保证。在分层结构中,稳定性分析更加复杂,需要考虑上下层级联的相互作用。若下层跟踪足够快,上层稳定性可以独立分析;若下层跟踪存在滞后,则需要分析级联系统的整体稳定性。
7.2 可行性分析
模型预测控制的可行性指在每个采样时刻优化问题存在可行解。若约束过紧,优化问题可能无可行解,导致控制器失效。原代码清空约束后,可行性问题被规避,但代价是约束失效。
在实际系统中,约束是保证安全运行的必要条件。因此,需要在设计约束时兼顾安全性与可行性,必要时引入软约束或松弛变量,保证优化问题始终可行。
7.3 计算复杂度分析
每个采样时刻,每艘无人水面艇需求解两个二次规划问题。上层二次规划的决策变量维数为控制时域与上层控制维数的乘积,下层二次规划的决策变量维数为控制时域与下层控制维数的乘积。
三艘无人水面艇合计每步需求解六个二次规划问题。若采用内点法,单次二次规划的复杂度约为决策变量维数的三次方。对于本文的参数配置,计算复杂度尚可接受,但若预测时域增大或无人水面艇数量增加,计算负担将迅速上升。
为降低计算复杂度,可以采用以下策略:缩短预测时域、采用稀疏求解器、利用问题结构进行热启动、采用分布式求解、采用显式模型预测控制等。
8. 仿真流程与参数配置
8.1 仿真参数
仿真步数设为三百,采样周期设为一,预测时域设为三十,控制时域设为二十九。上层状态维数与上层控制维数均为三,下层状态维数为三,下层控制维数为二。
无人水面艇的物理参数包括质量三十、转动惯量零点三、舵效系数零点零二与负零点零一。这些参数决定了无人水面艇的动力学响应特性。
8.2 初始状态配置
三艘无人水面艇的初始位姿各不相同,分布在不同的位置与航向。初始速度状态也各不相同,用于测试控制器在不同初始条件下的收敛性能。
三艘无人水面艇的参考轨迹由基准轨迹平移得到,形成纵向编队。第一艘跟踪基准轨迹,第二艘与第三艘分别跟踪横向偏移正负半个单位、纵向偏移负二十个单位的参考轨迹。
8.3 仿真流程
仿真主程序首先初始化参数与状态矩阵,生成参考轨迹,配置权重矩阵。然后进入主循环,在每个采样时刻对每艘无人水面艇依次执行上层模型预测控制、运动学推进、下层模型预测控制、动力学推进。最后绘制轨迹图与状态图。
主循环中,上层控制器求解速度增量,更新速度指令,运动学模型推进位姿。下层控制器求解推力舵角增量,更新执行量,动力学模型推进速度。整个流程在每个采样时刻重复执行,形成滚动时域控制。
8.4 绘图与结果展示
仿真结束后,主程序绘制三类图形。第一类是平面轨迹图,展示三艘无人水面艇的实际轨迹与编队连线。第二类至第四类是下层状态图,分别展示三艘无人水面艇的前向速度、横向速度与偏航角速度随时间的变化。辅助函数自动计算纵轴上下限,便于观察状态变化范围。
9. 结果分析框架
9.1 轨迹跟踪性能分析
轨迹跟踪性能通过位姿误差的收敛性评估。若上层控制器设计合理,位姿误差应随时间收敛到零附近。收敛速度取决于状态权重与控制权重的比值、预测时域长度以及参考轨迹的曲率。
若位姿误差收敛缓慢或存在稳态误差,可能原因包括权重配置不当、预测时域过短、约束过紧或模型线性化误差过大。
9.2 速度跟踪性能分析
速度跟踪性能通过速度误差的收敛性评估。若下层控制器设计合理,实际速度应快速跟踪上层速度指令。跟踪速度取决于下层权重配置与动力学响应特性。
若速度跟踪存在滞后,可能导致级联性能下降,位姿跟踪误差增大。此时需要增大下层状态权重或缩短下层控制周期。
9.3 编队保持性能分析
编队保持性能通过艇间相对位置误差评估。若各艇跟踪各自参考轨迹,编队几何形状应保持不变。若存在编队误差,可能原因包括参考轨迹偏移配置不当、各艇初始状态差异过大或控制器性能不一致。
由于原代码没有显式编队耦合项,编队保持完全依赖参考轨迹的几何偏移,缺乏主动调节能力。在存在外部干扰或模型不确定性时,编队误差可能累积。
9.4 约束满足性分析
约束满足性通过检查速度、舵角与增量是否在允许范围内评估。原代码清空约束后,约束满足性无法保证。修正约束处理后,应验证所有约束均得到满足。
若约束频繁激活,可能导致控制量饱和、跟踪性能下降。此时需要调整权重或放宽约束,寻找性能与安全的平衡。
10. 结论
本文系统研究了一套基于分层模型预测控制的无人水面艇编队轨迹跟踪方法,并对其 MATLAB 实现进行了详细解读。该方法采用上层运动学模型预测控制与下层动力学模型预测控制相结合的级联结构,通过增广状态将控制增量纳入决策变量,构造预测矩阵,并将滚动时域优化问题转化为标准二次规划问题。
本文的主要工作包括:建立无人水面艇运动学与动力学模型;推导上层与下层模型预测控制器的误差模型、增广模型、预测方程与二次规划形式;分析参考轨迹生成、权重矩阵设计与仿真流程;讨论稳定性、可行性与计算复杂度;指出原代码在约束处理、维度匹配、参考速度更新、终端代价与编队耦合等方面的问题;提出改进方向;展望未来研究工作。
研究表明,分层模型预测控制能够有效降低单层优化问题的复杂度,提高系统的模块化程度与可扩展性。然而,分层结构也带来了级联稳定性分析、上下层协调、约束耦合等新问题,需要在未来研究中深入解决。
本文的研究为无人水面艇编队分层模型预测控制的理论分析与工程实现提供了系统性参考,对推动海洋自主系统的发展具有一定的理论意义与应用价值。
📚第二部分——运行结果
部分代码:
%----------------------3.生成系统变量矩阵,用于存放仿真数据-----------------
usv_state_1 = zeros(Nx, N_r); % 第1个USV的状态矩阵, 所有行3列,第一列为x,第二列为y,第三列为 phi
usv_state_2 = zeros(Nx, N_r); % 第2个USV的状态矩阵, 所有行3列,第一列为x,第二列为y,第三列为 phi
usv_state_3 = zeros(Nx, N_r); % 第3个USV的状态矩阵, 所有行3列,第一列为x,第二列为y,第三列为 phi
tilde_x_1 = zeros(Nx, N_r); % 状态量误差矩阵, tilde_x_1 \in inf * 3
tilde_x_2 = zeros(Nx, N_r); % 状态量误差矩阵, tilde_x_2 \in inf * 3
tilde_x_3 = zeros(Nx, N_r); % 状态量误差矩阵, tilde_x_3 \in inf * 3
tilde_u_k_sub_1 = zeros(Nu, N_r+1); % 用于存放 tilde_u_k_sub_1
tilde_u_k_sub_2 = zeros(Nu, N_r+1); % 用于存放 tilde_u_k_sub_2
tilde_u_k_sub_3 = zeros(Nu, N_r+1); % 用于存放 tilde_u_k_sub_3
initialState_1 = [1.23; -0.42; 1 * pi/3]; % 初始状态 : x_1(0), y_1(0), phi_1(0)
initialState_2 = [-0.63; 1.37; 1 * pi/4]; % 初始状态 : x_2(0), y_2(0), phi_2(0)
initialState_3 = [-1.01; 0.49; 1 * pi/5]; % 初始状态 : x_3(0), y_3(0), phi_3(0)
usv_state_1(:,1) = initialState_1; % 把初始状态赋值给状态量第一行
usv_state_2(:,1) = initialState_2; % 把初始状态赋值给状态量第一行
usv_state_3(:,1) = initialState_3; % 把初始状态赋值给状态量第一行
tilde_x_1(:, 1) = usv_state_1(:, 1) - refOutput_1(:, 1); % 实际状态与参考量之间的误差
tilde_x_2(:, 1) = usv_state_2(:, 1) - refOutput_1(:, 1); % 实际状态与参考量之间的误差
tilde_x_3(:, 1) = usv_state_3(:, 1) - refOutput_1(:, 1); % 实际状态与参考量之间的误差
[Q, R] = StructWeightMatrix( ); % 构造代价函数的权重矩阵 Q, R
%=======================================================================
down_usv_state_1 = zeros(down_Nx, N_r); % 第1个USV的状态矩阵, 所有行3列,第一列为x,第二列为y,第三列为 phi
down_usv_state_2 = zeros(down_Nx, N_r); % 第1个USV的状态矩阵, 所有行3列,第一列为x,第二列为y,第三列为 phi
down_usv_state_3 = zeros(down_Nx, N_r); % 第1个USV的状态矩阵, 所有行3列,第一列为x,第二列为y,第三列为 phi
down_tilde_x_1 = zeros(down_Nx, N_r); % 状态量误差矩阵, tilde_x_1 \in inf * 3
down_tilde_x_2 = zeros(down_Nx, N_r); % 状态量误差矩阵, tilde_x_2 \in inf * 3
down_tilde_x_3 = zeros(down_Nx, N_r); % 状态量误差矩阵, tilde_x_3 \in inf * 3
down_tilde_u_k_sub_1 = zeros(down_Nu, N_r+1); % 用于存放 tilde_u_k_sub_1
down_tilde_u_k_sub_2 = zeros(down_Nu, N_r+1); % 用于存放 tilde_u_k_sub_2
down_tilde_u_k_sub_3 = zeros(down_Nu, N_r+1); % 用于存放 tilde_u_k_sub_3
down_initialState_1 = [0.23; -0.42; 0.31]; % 初始状态 : x_1(0), y_1(0), phi_1(0)
down_initialState_2 = [0.41; 1.07; 0.19]; % 初始状态 : x_2(0), y_2(0), phi_2(0)
down_initialState_3 = [0.52; 0.96; 0.26]; % 初始状态 : x_3(0), y_3(0), phi_3(0)
down_usv_state_1(:,1) = down_initialState_1; % 把初始状态赋值给状态量第一行
down_usv_state_2(:,1) = down_initialState_2; % 把初始状态赋值给状态量第一行
down_usv_state_3(:,1) = down_initialState_3; % 把初始状态赋值给状态量第一行
🎉第三部分——参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。(文章内容仅供参考,具体效果以运行结果为准)
🌈第四部分——本文完整资源下载
资料获取,更多粉丝福利,MATLAB|Simulink|Python|数据|文档等完整资源获取
本文完整资源下载