【无人水面艇】USV路径跟踪LOS控制算法仿真(Matlab代码实现)

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

一、引言

二、LOS控制算法原理

三、仿真研究

四、优化建议

五、结论

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

一、引言

路径跟踪是无人水面艇(USV)等自主系统的一项基本能力,它要求系统能够沿着预定的路径准确地移动。为了实现这一目标,Line-of-Sight(LOS)控制算法被广泛应用于路径跟踪控制中。本文旨在通过仿真研究,评估和优化LOS控制算法在USV路径跟踪中的性能。

二、LOS控制算法原理

LOS控制算法的基本思想是将路径跟踪问题转化为一个连续的航向修正问题。在每个时间步,算法计算出当前点到路径的垂直投影点,形成一条视线(LOS)。然后,根据视线与当前前进方向之间的夹角(LOS角度误差)和视线长度(LOS距离误差),调整控制输入,以减小这些误差,从而引导系统回归路径。

三、仿真研究

  1. 仿真环境设置

    • 设定仿真时间、采样时间等参数。
    • 定义无人水面艇的初始状态,包括位置、速度、艏向等。
    • 考虑环境因素,如风速、风向、水流速度、水流方向等。
  2. 仿真模型建立

    • 建立无人水面艇的数学模型,包括运动学模型和动力学模型。
    • 设计LOS控制算法,并将其应用于无人水面艇的路径跟踪控制中。
  3. 仿真结果分析

    • 通过仿真实验,观察无人水面艇在LOS控制算法下的路径跟踪效果。
    • 分析不同条件下(如不同风速、水流速度等)LOS控制算法的性能表现。
    • 评估LOS控制算法的准确性、稳定性和鲁棒性。

四、优化建议

  1. 算法优化

    • 针对仿真中发现的问题,对LOS控制算法进行优化,如调整控制参数、改进控制策略等。
    • 考虑引入其他先进的控制算法,如滑模控制、自适应控制等,以提高路径跟踪的精度和鲁棒性。
  2. 模型优化

    • 对无人水面艇的数学模型进行进一步细化,以更准确地描述其运动特性。
    • 考虑加入更多的环境因素和干扰因素,以更全面地评估LOS控制算法的性能。

五、结论

本文通过仿真研究,评估了LOS控制算法在无人水面艇路径跟踪中的性能。仿真结果表明,LOS控制算法能够有效地引导无人水面艇沿着预定路径移动,但在某些条件下仍存在性能提升的空间。未来工作将针对仿真中发现的问题进行优化和改进,以提高路径跟踪的精度和鲁棒性。

📚2 运行结果

主函数部分代码:

clc 
clear all
close all
% initial
ts=0.1;                 % sample time
tfinal =20;             % simulation final time
Ns =tfinal/ts;          % step number of simulation
Vw=0; betaw=30*pi/180;
wind=[Vw betaw]';       % wind
Vc=0; betac=30*pi/180;
current=[Vc betac]';    % current

tao=[10 0 0]'; 
tao0=tao;
d=[0 0 0]';
x=[0 0 0 2 5 0]';
x0=x;
% simulation start
disp('Simulation ... ');
for k=1:1:Ns
    time(1)=0;
    time(k+1)=k*ts;
    
    if x(6)*180/pi>=360
        x(6)=x(6)-2*pi;
    end
    if x(6)*180/pi<=-360
        x(6)=x(6)+2*pi;
    end

    if k*ts>=5
        tao=[10 0 1*pi/180]';
    end
    Ttao(1,:)=tao0';
    Ttao(k+1,:)=tao';
    % time derivatives
    xdot=USV(x,tao,wind,current,d);
    % update states
    x=euler2(xdot,x,ts);
    % store time series
    xout(1,:)=x0;
    xout(k+1,:)=x';
    
end
u=xout(:,1);
v=xout(:,2);
r=xout(:,3);
N=xout(:,4);
E=xout(:,5);
psai=xout(:,6);
% testUSV plot
disp('plot ...');
for k=1:1:Ns
    pos =[N(k) E(k)]';
    if k==1

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]孔典,杨少龙,杨立春,等.基于多源观测的无人艇回收系统设计[J/OL].中国舰船研究:1-9[2024-07-21].https://doi.org/10.19693/j.issn.1673-3185.03407.

[2]王广旭,蔡伟,李永琪,等.含不确定动态观测的异构无人舰艇系统固定时间编队控制[J/OL].电光与控制:1-9[2024-07-21].http://kns.cnki.net/kcms/detail/41.1227.tn.20240717.1324.002.html.

🌈4 Matlab代码实现

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值