【Advanced控制理论】Nonlinear Adaptive Controller非线性自适应控制器(附Simulink程序)

在上一篇BLOG中谈到了非线性反馈控制器,其中系统的所有参数均为已知,这样的系统称为Exactly Known System。若系统中的参数未知该如何求解,由此引出Nonlinear Adaptive Controller。DR_CAN的相关视频链接:https://www.bilibili.com/video/BV1yW411u7qv

在之前的Tracking Problem中,系统的状态方程为: x ˙ = a x 2 + u (1) \dot{x}=ax^2+u\tag{1} x˙=ax2+u(1)

设: e = x d − x (2) e=x_{d}-x\tag{2} e=xdx(2) e ˙ = x ˙ d − x ˙ = x ˙ d − a x 2 − u (3) \dot{e}=\dot{x}_{d}-\dot{x}=\dot{x}_{d}-ax^2-u\tag{3} e˙=x˙dx˙=x˙dax2u(3)

定义: V ( e ) = 1 2 e 2 (PD) V_{(e)}=\frac{1}{2}{e}^2\tag{PD} V(e)=21e2(PD) V ˙ ( e ) = e e ˙ = e ( x ˙ d − a x 2 − u ) (4) \dot{V}_{(e)}=e\dot{e}=e(\dot{x}_{d}-ax^2-u)\tag{4} V˙(e)=ee˙=e(x˙dax2u)(4)

令: u = x ˙ d − a x 2 + k e (5) u=\dot{x}_d-ax^2+ke\tag{5} u=x˙dax2+ke(5)

这样 V ˙ ( e ) = − k e 2 \dot{V}_{(e)}=-ke^2 V˙(e)=ke2 N D ND ND,将 ( 5 ) (5) (5)式代入 ( 3 ) (3) (3)式得到: e ˙ = − k e \dot{e}=-ke e˙=ke,整个过程为Feedback Linearization

以上是在 a a a为已知的情况下,假设有这样一个模型:给一小车施加一个力 F F F,使得小车以期望速度 x ˙ \dot{x} x˙运动,其中车上载有一个人的质量为 m m m,我们期望不论人的质量为多少,小车均能按照稳定速度运动,即Adapt the unkonwn parameter。假设 a a a是一个缓慢变化的常数,即 a ˙ = 0 \dot{a}=0 a˙=0。引入Estimate a ^ \hat{a} a^Estimate error a ~ = a − a ^ \tilde{a}=a-\hat{a} a~=aa^,得到: a ~ ˙ = a ˙ − a ^ ˙ = − a ^ ˙ (6) \dot{\tilde{a}}=\dot{a}-\dot{\hat{a}}=-\dot{\hat{a}}\tag{6} a~˙=a˙a^˙=a^˙(6)

此时 u = x ˙ d − a ^ x 2 + k e (7) u=\dot{x}_d-\hat{a}x^2+ke\tag{7} u=x˙da^x2+ke(7)

定义Lyapunov function V ( e , a ~ ) = 1 2 e 2 + 1 2 a ~ 2 (PD) V_{(e,\tilde{a})}=\frac{1}{2}e^2+\frac{1}{2}\tilde{a}^2\tag{PD} V(e,a~)=21e2+21a~2(PD) V ˙ = e e ˙ + a ~ a ~ ˙ = e ( x ˙ d − a x 2 − u ) − a ~ a ^ ˙ (8) \dot{V}=e\dot{e}+\tilde{a}\dot{\tilde{a}}=e(\dot{x}_{d}-ax^2-u)-\tilde{a}\dot{\hat{a}}\tag{8} V˙=ee˙+a~a~˙=e(x˙dax2u)a~a^˙(8)

( 7 ) (7) (7)代入 ( 8 ) (8) (8)式得: V ˙ = e ( − ( a − a ^ ) x 2 − k e ) − a ~ a ^ ˙ = − e a ~ x 2 − k e 2 − a ~ a ^ ˙ = − k e 2 − a ~ ( e x 2 + a ^ ˙ ) (9) \dot{V}=e(-(a-\hat{a})x^2-ke)-\tilde{a}\dot{\hat{a}}=-e\tilde{a}x^2-ke^2-\tilde{a}\dot{\hat{a}}=-ke^2-\tilde{a}(ex^2+\dot{\hat{a}})\tag{9} V˙=e((aa^)x2ke)a~a^˙=ea~x2ke2a~a^˙=ke2a~(ex2+a^˙)(9)

其中 − k e 2 -ke^2 ke2 N D ND ND,令 a ^ ˙ = − e x 2 \dot{\hat{a}}=-ex^2 a^˙=ex2,这样 ( 9 ) (9) (9)式后半部分为 0 0 0,即: V ˙ ( e , a ~ ) = − k e 2 (NSD) \dot{V}_{(e,\tilde{a})}=-ke^2\tag{NSD} V˙(e,a~)=ke2(NSD)

此时无法判定 e → 0 e\rightarrow0 e0 a ~ → 0 \tilde{a}\rightarrow0 a~0,只能确定二者稳定,需要引入Lyapunov-like lemma
1 ) V ≥ 0 1)V\ge 0 1V0
2 ) V ˙ ≤ − g ( t ) , w h e r e   g ( t ) ≥ 0 2)\dot{V}\le-g(t),where\space g(t)\ge0 2V˙g(t)where g(t)0
3 ) g ˙ ( t ) ∈ L , i f   g ˙ ( t )   i s   b o u n d e d   t h e   g ( t )   i s   u n i f o r m l y   c o n t i n u o u s 3)\dot{g}(t)\in L,if\space \dot{g}(t)\space is\space bounded\space the\space {g}(t)\space is\space uniformly\space continuous 3g˙(t)Lif g˙(t) is bounded the g(t) is uniformly continuous
t h e n   lim ⁡ t → ∞ g ( t ) = 0 then\space \lim\limits_{t\to\infty}g(t)=0 then tlimg(t)=0

在本模型中, V V V P D PD PD自然满足 P S D PSD PSD,满足 ( 1 ) (1) (1)
V ˙ = − k e 2 \dot{V}=-ke^2 V˙=ke2,令 g ( t ) = k e 2 ≥ 0 g(t)=ke^2\ge0 g(t)=ke20,满足 ( 2 ) (2) (2)
g ˙ ( t ) = 2 k e e ˙ \dot{g}(t)=2ke\dot{e} g˙(t)=2kee˙是收敛的且 g ( t ) g(t) g(t)为一致连续的,满足 ( 3 ) (3) (3)
即可得出结论 lim ⁡ t → ∞ k e 2 = 0 \lim\limits_{t\to\infty}ke^2=0 tlimke2=0,即在 t → ∞ t\to\infty t e → 0 e\to0 e0,令: a ^ ˙ = − e x 2 = − ∫ 0 t e x 2 d t (10) \dot{\hat{a}}=-ex^2=-\int_{0}^{t}ex^2dt\tag{10} a^˙=ex2=0tex2dt(10)

( 10 ) (10) (10)式代入 ( 7 ) (7) (7)式得出: u = x ˙ d + x 2 ∫ 0 t e x 2 d t + k e u=\dot{x}_d+x^2\int_{0}^{t}ex^2dt+ke u=x˙d+x20tex2dt+ke

即我们要求的最终结果。

============================================================================
以下为Matlab Simulink程序仿真:
在这里插入图片描述
当期望值 x d x_d xd设为常数 2 2 2 a a a设为 [ 2   4 ] [2\space4] [2 4] R e p e a t i n g   S e q u e n c e   S t a i r Repeating\space Sequence\space Stair Repeating Sequence Stair时,仿真结果如下:
在这里插入图片描述
其中黄线为期望值,蓝线为实际值,追踪结果良好。系统输入 u u u曲线如图:在这里插入图片描述
可以看到初始时输入很大,后期输入基本为 0 0 0

Simulink程序链接:
链接:https://pan.baidu.com/s/1IUelPowOM9osWAK-Za3G9Q
提取码:ehxq

  • 6
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个简单的非线性系统有限时间滤波自适应容错控制的Matlab程序示例: ```matlab clc; clear all; close all; % 定义系统模型 A = [0 1;-1 -1]; B = [0;1]; C = [1 0]; D = 0; sys = ss(A,B,C,D); % 设计控制 Q = diag([1,1]); R = 1; [K,S,e] = lqr(A,B,Q,R); Ac = [A-B*K]; Bc = [B]; Cc = [C]; Dc = [D]; % 定义有限时间滤波 gamma = 0.5; T = 0.5; n = 2; A1 = -gamma/T; B1 = 1/T; C1 = 1; D1 = 0; sys1 = tf([B1],[1 A1]); sys2 = tf([C1*D1 B1*D1],[1 A1]); % 定义自适应容错控制 alpha = 1; beta = 1; epsilon = 0.1; K1 = K; K2 = K; K3 = K; K4 = K; e1 = 0; e2 = 0; e3 = 0; e4 = 0; % 进行仿真实验 t = 0:0.01:10; r = ones(size(t)); [y,t,x] = lsim(sys,r,t); for i=1:length(t) % 计算控制输入 x1 = x(i,1); x2 = x(i,2); y1 = y(i); e1 = e1 + alpha*r(i) - beta*y1; u1 = -K1*[x1;x2] + D1*sys1*(e1/n); e2 = e2 + alpha*y1 - beta*C1*sys2*u1; u2 = -K2*[x1;x2] + D1*sys1*(e2/n); e3 = e3 + alpha*y1 - beta*C1*sys2*u2; u3 = -K3*[x1;x2] + D1*sys1*(e3/n); e4 = e4 + alpha*y1 - beta*C1*sys2*u3; u4 = -K4*[x1;x2] + D1*sys1*(e4/n); if abs(u1) > epsilon K1 = K1 + sign(u1)*D1*(sys1/n)'*C1; end if abs(u2) > epsilon K2 = K2 + sign(u2)*D1*(sys1/n)'*C1; end if abs(u3) > epsilon K3 = K3 + sign(u3)*D1*(sys1/n)'*C1; end if abs(u4) > epsilon K4 = K4 + sign(u4)*D1*(sys1/n)'*C1; end % 计算控制输入 u = u4; % 计算系统输出 [y,t,x] = lsim(sys,[r(i);u],t(i:end),x(i,:)); end % 绘制仿真结果 figure(1) plot(t,y,'b','linewidth',2) xlabel('Time(sec)') ylabel('Output') title('Nonlinear System Adaptive Control with Fault Tolerance') grid on ``` 需要注意的是,该程序仅作为一个示例,具体的实现需要结合实际应用场景进行调整。同时,该程序可能存在一些不足,需要在使用过程中进行完善和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值