💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥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控制器的设计需要考虑系统的具体动力学特性以及轨迹跟踪的要求。在实际应用中,可能需要对控制器进行调整和优化,以满足性能和稳定性的要求。
基于Lyapunov的控制器设计方法在控制理论中被广泛应用,因为它们能够提供系统稳定性的确切证明,并且能够直观地设计控制器以满足特定性能指标。对于欠驱动的自主水下车辆(AUV),即控制输入少于系统自由度的情况,采用Lyapunov方法设计轨迹跟踪控制器特别具有挑战性但也非常吸引人,因为它可以处理非线性动力学和系统约束。以下是一个简化的示例,说明如何基于Lyapunov方法为二维轨迹跟踪任务设计控制器。
AUV动力学模型简化
假设AUV在二维平面内运动,仅考虑横纵坐标(x,y)和平面内的航向角θ,忽略深度和翻滚等动态。动力学模型可以简化为: [ \begin{cases} \dot{x} = v\cos(\theta) \ \dot{y} = v\sin(\theta) \ \dot{\theta} = \omega \end{cases} ] 其中,𝑣v是AUV的速度,𝜔ω是角速度,假设它们是控制输入。
设计目标
我们的目标是设计一个控制器,使得AUV能够追踪给定的二维轨迹(𝑥𝑑(𝑡),𝑦𝑑(𝑡))(xd(t),yd(t)),并且维持期望的航向角𝜃𝑑(𝑡)θd(t)。
Lyapunov函数构造
Lyapunov稳定性分析
接下来,我们设计控制律使𝑉˙V˙负定。一个直观的选择是基于比例-微分(PD)控制: [ \begin{cases} v = k_p(e_x\cos(e_{\theta}) + e_y\sin(e_{\theta})) + k_d(\dot{x}d\cos(e{\theta}) + \dot{y}d\sin(e{\theta})) \ \omega = k_{\theta}e_{\theta} \end{cases} ] 这里,𝑘𝑝,𝑘𝑑,𝑘𝜃kp,kd,kθ是比例、微分和航向增益。
仿真验证
- 实现上述控制律并将其集成到AUV的动力学模型中。
- 使用MATLAB/Simulink或其他仿真软件设置仿真环境,包括轨迹设定、初始条件、模型参数等。
- 运行仿真,观察AUV的轨迹是否能准确跟踪预定路径,检查误差项𝑒𝑥,𝑒𝑦,𝑒𝜃ex,ey,eθ随时间的变化,验证系统的稳定性。
- 根据仿真结果调整增益参数以优化性能。
总结
基于Lyapunov的控制器设计为欠驱动AUV的轨迹跟踪提供了理论上的稳定性保证。通过精心设计的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.