💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
Lyapunov控制器是一种常用的控制方法,用于设计稳定的控制系统。在设计自主水下车辆(AUV)的轨迹跟踪控制器时,可以使用Lyapunov方法来保证系统的稳定性和收敛性。以下是基于Lyapunov的控制器设计步骤,以实现欠驱动的自主水下车辆的二维轨迹跟踪:
1. **系统建模**:
首先,需要对水下车辆的动力学进行建模。对于二维轨迹跟踪,通常可以采用简化的二自由度模型。这个模型至少包括位置和航向角,可能还包括速度等状态变量。
2. **定义Lyapunov函数**:
设计一个Lyapunov函数,用于描述系统的能量或者“距离”函数。该函数的导数应该为负,以确保系统的稳定性。在这种情况下,我们可以选择系统误差的平方和作为Lyapunov函数。
3. **设计控制器**:
根据Lyapunov函数的导数,设计控制器以实现Lyapunov稳定性条件。通常,控制器的设计需要考虑系统状态的误差以及其导数。控制器的设计可以是线性或非线性的,但必须满足Lyapunov稳定性条件。
4. **仿真验证**:
使用仿真软件(如MATLAB/Simulink、Python等)对设计的控制器进行验证。在仿真中,将模型与所需的轨迹进行比较,并评估控制器的性能。
以下是一个简单的基于Lyapunov的控制器设计示例,假设系统的状态为位置误差 \( e = r - r_d \),其中 \( r \) 是实际位置, \( r_d \) 是期望位置,且航向角误差 \( \theta_e = \theta - \theta_d \),其中 \( \theta \) 是实际航向角, \( \theta_d \) 是期望航向角。
1. **系统建模**:
假设二维轨迹跟踪系统的动力学模型如下:
\[
\dot{r} = v \cos(\theta)
\]
\[
\dot{\theta} = u
\]
其中 \( v \) 是速度, \( u \) 是舵角。
2. **Lyapunov函数**:
定义Lyapunov函数 \( V(e, \theta_e) = \frac{1}{2} e^2 + \frac{1}{2} k_{\theta} \theta_e^2 \),其中 \( k_{\theta} \) 是控制器参数。
3. **设计控制器**:
设计控制器 \( u = -k_r e - k_{\theta} \theta_e \),其中 \( k_r \) 是位置误差的增益,\( k_{\theta} \) 是航向角误差的增益。
4. **仿真验证**:
使用仿真软件验证控制器的性能,包括轨迹跟踪精度和系统的稳定性。
需要注意的是,Lyapunov控制器的设计需要考虑系统的具体动力学特性以及轨迹跟踪的要求。在实际应用中,可能需要对控制器进行调整和优化,以满足性能和稳定性的要求。
📚2 运行结果
部分代码:
%% Trajectory planning and Tracking control of underactuated AUV
% Constants
global m
global onebym
global d
mass = 185.0;
Iz = 50.0;
Xu = -30.0;
Yv = -90.0;
Nr = -30.0;
m = [(mass-Xu), (mass-Yv), (Iz-Nr)];
onebym = [1.0/(mass-Xu), 1.0/(mass-Yv), 1.0/(Iz-Nr)];
d = [70.0, 100.0, 50.0];
j = 100;
% AUV values
auv = zeros(6, j);
auv(:, 1) = [10, 5.0, 0, 0, 0, 0];
disp('Auv');
disp(auv(:, 1));
global Fin
Fin = [0; 0];
%% Path Tracking
for i = 1:j
ts = 1;
disp(i);
% Control input
Fin(1) = 7.004;
Fin(2) = -0.488;
% q(2) + m(3)*Tr + (d(3)*Error(6,i)) + ( (m(2)-m(1)) * ( Error(4,i)*(Error(5,i)+Reqd(5,i)) + Reqd(4,i)*Error(5,i) ) ) ];
% ODE solver to update auv values
V0 = auv(:,i); % input to ODE45
[t1, p] = ode45('Trackfn', [0 ts], V0); % ODE45
auv(:,i+1) = p(end,:); % update auv parameters
auv(3,i+1) = angwrapfn(auv(3,i+1)); % psi in ( 0 to 6.28 )
% Plots
figure(3)
plot(auv(1,1:i), auv(2,1:i), 'b'); % plots auv's path
% Display
disp('Fin');
disp(Fin);
disp('Auv');
disp(auv(1:6,i+1));
end
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。
[1]杨勇生,赵宏,姚海庆.基于Lyapunov第二方法的自动导引车轨迹跟踪控制器设计与仿真[J].上海海事大学学报, 2019, 40(2):5.DOI:CNKI:SUN:SHHY.0.2019-02-013.
[2]王红燕.欠驱动自主水下航行器的轨迹跟踪控制研究[D].天津大学[2024-04-06].
[3]徐健,汪慢,乔磊.欠驱动无人水下航行器三维轨迹跟踪的反步控制[J].控制理论与应用, 2014(11):8.DOI:10.7641/CTA.2014.30835.