在设计一个控制系统时,其闭环稳定性,指令跟踪能力以及应对各种不确定因素(如模型误差,环境扰动,信号噪声等)的鲁棒性都是非常重要的性能参考指标.然而,当我们的基线控制器运行在充满不确定性的环境中时,其各项性能指标都不可避免地遭受不同程度的损失. 因此,我们提出这样一个问题:
是否可以通过某种控制器设计方法,提升控制器在充满不确定因素的环境中运行的性能,甚至恢复至与基线控制器在理想条件下运行的性能相当的水平?
基于这个问题,我们引入模型参考控制的概念.其设计理念是通过设计一个稳定的,理想条件下可预测的,满足我们需求的系统模型作为参考模型,再利用实际信号和参考模型信号之间的残差驱动着去修正最终控制律,使得实际的闭环系统特性趋近于预设的理想模型特性,即达到模型跟踪的效果.在这个过程中,理想模型中是不存在不确定因素的,因此模型参考控制也可以达到减少实际系统中不确定因素带来的性能损失的作用.
不失一般性的,我们将存在不确定度的开环系统以以下形式建立状态空间模型
x ˙ p = A p x p + B p Λ u + B p δ p ( x p ) \dot{x}_p=A_px_p+B_p\Lambda u +B_p\delta_p(x_p) x˙p=Apxp+BpΛu+Bpδp(xp)
其中 A p , B p A_p,B_p Ap,Bp 分别是系统矩阵与控制矩阵, x p x_p xp 是系统状态量, u u u 是系统控制律.
上述状态空间模型的维度信息如下:
x p ∈ ℜ n p × 1 A p ∈ ℜ n p × n p B p ∈ ℜ n p × m Λ ∈ ℜ m × m u ∈ ℜ m × 1 δ p ∈ ℜ m × 1 \begin{aligned} x_p &\in \Re^{n_p \times 1} \\ A_p &\in \Re^{n_p \times n_p} \\ B_p &\in \Re^{n_p \times m} \\ \Lambda &\in \Re^{m \times m} \\ u &\in \Re^{m \times1} \\ \delta_p &\in \Re^{m \times 1} \\ \end{aligned} xpApBpΛuδp∈ℜnp×1∈ℜnp×np∈ℜnp×m∈ℜm×m∈ℜm×1∈ℜm×1
Λ \Lambda Λ 被定义为已知的控制有效性不确定度,其形式如下
Λ = [ Λ 1 0 ⋯ 0 0 Λ 2 ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ Λ m ] ≻ 0 \Lambda = \left[ \begin{matrix} \Lambda_1 & 0 & \cdots & 0 \\ 0 & \Lambda_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \Lambda_m \\ \end{matrix} \right] \succ0 Λ=⎣⎢⎢⎢⎡Λ10⋮00Λ2⋮0⋯⋯⋱⋯00⋮Λm⎦⎥⎥⎥⎤≻0
δ p ( x p ) \delta_p(x_p) δp(xp) 被定义为系统非线性不确定度,其形式如下
δ p ( x p ) = W p T σ p ( x p ) \begin{aligned} &\delta_p(x_p)=W_p^T \sigma_p(x_p)\\& \end{aligned} δp(xp)=WpTσp(xp)
其维度信息如下:
δ p ∈ ℜ m × 1 W p ∈ ℜ n s × m σ p ∈ ℜ n s × 1 \begin{aligned} \delta_p &\in \Re^{m \times 1}\\ W_p &\in \Re^{n_s \times m}\\ \sigma_p &\in \Re^{n_s \times 1} \end{aligned} δpWpσp∈ℜm×1∈ℜns×m∈ℜns×1
其中 W p W_p Wp 是未知的权重, σ p \sigma_p σp 是已知的基函数,其形式如下
σ p ( x p ) = [ σ p 1 ( x p ) ⋯ σ p s ( x p ) ] σ p i : ℜ n p × 1 → ℜ n s × 1 , a locally lipschitz function \begin{aligned} &\sigma_p(x_p)=[\sigma_{p_1}(x_p) \ \cdots \ \sigma_{p_s}(x_p)] \\ &\sigma_{p_i}: \Re^{n_p\times1} \to \Re^{n_s\times1},\text{ a locally lipschitz function} \end{aligned} σp(xp)=[σp1(xp) ⋯ σps(xp)]σpi:ℜnp×1→ℜns×1, a locally lipschitz function
因此,我们可以将系统的状态空间方程重写为
x ˙ p = A p x p + B p Λ [ u + Λ − 1 B p δ p ( x p ) ] \dot{x}_p=A_px_p+Bp\Lambda[u + \Lambda^{-1}B_p\delta_p(x_p)] x˙p=Apxp+BpΛ[u+Λ−1Bpδp(xp)]
值得注意的是,上述方程的形式告诉我们,控制律 u u u 可以访问所有的不确定度. 那么,这是否意味着我们可以通过设计控制律 u u u
来达到消除系统不确定度带来的影响的目的呢? 先不着急,带着这个问题,我们先在不考虑不确定度的前提下为这个开环系统设计一个基线控制器.
首先,我们将整体控制律 u u u 定义为以下的形式
u = u n + u a u = u_n + u_a u=un+ua
其中 u n u_n un 是在理想(即模型准确,不存在不确定因素)的条件下为开环系统设计的控制律,称为基线控制律.
u a u_a ua 则是为消除系统不确定度影响而设计的控制律,称为自适应控制律.
现在,我们就为这个理想系统设计基线控制器,在这种情况下 u a = 0 u_a = 0 ua=0,我们将基线控制律 u n u_n un设计为以下形式
u = u n + u a = u n = − K x x p + K r r u = u_n + u_a = u_n = -K_xx_p+K_rr u=un+ua=un=−Kxxp+Krr
其中 K x K_x Kx 为反馈增益,&x_p&为反馈的状态量, K r K_r Kr 为前馈增益, r r r为前馈的指令
上述控制律的维度信息如下:
x p ∈ ℜ n p × 1 K x ∈ ℜ m × n p r ∈ ℜ n c × 1 K r ∈ ℜ m × n c \begin{aligned} x_p &\in \Re^{n_p \times 1} \\ K_x &\in \Re^{m \times n_p} \\ r &\in \Re^{n_c \times 1} \\ K_r &\in \Re^{m \times n_c} \\ \end{aligned} xpKxrKr∈ℜnp×1∈ℜm×np∈ℜnc×1∈ℜm×nc
将上述基线控制律代入到理想开环系统方程中,我们得到了
x ˙ p = A p x p + B p u n = A p x p + B p ( − K x x p + K r r ) = ( A p − B p K x ) x p + B p K r r = A r x p + B r r \begin{aligned} \dot{x}_p&=A_px_p+B_pu_n\\ &=A_px_p+B_p(-K_xx_p+K_rr)\\ &=(A_p-B_pK_x)x_p+B_pK_rr\\ &=A_rx_p+B_rr \end{aligned} x˙p=Apxp+Bpun=Apxp+Bp(−Kxxp+Krr)=(Ap−BpKx)xp+BpKrr=Arxp+Brr
因此,我们将参考模型定义为
x ˙ r = A r x r + B r r \dot{x}_r = A_rx_r+B_rr x˙r=Arxr+Brr
其中 A r , B r A_r,B_r Ar,Br 分别是系统矩阵与控制矩阵
现在,我们将基线控制律带入到存在不确定度的开环系统中,可得
x ˙ p = A p x p + B p Λ u + B p δ p ( x p ) = A p x p + B p Λ [ u n + u a ] + B p δ p ( x p ) = A p x p + B p Λ [ u n + u a ] + B p δ p ( x p ) + B p K x x p − B p K x x p + B p K r r − B p K r r = ( A p − B p K x ) x p + B p K r r + B p Λ [ u n + u a + Λ − 1 W p T σ p ( x p ) − Λ − 1 ( − K x x p + K r r ) ] = A r x p + B r r + B p Λ [ u n + u a + Λ − 1 W p T σ p ( x p ) − Λ − 1 u n ] = A r x p + B r r + B p Λ [ ( I − Λ − 1 ) u n + Λ − 1 W p T σ p ( x p ) + u a ] \begin{aligned} \dot{x}_p &=A_px_p+B_p\Lambda u +B_p\delta_p(x_p)\\ &=A_px_p+B_p\Lambda[u_n+u_a]+B_p\delta_p(x_p)\\ &=A_px_p+B_p\Lambda[u_n+u_a]+B_p\delta_p(x_p)+\color{red}{B_pK_xx_p-B_pK_xx_p+B_pK_rr-B_pK_rr}\\ &=(A_p-B_pK_x)x_p+B_pK_rr+B_p\Lambda[u_n+u_a+\Lambda^{-1}W_p^T\sigma_p(x_p)-\Lambda^{-1}(-K_xx_p+K_rr)]\\ &=A_rx_p+B_rr+B_p\Lambda[u_n+u_a+\Lambda^{-1}W_p^T\sigma_p(x_p)-\Lambda^{-1}u_n]\\ &=A_rx_p+B_rr+B_p\Lambda[(I-\Lambda^{-1})u_n+\Lambda^{-1}W_p^T\sigma_p(x_p)+u_a] \end{aligned} x˙p=Apxp+BpΛu+Bpδp(xp)=Apxp+BpΛ[un+ua]+Bpδp(xp)=Apxp+BpΛ[un+ua]+Bpδp(xp)+BpKxxp−BpKxxp+BpKrr−BpKrr=(Ap−BpKx)xp+BpKrr+BpΛ[un+ua+Λ−1WpTσp(xp)−Λ−1(−Kxxp+Krr)]=Arxp+Brr+BpΛ[un+ua+Λ−1WpTσp(xp)−Λ−1un]=Arxp+Brr+BpΛ[(I−Λ−1)un+Λ−1WpTσp(xp)+ua]
定义
W ≜ [ Λ − 1 W p T I − Λ − 1 ] T σ ( x p , u n ) ≜ [ σ p ( x p ) u n ] T \begin{aligned} &W\triangleq[\Lambda^{-1}W_p^T\quad I-\Lambda^{-1}]^T\\ &\sigma(x_p,u_n)\triangleq[\sigma_p(x_p)\quad u_n]^T \end{aligned} W≜[Λ−1WpTI−Λ−1]Tσ(xp,un)≜[σp(xp)un]T
最终我们可得
x ˙ p = A r x p + B r r + B p Λ [ W T σ ( x p , u n ) + u a ] \dot{x}_p=\color{green}{A_rx_p+B_rr}+\color{red}{B_p\Lambda[W^T\sigma(x_p,u_n)+u_a]} x˙p=Arxp+Brr+BpΛ[WTσ(xp,un)+ua]
其中绿色的部分代表理想模型特性,红色部分代表需自适应的项.
显然,我们想要让红色项等于0,因此
u a = − W ^ T σ u_a=-\hat{W}^T\sigma ua=−W^Tσ
其中 W ^ \hat{W} W^ 是对未知权重真值 W W W的预测
定义
W ~ = W ^ − W u a + W T σ = − W ^ T σ ( x p , u n ) + W T σ = − W ~ σ \begin{aligned} &\widetilde{W}=\hat{W}-W\\ &u_a+W^T\sigma=-\hat{W}^T\sigma(x_p,u_n)+W^T\sigma=-\widetilde{W}\sigma \end{aligned} W =W^−Wua+WTσ=−W^Tσ(xp,un)+WTσ=−W σ
最终,我们得到的闭环系统状态方程为
x ˙ p = A r x p + B r r − B p Λ W ~ T σ \dot{x}_p=\color{green}{A_rx_p+B_rr}-\color{red}{B_p\Lambda\widetilde{W}^T\sigma} x˙p=Arxp+Brr−BpΛW Tσ
我们费了很大的精力去构造这个闭环系统状态方程,其目的就是将不确定度从整体系统中分离出来.至此,我们的方程就清晰地分为两个部分,绿色的已知项和红色的未知项.我们也知道了我们想要跟踪什么(绿色的),想要消除什么(红色的).接下来我们要做的就是利用实际信号和参考模型信号之间的残差去设计最终控制律.
定义误差 e e e 为
e ≜ x p − x r e \triangleq x_p - x_r e≜xp−xr
因此,误差动力学方程为
e ˙ = x ˙ p − x ˙ r = A r x p + B r r − B p Λ W ~ T σ − A r x r − B r r = A r e − B p Λ W ~ T σ \begin{aligned}\dot{e} &=\dot{x}_p-\dot{x}_r\\ &=A_rx_p+B_rr-B_p\Lambda\widetilde{W}^T\sigma-A_rx_r-B_rr\\ &=A_re-B_p\Lambda\widetilde{W}^T\sigma \end{aligned} e˙=x˙p−x˙r=Arxp+Brr−BpΛW Tσ−Arxr−Brr=Are−BpΛW Tσ
首先让我们了解一下李雅普诺夫第二稳定判据
考虑一个函数 V ( x ) : ℜ n → ℜ V(x) : \Re_n \to \Re V(x):ℜn→ℜ 使得
V ( x ) ⪰ 0 只有在 x = 0 处 等 号 成 立 V ˙ ( x ( t ) ) ≺ 0 \begin{aligned} &V(x) \succeq 0 \text{ 只有在 } x=0 处等号成立\\ &\dot{V}(x(t)) \prec 0 \end{aligned} V(x)⪰0 只有在 x=0处等号成立V˙(x(t))≺0
则 V ( x ) V(x) V(x) 成为李雅普诺夫候选函数(Lyapunov candidate),且系統(依李雅普诺夫的观点)为渐进稳定。
基于李雅普诺夫稳定判据和误差动力学模型,我们要设计一个 W ~ \widetilde{W} W 的参数调整机制,以满足下述性质
lim t → ∞ e = 0 \lim_{t \to \infty}e = 0 t→∞lime=0
我们选择李雅普诺夫候选函数为
V = e T P e + γ − 1 t r ( W ~ Λ 1 2 ) T t r ( W ~ Λ 1 2 ) V=e^TPe+\gamma^{-1}tr(\widetilde{W}\Lambda^{\frac{1}{2}})^Ttr(\widetilde{W}\Lambda^{\frac{1}{2}}) V=eTPe+γ−1tr(W Λ21)Ttr(W Λ21)
其中 γ \gamma γ 是一个正实数学习率, P P P 是一个正定矩阵
( P ≻ 0 ) (P\succ0) (P≻0) 且满足连续李雅普诺夫方程:
A r T P + P A r = − Q A_r^TP+PA_r=-Q ArTP+PAr=−Q
其中 Q Q Q 是一个正定矩阵 ( Q ≻ 0 ) (Q\succ0) (Q≻0) , ,\quad , A r A_r Ar 是 Hurwitz ( R e ( λ i ) < 0 ) (Re(\lambda_i)<0) (Re(λi)<0)
我们选择的李雅普诺夫候选函数满足二次型,因此其在除平衡点外都满足 V ≻ 0 V\succ0 V≻0.
在继续之前,我们先了解一些矩阵迹的性质,这对于我们后面分析 V ˙ ( x ) \dot{V}(x) V˙(x) 很有帮助.
t r ( a b ) = t r ( b a ) = a b t r ( a + b ) = t r ( a ) + t r ( b ) \begin{aligned} &tr(ab)=tr(ba)=ab\\ &tr(a+b)=tr(a)+tr(b) \end{aligned} tr(ab)=tr(ba)=abtr(a+b)=tr(a)+tr(b)
现在,我们开始分析 V ˙ \dot{V} V˙
V ˙ = e T P e ˙ + e ˙ T P e + 2 γ − 1 t r ( Λ W ~ T W ^ ˙ ) = e T P ( A r e − B p Λ W ~ T σ ) + ( A r e − B p Λ W ~ T σ ) T P e + 2 γ − 1 t r ( Λ W ~ T W ^ ˙ ) = e T ( P A r + A r T P ) e − 2 e T P B p Λ W ~ T σ + 2 γ − 1 t r ( Λ W ~ T W ^ ˙ ) = − e T Q e − 2 t r ( Λ W ~ T σ e T P B p ) + 2 γ − 1 t r ( Λ W ~ T W ^ ˙ ) = − e T Q e − 2 γ − 1 t r ( γ Λ W ~ T σ e T P B p − Λ W ~ T W ^ ˙ ) = − e T Q e − 2 γ − 1 t r ( Λ W ~ T ( γ σ e T P B p − W ^ ˙ ) ) \begin{aligned} \dot{V} &=e^TP\dot{e}+\dot{e}^TPe+2\gamma^{-1}tr(\Lambda\widetilde{W}^T\dot{\hat{W}})\\ &=e^TP(A_re-B_p\Lambda\widetilde{W}^T\sigma)+(A_re-B_p\Lambda\widetilde{W}^T\sigma)^TPe+2\gamma^{-1}tr(\Lambda\widetilde{W}^T\dot{\hat{W}})\\ &=e^T(PA_r+A_r^TP)e-2e^TPB_p\Lambda\widetilde{W}^T\sigma+2\gamma^{-1}tr(\Lambda\widetilde{W}^T\dot{\hat{W}})\\ &=-e^TQe-2tr(\Lambda\widetilde{W}^T\sigma e^TPB_p)+2\gamma^{-1}tr(\Lambda\widetilde{W}^T\dot{\hat{W}})\\ &=-e^TQe-2\gamma^{-1}tr(\gamma\Lambda\widetilde{W}^T\sigma e^TPB_p-\Lambda\widetilde{W}^T\dot{\hat{W}})\\ &=-e^TQe-2\gamma^{-1}tr(\Lambda\widetilde{W}^T(\gamma\sigma e^TPB_p-\dot{\hat{W}})) \end{aligned} V˙=eTPe˙+e˙TPe+2γ−1tr(ΛW TW^˙)=eTP(Are−BpΛW Tσ)+(Are−BpΛW Tσ)TPe+2γ−1tr(ΛW TW^˙)=eT(PAr+ArTP)e−2eTPBpΛW Tσ+2γ−1tr(ΛW TW^˙)=−eTQe−2tr(ΛW TσeTPBp)+2γ−1tr(ΛW TW^˙)=−eTQe−2γ−1tr(γΛW TσeTPBp−ΛW TW^˙)=−eTQe−2γ−1tr(ΛW T(γσeTPBp−W^˙))
我们已知 Q ≻ 0 Q\succ0 Q≻0,因此我们将自适应律设计为
W ^ ˙ = γ σ e T P B p \color{red}{\dot{\hat{W}}=\gamma\sigma e^TPB_p} W^˙=γσeTPBp
由此可得
V ˙ = − e T Q e ≺ 0 \dot{V}=-e^TQe\prec0 V˙=−eTQe≺0
综上所述,这样设计的自适应律满足李雅普诺夫第二稳定判据,可以保证闭环系统的稳定性.而且通过观察可以发现,自适应律的形式为:学习率 × \times × 状态量 $\times e^TpB_p, $
且自适应律本身为关于 W ^ \hat{W} W^ 的微分方程,因此模型参考自适应控制本质上就是非线性积分控制.
根据李雅普诺夫第二判据,可得
( e , W ~ ) ∈ L ∞ ( 有界且稳定 ) (e,\widetilde{W}) \in L_{\infty}(\text{有界且稳定}) (e,W )∈L∞(有界且稳定)
进一步的我们可以分析 V V V 的二阶导数,
V ¨ = − [ e T Q e ˙ + e ˙ T Q e ] = − [ e T Q ( A r e − B p Λ W ~ T σ ( e + x r , u n ) ) + ( A r e − B p Λ W ~ T σ ( e + x r , u n ) ) T Q e ] \begin{aligned} \ddot{V} &=-[e^TQ\dot{e}+\dot{e}^TQe] \\ &=-[e^TQ(A_re-B_p\Lambda\widetilde{W}^T\sigma(e+x_r,u_n))+(A_re-B_p\Lambda\widetilde{W}^T\sigma(e+x_r,u_n))^TQe] \end{aligned} V¨=−[eTQe˙+e˙TQe]=−[eTQ(Are−BpΛW Tσ(e+xr,un))+(Are−BpΛW Tσ(e+xr,un))TQe]
因为 e , x r , u n e,x_r,u_n e,xr,un 有界, A r A_r Ar 是 Hurwitz, W ~ = W ^ − W = W ^ − 常 数 \widetilde{W} = \hat{W} - W = \hat{W} - 常数 W =W^−W=W^−常数 有界. 根据 Barbalet 引理,可得
∵ V ¨ 有界 ∴ V ˙ = − e T Q e → 0 as t → ∞ ( lim t → ∞ e ( t ) = 0 ) 这个性质被称为 UUB condition(一致最终有界youjieyoujiyoujyouyo) → 即实际状态量全局地渐进地跟踪参考模型中的理想状态 除此之外,我们也发现模型参考自适应控制中所有的过程量都是有界的(当然这里的描述并不完全正确,后续我们会展开讲解) \begin{aligned} &\because\ddot{V} \text{ 有界} \\ &\therefore\dot{V} = -e^TQe \to 0 \quad\text{as}\quad t \to \infty \quad(\lim_{t \to \infty}e(t)=0)\\ &\text{这个性质被称为 UUB condition(一致最终有界youjieyoujiyoujyouyo) } \quad\to\quad \text{即实际状态量全局地渐进地跟踪参考模型中的理想状态} \\ &\text{除此之外,我们也发现模型参考自适应控制中所有的过程量都是有界的(当然这里的描述并不完全正确,后续我们会展开讲解)} \\ & \end{aligned} ∵V¨ 有界∴V˙=−eTQe→0ast→∞(t→∞lime(t)=0)这个性质被称为 UUB condition(一致最终有界youjieyoujiyoujyouyo) →即实际状态量全局地渐进地跟踪参考模型中的理想状态除此之外,我们也发现模型参考自适应控制中所有的过程量都是有界的(当然这里的描述并不完全正确,后续我们会展开讲解)
值得注意的一点是上述所有的性质都并不保障 W ~ → 0 \widetilde{W} \to 0 W →0 as t → ∞ t \to \infty t→∞ ,这意味着自适应参数 W ~ \widetilde{W} W 并不一定
会收敛于其真值,甚至不一定会收敛于一个常数. 因此,模型参考自适应的方法并不能帮助你去做参数辨识的工作,它只能保证你的实际状态跟随参考模型的
理想状态,并不保证模型中的任一项收敛于真值.实际上,想要收敛于真值,是要满足一定的条件的(Persistent Excitation),但这并不是我们今天想要
讨论的重点.
System Dynamics x ˙ p = A p x p + B p Λ u + B p δ p ( x p ) Total Control Law u = u n + u a Nominal Control Law u n = − K x x p + K r r A r = A p − B p K x B r = B p K r Adaptive Control Law u a = − W ^ T σ W ^ ˙ = γ σ e T P B p = γ σ ( x p − x r ) T P B p σ ( x p , u n ) ≜ [ σ p ( x p ) u n ] T x ˙ r = A r x r + B r r A r T P + P A r = − Q \begin{aligned} \text{System Dynamics}& \\ &\dot{x}_p=A_px_p+B_p\Lambda u +B_p\delta_p(x_p)\\ \text{Total Control Law}& \\ &u = u_n + u_a \\ \text{Nominal Control Law}\\ &u_n = -K_xx_p + K_rr \\ &A_r = A_p - B_pK_x \\ &B_r = B_pK_r \\ \text{Adaptive Control Law} \\ &u_a=-\hat{W}^T\sigma\\ &\dot{\hat{W}}=\gamma\sigma e^TPB_p=\gamma\sigma (x_p-x_r)^TPB_p\\ &\sigma(x_p,u_n)\triangleq[\sigma_p(x_p)\quad u_n]^T\\ &\dot{x}_r=A_rx_r+B_rr\\ &A_r^TP+PA_r=-Q\\ \end{aligned} System DynamicsTotal Control LawNominal Control LawAdaptive Control Lawx˙p=Apxp+BpΛu+Bpδp(xp)u=un+uaun=−Kxxp+KrrAr=Ap−BpKxBr=BpKrua=−W^TσW^˙=γσeTPBp=γσ(xp−xr)TPBpσ(xp,un)≜[σp(xp)un]Tx˙r=Arxr+BrrArTP+PAr=−Q
以上即是带大家了解何为模型参考自适应控制,使用它是要解决什么问题,它是如何基于李雅普诺夫稳定判据去设计自适应律的,以及它内部参数的一些性质.
后续计划更新:
1.百度apollo自动驾驶中的模型参考自适应控制器是如何设计的
2.基于Projection方法处理模型参考自适应控制运用中遇到的参数飘移(Parameter Drifting)的问题,实现鲁棒的模型参考自适应控制
3.如何借鉴Luenberger观测器的设计模式对误差动力学(即模型跟踪)进行加速,以解决在自适应初期遇到的震荡问题