自适应控制针对参数未知、不确定或者参数经常处于变化之中的系统进行控制器的设计并给出不确定性参数的估计或更新率。
自适应控制主要分为前馈自适应控制、反馈自适应控制、模型参考自适应控制及自校正控制等。
本文主要针对具有不确定参数系统的自适应控制进行分析和总结,以便学习和复习之用。
考虑如下动力学系统
x ˙ = a x + u \dot x= ax+u x˙=ax+u
其中 a a a是未知的,设计自适应控制器 u u u,使得 x → 0 x→0 x→0
定义误差,由于 x → 0 x→0 x→0,因此误差即为 x x x。
误差的动态方程即为状态方程。
设计候选李雅普诺夫函数为 V = 1 2 x 2 V=\frac{1}{2}x^2 V=21x2
V ˙ = x x ˙ = x ( a x + u ) \dot V= x\dot x=x(ax+u) V˙=xx˙=x(ax+u)
设计控制率
欲使 V ˙ \dot V V˙为负定的形式,可以使得 u = − k x − a x u=-kx-ax u=−kx−ax,然而参数 a a a是未知的,需要估计,假定估计值为 a ^ \hat a a^,那么对应的
u = − k x − a ^ x ( 1 ) u=-kx-\hat ax \qquad(1) u=−kx−a^x(1)
令 a ~ = a ^ − a \tilde a=\hat a-a a~=a^−a,则考虑以下李雅普诺夫函数(要考虑 x x x和 a ~ \tilde a a~)
V 1 = V + 1 2 a ~ 2 V_1=V+\frac{1}{2}\tilde a^2 V1=V+21a~2
对李雅普诺夫函数求导并带入公式(1)得:
V ˙ 1 = V ˙ + a ~ a ^ ˙ = x ( a x + u ) + a ~ a ^ ˙ = − k x 2 − a ~ x 2 + a ~ a ^ ˙ = − k x 2 + a ~ ( a ^ ˙ − x 2 ) \begin{aligned} \dot V_1 &=\dot V+\tilde a \dot {\hat a}\\ &=x(ax+u)+ \tilde a \dot {\hat a}\\ &=-kx^2-\tilde ax^2+ \tilde a \dot {\hat a}\\ &=-kx^2+\tilde a(\dot{\hat a}-x^2) \end{aligned} V˙1=V˙+a~a^˙=x(ax+u)+a~a^˙=−kx2−a~x2+a~a^˙=−kx2+a~(a^˙−x2)
设计更新率
欲使 V ˙ 1 \dot V_1 V˙1导数为负定得形式,即可使
a ^ ˙ = x 2 ( 2 ) \dot{\hat a}=x^2 \qquad(2) a^˙=x2(2)
则(1)和(2)即构成控制器和参数的更新率。
而在机器学习或深度学习中都有学习率这一思想,因此我们希望公式(2)所代表的参数更新率也可以调?那么我们如何修改那?
可以修改设计的李雅普诺夫函数为:
V 1 = V + 1 2 γ a ~ 2 V_1=V+\frac{1}{2\gamma}\tilde a^2 V1=V+2γ1a~2
则对应的:
V ˙ 1 = − k x 2 + a ~ ( 1 γ a ^ ˙ − x 2 ) \dot V_1=-kx^2+\tilde a(\frac{1}{\gamma}\dot{\hat a}-x^2) V˙1=−kx2+a~(γ1a^˙−x2)
从而得到更新率
a ^ ˙ = γ x 2 ( 3 ) \dot{\hat a}=\gamma x^2 \qquad(3) a^˙=γx2(3)
从而(1)和(3)构成控制器和新的参数更新率,从而使 x → 0 x→0 x→0,完成设计目标。
上面的设计过程包含了Back-stepping的思想。从上面的设计过程来看,控制器的设计主要有以下五个步骤:
其实上面的设计过程并不是绝对的,只不过照着这个步骤设计,可以显得更加具有条理性。接下来我们也基本按照这种顺序进行控制器的设计。
仍考虑如下动力学系统:
x ˙ = a x + u \dot x= ax+u x˙=ax+u
其中 a a a是未知的,设计自适应控制器 u u u,使得 x → y d x→y_d x→yd, y ˙ d \dot y_d y˙d可求。
e ˙ = x ˙ − y ˙ d = a x + u − y ˙ d \begin{aligned} \dot e &=\dot x -\dot y_d\\ & =ax+u-\dot y_d \end{aligned} e˙=x˙−y˙d=ax+u−y˙d
考虑如下候选李亚普诺夫函数: V 1 = 1 2 e 2 V_1 = \frac{1}{2}e^2 V1=21e2
设计控制率:
V ˙ 1 = e e ˙ = e ( a x + u − y ˙ d ) \begin{aligned} \dot V_1 &=e\dot e\\ & = e(ax+u-\dot y_d) \end{aligned} V˙1=ee˙=e(ax+u−y˙d)
类似上面镇定控制设计一样,我们欲使 V ˙ 1 \dot V_1 V˙1为负定,可以设计
u = − k e − a x + y ˙ d u=-ke-ax+\dot y_d u=−ke−ax+y˙d
然而同样由于 a a a未知,因此我们需要对 a a a进行估计,估计值为 a ^ \hat a a^,估计误差记为 a ~ = a ^ − a \tilde a =\hat a -a a~=a^−a
那么对应的设计的控制率变为:
u = − k e − a ^ x + y ˙ d ( 3 ) \begin{aligned} u=-ke-\hat ax+\dot y_d \end{aligned} \qquad(3) u=−ke−a^x+y˙d(3)
设计参数更新率
对应地考虑新的候选的李雅普诺夫函数: V = V 1 + 1 2 γ a ~ 2 V=V_1+\frac{1}{2\gamma}\tilde a^2 V=V1+2γ1a~2,这次在考虑候选李雅普诺夫函数的时候,直接加上了 γ \gamma γ,从而使得设计的参数更新率具有可调参数。
V ˙ = V ˙ 1 + 1 γ a ~ a ^ ˙ = e ( a x + u − y ˙ d ) + 1 γ a ~ a ^ ˙ = e ( a x − k e − a ^ x + y ˙ d − y ˙ d ) + 1 γ a ~ a ^ ˙ = − k e 2 − a ~ e x + 1 γ a ~ a ^ ˙ = − k e 2 + a ~ ( 1 γ a ^ ˙ − e x ) \begin{aligned} \dot V &=\dot V_1+\frac{1}{\gamma}\tilde a \dot {\hat a}\\ &=e(ax+u-\dot y_d)+\frac{1}{\gamma} \tilde a \dot {\hat a}\\ &=e(ax-ke-\hat ax+\dot y_d-\dot y_d)+\frac{1}{\gamma} \tilde a \dot {\hat a}\\ &=-ke^2-\tilde aex+\frac{1}{\gamma} \tilde a \dot {\hat a}\\ &=-ke^2+\tilde a(\frac{1}{\gamma}\dot{\hat a}-ex) \end{aligned} V˙=V˙1+γ1a~a^˙=e(ax+u−y˙d)+γ1a~a^˙=e(ax−ke−a^x+y˙d−y˙d)+γ1a~a^˙=−ke2−a~ex+γ1a~a^˙=−ke2+a~(γ1a^˙−ex)
则可以设计参数更新率为
a ^ ˙ = γ e x ( 4 ) \dot{\hat a}=\gamma ex \qquad(4) a^˙=γex(4)
从而使得李雅普诺夫函数负定。公式(3)和公式(4)共同构成控制器和参数更新率。
本小节与上一节不同的地方是,由镇定控制变为了跟踪控制,而对应的控制器和参数更新率都有所改变。接下来我们将继续引入 b b b这一参数来分析镇定控制和跟踪控制,以及分析 b b b参数的出现对设计过程中的影响。
现在我们考虑系统状态方程中含有参数 b b b
考虑如下动力学系统:
x ˙ = a x + b u , b > 0 \dot x =ax+bu,b>0 x˙=ax+bu,b>0
其中 a a a为未知参数,b为已知参数,设计控制器使得 x → 0 x→0 x→0。
设计过程类似前面的设计过程,我们快速过一遍。
定义误差,由于 x → 0 x→0 x→0,因此误差即为 x x x。
误差的动态方程即为状态方程。
设计候选李雅普诺夫函数为 V 1 = 1 2 x 2 V_1=\frac{1}{2}x^2 V1=21x2
V ˙ = x x ˙ = x ( a x + b u ) \dot V= x\dot x=x(ax+bu) V˙=xx˙=x(ax+bu)
设计控制率
欲使 V ˙ \dot V V˙为负定的形式,可以使得 u = − k x − a x b u=\frac{-kx-ax}{b} u=b−kx−ax,然而参数 a a a是未知的,需要估计,假定估计值为 a ^ \hat a a^,那么对应的
u = − k x − a ^ x b ( 5 ) u=\frac{-kx-\hat ax}{b} \qquad(5) u=b−kx−a^x(5)
令 a ~ = a ^ − a \tilde a=\hat a-a a~=a^−a,则考虑以下李雅普诺夫函数(要考虑 x x x和 a ~ \tilde a a~)
V = V 1 + 1 2 γ a ~ 2 V=V_1+\frac{1}{2\gamma}\tilde a^2 V=V1+2γ1a~2
对李雅普诺夫函数求导并带入公式(1)得:
V ˙ = V ˙ 1 + 1 γ a ~ a ^ ˙ = x ( a x + b u ) + 1 γ a ~ a ^ ˙ = − k x 2 − a ~ x 2 + 1 γ a ~ a ^ ˙ = − k x 2 + a ~ ( 1 γ a ^ ˙ − x 2 ) \begin{aligned} \dot V &=\dot V_1+\frac{1}{\gamma}\tilde a \dot {\hat a}\\ &=x(ax+bu)+\frac{1}{\gamma} \tilde a \dot {\hat a}\\ &=-kx^2-\tilde ax^2+ \frac{1}{\gamma}\tilde a \dot {\hat a}\\ &=-kx^2+\tilde a(\frac{1}{\gamma}\dot{\hat a}-x^2) \end{aligned} V˙=V˙1+γ1a~a^˙=x(ax+bu)+γ1a~a^˙=−kx2−a~x2+γ1a~a^˙=−kx2+a~(γ1a^˙−x2)
设计更新率
欲使 V ˙ 1 \dot V_1 V˙1导数为负定得形式,即可使
a ^ ˙ = γ x 2 ( 6 ) \dot{\hat a}=\gamma x^2 \qquad(6) a^˙=γx2(6)
则(5)和(6)即构成控制器和参数的更新率, 从而使 x → 0 x→0 x→0,完成设计目标。
我们可以看到设计过程和前面没有什么变化,甚至来回这样推导显得有点啰嗦了。可是当 b b b未知时,你会发现有些不一样了。
两个不确定的参数是否还是可以像前面那样设计那?
考虑如下动力学系统:
x ˙ = a x + b u , b > 0 \dot x =ax+bu,b>0 x˙=ax+bu,b>0
其中 a a a, b b b为未知参数,设计控制器使得 x → 0 x→0 x→0。
按照前面的过程设计控制器,会不会仍旧一番风顺那?
定义误差,由于 x → 0 x→0 x→0,因此误差即为 x x x。
误差的动态方程即为状态方程。
设计候选李雅普诺夫函数为 V 1 = 1 2 x 2 V_1=\frac{1}{2}x^2 V1=21x2
V ˙ = x x ˙ = x ( a x + b u ) \dot V= x\dot x=x(ax+bu) V˙=xx˙=x(ax+bu)
设计控制率
欲使 V ˙ \dot V V˙为负定的形式,可以使得
u = − k x − a x b u=\frac{-kx-ax}{b} u=b−kx−ax
这时我们就会发现问题了,这个 b b b居然在分母上,那我们怎么定义误差那?自然不能继续定义类似于 a ~ = a ^ − a \tilde a=\hat a-a a~=a^−a这样的误差。可以想一想如何继续设计下去,感觉这条路不是很好走了。
换个方法?我们可以注意到当前面当 b = 1 b=1 b=1时,系统设计就没有出现这种情况,那么有没有可能转换成 b = 1 b=1 b=1那?
变换一下系统状态方程为:
x ˙ = a x + b u = b ( a b x + u ) = b ( θ x + u ) \begin{aligned} \dot x &=ax+bu\\ &= b(\frac{a}{b}x+u)\\ &= b(\theta x+u)\\\ \end{aligned} x˙ =ax+bu=b(bax+u)=b(θx+u)
定义误差,由于 x → 0 x→0 x→0,因此误差即为 x x x。
误差的动态方程即为状态方程。
设计候选李雅普诺夫函数为: V 1 = 1 2 x 2 V_1=\frac{1}{2}x^2 V1=21x2,对其求导
V ˙ 1 = x x ˙ = x ( b ( θ x + u ) ) \begin{aligned} \dot V_1 &=x \dot x\\ &=x(b(\theta x+u)) \end{aligned} V˙1=xx˙=x(b(θx+u))
显然这样设计候选李雅普诺夫函数的话,还是会有 b b b在影响,那么能不能让其被抵消,从而不对设计过程产生影响那?
考虑新的候选李雅普诺夫函数为:
V 1 = 1 2 b x 2 V_1 =\frac{1}{2b}x^2 V1=2b1x2
则对 V 1 V_1 V1进行求导,可以得到
V ˙ 1 = 1 b x x ˙ = 1 b x ( b ( θ x + u ) ) = x ( θ x + u ) \begin{aligned} \dot V_1 &=\frac{1}{b}x \dot x\\ &=\frac{1}{b}x(b(\theta x+u))\\ &=x(\theta x+u) \end{aligned} V˙1=b1xx˙=b1x(b(θx+u))=x(θx+u)
变成了在"1. 具有不确定参数系统的自适应镇定控制设计(a未知)"的部分中的设计情况,后续的设计便不再赘述了。
在本节的设计过程中,虽然只多了一个未知的参数 b b b,却给我们的设计带来了困难。同时我们也应该意识到,合理地选取李雅普诺夫函数,可以给我们的控制器设计带来相当大的简化。
考虑如下动力学系统:
x ˙ = a x + b u , b > 0 \dot x= ax+bu,b>0 x˙=ax+bu,b>0
其中 a a a, b b b为未知参数,设计自适应控制器 u u u,使得 x → y d x→y_d x→yd, y ˙ d \dot y_d y˙d可求。
由于其中 a a a, b b b仍是未知的,因此我们参照"4. 具有不确定参数系统的自适应镇定控制设计(a未知,b未知)"中一样,转变系统状态方程为:
x ˙ = a x + b u = b ( a b x + u ) = b ( θ x + u ) \begin{aligned} \dot x &=ax+bu\\ &= b(\frac{a}{b}x+u)\\ &= b(\theta x+u) \end{aligned} x˙=ax+bu=b(bax+u)=b(θx+u)
定义误差变量: e = x − y d e=x-y_d e=x−yd
误差变量的动态方程为:
e ˙ = x ˙ − y ˙ d = b ( θ x + u ) − y ˙ d \begin{aligned} \dot e &=\dot x -\dot y_d\\ & = b(\theta x+u)-\dot y_d \end{aligned} e˙=x˙−y˙d=b(θx+u)−y˙d
考虑如下候选李亚普诺夫函数: V 1 = 1 2 b e 2 V_1 = \frac{1}{2b}e^2 V1=2b1e2
对其求导可以发现
V ˙ 1 = e e ˙ = 1 b e ( b ( θ x + u ) − y ˙ d ) = e ( θ x + u − 1 b y ˙ d ) \begin{aligned} \dot V_1 &=e\dot e\\ & = \frac{1}{b}e(b(\theta x+u)-\dot y_d)\\ & = e(\theta x+u-\frac{1}{b}\dot y_d) \end{aligned} V˙1=ee˙=b1e(b(θx+u)−y˙d)=e(θx+u−b1y˙d)
式子中还是存在 b b b,但是这个时候我们就可以引入一个新的变量来估计 b b b了。定义 θ 2 = 1 b \theta_2=\frac{1}{b} θ2=b1,估计误差定义为:
θ ~ 2 = θ ^ 2 − θ 2 \tilde \theta_2 = \hat \theta_2-\theta_2 θ~2=θ^2−θ2
此外还有 θ ~ = θ ^ − θ \tilde \theta =\hat \theta-\theta θ~=θ^−θ的误差量
考虑新的候选李雅普诺夫函数: V = V 1 + 1 2 θ ~ 2 + 1 2 θ ~ 2 2 V=V_1+\frac{1}{2}\tilde \theta^2+\frac{1}{2}\tilde \theta_2^2 V=V1+21θ~2+21θ~22
设计控制率
对 V V V求导:
V ˙ = V ˙ 1 + θ ~ θ ^ ˙ + θ ~ 2 θ ^ 2 ˙ = e ( θ x + u − θ 2 y ˙ d ) + θ ~ θ ^ ˙ + θ ~ 2 θ ^ 2 ˙ ( 7 ) \begin{aligned} \dot V &=\dot V_1+ \tilde \theta \dot {\hat\theta}+ \tilde \theta_2 \dot {\hat \theta_2}\\ &= e(\theta x+u-\theta_2\dot y_d)+ \tilde \theta \dot {\hat\theta}+ \tilde \theta_2 \dot {\hat \theta_2}\\ \end{aligned} \qquad(7) V˙=V˙1+θ~θ^˙+θ~2θ^2˙=e(θx+u−θ2y˙d)+θ~θ^˙+θ~2θ^2˙(7)
则此时可以设计
u = − θ ^ x − k e + θ ^ 2 y ˙ d ( 8 ) u=-\hat \theta x-ke +\hat \theta_2 \dot y_d \qquad(8) u=−θ^x−ke+θ^2y˙d(8)
设计更新率
将公式(8)带入到公式(7)中去,得到
V ˙ = − k e 2 + θ ~ e x + θ ~ 2 e y ˙ d + θ ~ θ ^ ˙ + θ ~ 2 θ ^ 2 ˙ = − k e 2 + ( θ ^ ˙ − e x ) θ ~ + ( θ ^ 2 ˙ − y ˙ d e ) θ ~ 2 \begin{aligned} \dot V &=-ke^2+\tilde \theta ex+\tilde \theta_2e\dot y_d+ \tilde \theta \dot {\hat\theta}+ \tilde \theta_2 \dot {\hat \theta_2}\\ &=-ke^2+(\dot {\hat \theta}-ex)\tilde \theta+(\dot {\hat \theta_2}-\dot y_d e)\tilde \theta_2 \end{aligned} V˙=−ke2+θ~ex+θ~2ey˙d+θ~θ^˙+θ~2θ^2˙=−ke2+(θ^˙−ex)θ~+(θ^2˙−y˙de)θ~2
欲使 V ˙ \dot V V˙为负定的形式,可以使得
θ ^ ˙ = e x ( 9 ) \dot {\hat \theta}=ex\qquad(9) θ^˙=ex(9)
θ ^ 2 ˙ = e y ˙ d ( 10 ) \dot {\hat \theta_2}=e\dot y_d\qquad(10) θ^2˙=ey˙d(10)
公式(7)(8)(10)共同组成系统的控制器和参数更新率。
注意,在本节设计中,我没有加入参数的可调节参数 γ \gamma γ是为了说明设计过程,设计时也可以加上。
系统的设计目标发生变化了,设计的过程也发生了些许变化,但总的来说还是在原来的基础上一步步增加,变化。
这篇文章主要讲述了具有不确定参数系统的自适应控制,由浅入深,一步步设计。相信读完会有所收获。
如果觉得我写的不错,请给我一个免费的赞,如有错误,也欢迎向我反馈。