【USV编队控制】基于预测控制LMPC的多艘欠驱动自主水面航行器(USV)在约束边界下的编队路径跟踪控制附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。

🍎 往期回顾关注个人主页:Matlab科研工作室

🍊个人信条:格物致知,完整Matlab代码及仿真咨询内容私信。

🔥 内容介绍

本文针对多艘欠驱动自主水面航行器(USV)在约束边界下的编队路径跟踪控制问题,提出基于模型预测控制(LMPC)的解决方案。首先建立欠驱动 USV 的动力学模型,并对约束边界进行数学描述。然后基于模型预测控制原理,构建以编队误差和控制输入代价为目标的优化函数,在每个采样时刻求解有限时域内的最优控制序列,实现对 USV 的实时控制。通过引入约束处理机制,确保 USV 在编队路径跟踪过程中始终满足边界约束条件。仿真实验结果表明,该方法能够有效实现多艘欠驱动 USV 在约束边界下的精确编队路径跟踪,具有较强的鲁棒性和适应性,为实际工程应用中多 USV 协同作业提供了可靠的控制策略。

一、引言

1.1 研究背景与意义

自主水面航行器(USV)因其具备自主航行、环境感知和任务执行等能力,在海洋监测、水文勘测、海上救援、军事侦察等领域得到广泛应用 。在实际任务中,多艘 USV 协同作业能够显著提高任务执行效率和可靠性,如多 USV 编队进行大面积海域监测时,可通过合理的编队路径规划实现对目标区域的全面覆盖 。然而,欠驱动 USV 由于其自身结构特点,在控制自由度上存在限制,难以实现精确的运动控制 。同时,在实际海洋环境中,USV 的作业区域往往存在各种约束边界,如禁航区、航道边界等,如何确保多艘欠驱动 USV 在满足约束边界条件下实现稳定的编队路径跟踪,成为当前研究的热点和难点问题 。模型预测控制(Model Predictive Control,MPC)是一种基于模型的滚动时域优化控制方法,能够有效处理约束条件,在复杂系统控制中展现出良好的性能 。将 LMPC 应用于多艘欠驱动 USV 在约束边界下的编队路径跟踪控制,对于提升多 USV 协同作业能力,拓展其在复杂海洋环境下的应用范围具有重要的现实意义。

1.2 国内外研究现状

在多 USV 编队控制领域,国内外学者开展了大量研究工作 。在欠驱动 USV 控制方面,[国外学者姓名 1] 采用反步法设计控制器,实现了欠驱动 USV 的轨迹跟踪控制,但该方法在处理约束条件时存在一定局限性 。[国内学者姓名 1] 利用滑模控制技术对欠驱动 USV 进行控制,提高了系统的鲁棒性,但控制过程中存在抖振现象 。在模型预测控制应用方面,[国外学者姓名 2] 将 MPC 应用于多智能体系统的编队控制,取得了较好的效果,但未考虑系统的欠驱动特性和约束边界 。[国内学者姓名 2] 研究了基于 MPC 的 USV 路径跟踪控制,但在多 USV 协同编队及约束处理方面研究不够深入 。目前,将 LMPC 应用于多艘欠驱动 USV 在约束边界下的编队路径跟踪控制的研究相对较少,本文旨在填补这一研究空白,为该领域提供新的研究思路和方法。

二、欠驱动 USV 模型与约束边界描述

2.1 欠驱动 USV 动力学模型

⛳️ 运行结果

📣 部分代码

function [pos,pos_dw,thetao,wo] = virtualLeader1( pc, eF, eL, vs, ts )

%LOS [ud, rd, posd] = LOS( pc, eta, nu, ts )

% curved path LOS guidace law

% Author : Yinsong Qu

% Date : 7 15 2022

%[xd, yd, psid, psif, xe, ye, w] = LOS2( pc, k1, delta, x, y, psi, U, beta, w, ts )

% Author : Quyinsong

% Date: 2022 6 1

% reference : Path-Following Algorithms and Experiments for an Unmanned Surface Vehicle

%%%% INPUT:

% pc : chose curved path

% -------------------pc-----------------------------------

% 1: stright line path; 2: sinusoidal path; 3: circle path

% -------------------pc-----------------------------------

% eta = [x y psi]' : the position and heading angle of USV

% nu = [u v r]' : the speed and yaw angular rate

% ts : sample time

% check input and state dimentions

% if nargin ~=5,error('input number must be 4!');end

% states initializing

% states initializing

persistent theta

if isempty(theta)

   theta = 0; 

end

% curved path

switch pc

    case 1

        %---------------直线路径-----------------

        xd = 50;

        yd = theta;

        xd_dw = 0;

        yd_dw = 1;

        xd_ddw = 0; yd_ddw = 0;

    case 2

        %---------------Wang 正弦曲线路径--------------

        xd = 8*sin(0.5*theta) + 4*theta+60;

        yd = 4*theta;

        xd_dw = 4*cos(0.5*theta)+4;

        yd_dw = 4;

        xd_ddw = -2*sin(0.5*theta); yd_ddw = 0;

    case 3

        %---------------圆形路径------------------

        R = 30;

        xd = R*cos(theta)+30; 

        yd = R*sin(theta)+30; 

        xd_dw = -R*sin(theta); 

        yd_dw = R*cos(theta);

        xd_ddw = -R*cos(theta); yd_ddw = -R*sin(theta);

    case 4

        %---------------混合路径------------------

        xd = 10;

        yd = theta;

        xd_dw = 0; xd_ddw = 0;

        yd_dw = 1; yd_ddw = 0;

        if theta >= 80 

            R = 10;

            xd = R*cos(theta-80);

            yd = R*sin(theta-80)+80;

            xd_dw = -R*sin(theta-80); xd_ddw = -R*cos(theta-80);

            yd_dw = R*cos(theta-80); yd_ddw = -R*sin(theta-80);

        end

        if theta >= 80+pi

            xd = -10;

            yd = -(theta-80-pi)+80;

            xd_dw = 0; xd_ddw = 0;

            yd_dw = -1; yd_ddw = 0;

        end

        if theta >= 160+pi

            xd = R*cos(theta-160-pi+pi);

            yd = R*sin(theta-160-pi+pi);

            xd_dw = -R*sin(theta-160-pi+pi); xd_ddw = -R*cos(theta-160-pi+pi);

            yd_dw = R*cos(theta-160-pi+pi); yd_ddw = -R*sin(theta-160-pi+pi);

        end

        if theta >= 160+2*pi

            xd = 10;

            yd = theta-160-2*pi;

            xd_dw = 0; xd_ddw = 0;

            yd_dw = 1; yd_ddw = 0;

        end 

    case 5

        xd = 4*cos(theta);

        yd = 3*theta;

        xd_dw = -4*sin(theta);

        yd_dw = 3;

        xd_ddw = -4*cos(theta); yd_ddw = 0;

    case 6

        xd = theta;

        yd = theta;

        xd_dw = 1;

        yd_dw = 1;

        xd_ddw = 0; yd_ddw = 0;

        if theta>=15

            xd = 30-theta;

            yd = theta;

            xd_dw = -1;

            yd_dw = 1;

            xd_ddw = 0; yd_ddw = 0;

        end

    case 7

        xd = 0;

        yd = theta;

        xd_dw = 0;

        yd_dw = 1;

        xd_ddw = 0; yd_ddw = 0;

end

%---------------------------------------------------------

kc = abs(xd_dw*yd_ddw-yd_dw*xd_ddw)/sqrt(xd_dw^2+yd_dw^2)^3; % 曲线路径的曲率

psip = atan2(yd_dw,xd_dw);  % 路径虚拟参考点切线与x轴夹角

persistent psipf

if isempty(psipf)

    psipf = psip;

end

psipf_dot = -(psipf-psip)/0.1;

psipf = ts*psipf_dot+psipf;

kcs = kc*sign(psipf_dot);

% 路径参数的更新

% 和参考文献中变量略有出入,w->theta, theta->w

persistent kg1 kg2 wk

if isempty(kg1)

    kg1 = 0.05;

    kg2 = 0.5;

    wk = 0;

end

% wk = -kg*(eF-eL);

wk = -kg1*eF+kg2*eL;

% wk_dot = 0.001*(-eF+3*eL-0.5*wk);

% wk = wk_dot*ts+wk;

theta_dot = vs-wk;

theta = theta_dot*ts+theta;

pos = [xd,yd]';

pos_dw = [xd_dw,yd_dw]';

thetao = theta;

wo = wk;

en

🔗 参考文献

🎈 部分理论引用网络文献,若有侵权联系博主删除

 👇 关注我领取海量matlab电子书和数学建模资料 

🏆团队擅长辅导定制多种科研领域MATLAB仿真,助力科研梦:

🌈 各类智能优化算法改进及应用
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化、背包问题、 风电场布局、时隙分配优化、 最佳分布式发电单元分配、多阶段管道维修、 工厂-中心-需求点三级选址问题、 应急生活物质配送中心选址、 基站选址、 道路灯柱布置、 枢纽节点部署、 输电线路台风监测装置、 集装箱调度、 机组优化、 投资优化组合、云服务器组合优化、 天线线性阵列分布优化、CVRP问题、VRPPD问题、多中心VRP问题、多层网络的VRP问题、多中心多车型的VRP问题、 动态VRP问题、双层车辆路径规划(2E-VRP)、充电车辆路径规划(EVRP)、油电混合车辆路径规划、混合流水车间问题、 订单拆分调度问题、 公交车的调度排班优化问题、航班摆渡车辆调度问题、选址路径规划问题、港口调度、港口岸桥调度、停机位分配、机场航班调度、泄漏源定位
🌈 机器学习和深度学习时序、回归、分类、聚类和降维

2.1 bp时序、回归预测和分类

2.2 ENS声神经网络时序、回归预测和分类

2.3 SVM/CNN-SVM/LSSVM/RVM支持向量机系列时序、回归预测和分类

2.4 CNN|TCN|GCN卷积神经网络系列时序、回归预测和分类

2.5 ELM/KELM/RELM/DELM极限学习机系列时序、回归预测和分类
2.6 GRU/Bi-GRU/CNN-GRU/CNN-BiGRU门控神经网络时序、回归预测和分类

2.7 ELMAN递归神经网络时序、回归\预测和分类

2.8 LSTM/BiLSTM/CNN-LSTM/CNN-BiLSTM/长短记忆神经网络系列时序、回归预测和分类

2.9 RBF径向基神经网络时序、回归预测和分类

2.10 DBN深度置信网络时序、回归预测和分类
2.11 FNN模糊神经网络时序、回归预测
2.12 RF随机森林时序、回归预测和分类
2.13 BLS宽度学习时序、回归预测和分类
2.14 PNN脉冲神经网络分类
2.15 模糊小波神经网络预测和分类
2.16 时序、回归预测和分类
2.17 时序、回归预测预测和分类
2.18 XGBOOST集成学习时序、回归预测预测和分类
2.19 Transform各类组合时序、回归预测预测和分类
方向涵盖风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、用电量预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
🌈图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知
🌈 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、 充电车辆路径规划(EVRP)、 双层车辆路径规划(2E-VRP)、 油电混合车辆路径规划、 船舶航迹规划、 全路径规划规划、 仓储巡逻
🌈 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配、无人机安全通信轨迹在线优化、车辆协同无人机路径规划
🌈 通信方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化、水声通信、通信上传下载分配
🌈 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化、心电信号、DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测
🌈电力系统方面
微电网优化、无功优化、配电网重构、储能配置、有序充电、MPPT优化、家庭用电、电/冷/热负荷预测、电力设备故障诊断、电池管理系统(BMS)SOC/SOH估算(粒子滤波/卡尔曼滤波)、 多目标优化在电力系统调度中的应用、光伏MPPT控制算法改进(扰动观察法/电导增量法)
🌈 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长 金属腐蚀
🌈 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合、SOC估计、阵列优化、NLOS识别
🌈 车间调度
零等待流水车间调度问题NWFSP 、 置换流水车间调度问题PFSP、 混合流水车间调度问题HFSP 、零空闲流水车间调度问题NIFSP、分布式置换流水车间调度问题 DPFSP、阻塞流水车间调度问题BFSP
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值