【状态空间漫游记】(四)模型参考自适应控制(MRAC):基于状态空间的自适应控制(KF法、GF法)

目录

1  状态空间的直接模型跟随控制

1.1  理想模型跟随

1.2  模型跟随的埃尔茨贝格条件

2  增益反馈型自适应模型跟随控制

2.1  方法推导

2.2  仿真示例

3  状态反馈型自适应模型跟随控制

3.1  方法推导

3.2  仿真示例

参考文献

下载链接

友情链接


        上篇文章介绍了针对传递函数的变增益法、和变参数法两种自适应控制方案,本文将针对状态空间继续给出两种类型自适应控制方法:增益反馈型(KF法)、状态反馈型(GF法)

        对于状态空间而言,模型参考自适应控制实际上就是让实际模型跟随某一确定的理想模型,即模型跟随控制。在介绍自适应方法之前,首先给出参数已知条件下的模型跟随控制方法。


1  状态空间的直接模型跟随控制

1.1  理想模型跟随

        假设期望的理想模型,即参考模型为

\boldsymbol{\dot{x}}_m=\boldsymbol{A}_m\boldsymbol{x}_m+\boldsymbol{B}_m\boldsymbol{r},

其参数为已知,我们的任务是通过设计合适的控制律u,使实际模型

\boldsymbol{\dot{x}}=\boldsymbol{Ax}+\boldsymbol{Bu}

与已知的参考模型保持一致。为此,可以将控制律设计为具有输入前馈与状态反馈的形式:

\boldsymbol{u}=\boldsymbol{Kr}-\boldsymbol{Fx},        (1)

从而使得实际的闭环系统变为

\boldsymbol{\dot{x}}=\left (\boldsymbol{A}-\boldsymbol{BF} \right )\boldsymbol{x}+\boldsymbol{BKr}.

对比已知模型,求解期望的增益矩阵F^*,K^*

\begin{cases} \boldsymbol{A}-\boldsymbol{BF}\to \boldsymbol{A}_m \\ \boldsymbol{BK}\to\boldsymbol{B}_m \end{cases}\Rightarrow \begin{cases} \boldsymbol{F}^*=\boldsymbol{B}^\dagger\left ( \boldsymbol{A}-\boldsymbol{A}_m \right ) \\ \boldsymbol{K}^*=\boldsymbol{B}^\dagger\boldsymbol{B}_m \end{cases}        (2)

其中控制矩阵B取伪逆(左伪逆)

\boldsymbol{B}^\dagger=\left (\boldsymbol{B}^\mathrm{T}\boldsymbol{B} \right )^{-1}\boldsymbol{B}^\mathrm{T},

能够使得控制矩阵B在不为方阵时也满足

\boldsymbol{B}^\dagger\boldsymbol{B}=\boldsymbol{I}.

特别地,如果B本身可逆,就有\boldsymbol{B}^\dagger=\boldsymbol{B}^{-1}。换言之,只要按(2)式确定增益矩阵,就可以让实际系统完全跟随参考系统。

1.2  模型跟随的埃尔茨贝格条件

        然而,并非所有系统都能被完全地跟随,因为左伪逆右乘于原矩阵时,并不能保证结果为单位矩阵,即

\boldsymbol{B}\boldsymbol{B}^\dagger\neq\boldsymbol{I}.

这就会造成当我们把由(2)确定的控制律代入实际系统时,模型跟随的等式左右两边不一定成立。而模型跟随等式成立(能够实现理想跟随),当且仅当以下条件满足:

\begin{cases} \left ( \boldsymbol{I}-\boldsymbol{B}\boldsymbol{B}^\dagger\right )\left ( \boldsymbol{A}-\boldsymbol{A}_m \right )=\boldsymbol{0} \\ \left ( \boldsymbol{I}-\boldsymbol{B}\boldsymbol{B}^\dagger\right )\boldsymbol{B}_m=\boldsymbol{0} \end{cases}        (3)

该式也称模型跟随控制的埃尔茨贝格(Erzberger)条件。在实际应用中,首先应当验证所设计的参考模型与实际模型是否满足上述条件,若不满足,就不能使用本文所讨论的自适应控制策略。


2  增益反馈型自适应模型跟随控制

        由前一节可知,当实际系统与参考系统满足Erzberger条件时,能够实现理想的模型跟随。然而,实际的模型通常未知,或存在参数误差,因而理想中的目标增益矩阵\boldsymbol{F}^*,\;\boldsymbol{K}^*是无法直接求解的。为此,引入以下自适应方法,使实际系统在运行过程中逐渐修正并最终跟随上参考模型。

2.1  方法推导

        首先介绍增益反馈型的自适应模型跟随控制,一般将反馈矩阵记作F、增益前馈矩阵记作K,故又称KF法。首先定义如下的误差矩阵:

\boldsymbol{\tilde{F}}:=\boldsymbol{F}^*-\boldsymbol{F},\;\boldsymbol{\tilde{K}}:=\boldsymbol{K}^*-\boldsymbol{K},

以及广义误差

\boldsymbol{e}:=\boldsymbol{x}_m-\boldsymbol{x}.

由此可得广义误差的状态方程为

\begin{aligned} \dot{\boldsymbol{e}}&=\dot{\boldsymbol{x}}_m-\dot{\boldsymbol{x}} \\&= \boldsymbol{A}_m\boldsymbol{x}_m+\boldsymbol{B}_m\boldsymbol{r} - \left (\boldsymbol{A}-\boldsymbol{BF} \right )\boldsymbol{x}-\boldsymbol{BKr} \\&= \boldsymbol{A}_m\boldsymbol{x}_m-\boldsymbol{A}_m\boldsymbol{x}+\boldsymbol{A}_m\boldsymbol{x}+\boldsymbol{B}_m\boldsymbol{r} - \boldsymbol{A}\boldsymbol{x}+\boldsymbol{BF}\boldsymbol{x}-\boldsymbol{BKr}\\&= \boldsymbol{A}_m\boldsymbol{e}+\left (\boldsymbol{A}_m-\boldsymbol{A}+\boldsymbol{BF} \right )\boldsymbol{x}+\left (\boldsymbol{B}_m-\boldsymbol{BK} \right )\boldsymbol{r}. \end{aligned}

我们知道,如果实际模型的参数均已知,则由(2)可得理想的目标矩阵为F*与K*,即满足

\boldsymbol{B}\boldsymbol{F}^*=\left ( \boldsymbol{A}-\boldsymbol{A}_m \right ) ,\;\boldsymbol{B}\boldsymbol{K}^*=\boldsymbol{B}_m.

因此有

\begin{aligned} \dot{\boldsymbol{e}}&= \boldsymbol{A}_m\boldsymbol{e}+\left (-\boldsymbol{BF}^*+\boldsymbol{BF} \right )\boldsymbol{x}+\left (\boldsymbol{BK}^*-\boldsymbol{BK} \right )\boldsymbol{r} \\&= \boldsymbol{A}_m\boldsymbol{e}-\boldsymbol{B\tilde{F}}\boldsymbol{x}+\boldsymbol{B\tilde{K}}\boldsymbol{r} \end{aligned}        (4)

其中的维度关系为:

\boldsymbol{u},\boldsymbol{r}\in \mathbb{R}^{p},\quad \boldsymbol{\tilde{F}}\in \mathbb{R}^{p\times n},\quad\boldsymbol{\tilde{K}}\in \mathbb{R}^{p\times p}.

选取待定Lyapunov函数为

V( \boldsymbol{e},\boldsymbol{\tilde{F}},\boldsymbol{\tilde{K}} )=\dfrac{1}{2}\boldsymbol{e}^\mathrm{T}\boldsymbol{Pe}+\dfrac{1}{2}\mathrm{tr}\left (\boldsymbol{\tilde{F}\Gamma}\boldsymbol{\tilde{F}}^\mathrm{T} \right )+\dfrac{1}{2}\mathrm{tr}\left (\boldsymbol{\tilde{K}\Lambda}\boldsymbol{\tilde{K}}^\mathrm{T} \right ),        (5)

其中\boldsymbol{0}\prec\boldsymbol{P}\in\mathbb{R}^{n\times n},\;\boldsymbol{0}\prec\boldsymbol{\Gamma}\in\mathbb{R}^{n\times n},\;\boldsymbol{0}\prec\boldsymbol{\Lambda}\in\mathbb{R}^{p\times p},进而求得导数

\begin{aligned} \dot{V}( \boldsymbol{e},\boldsymbol{\tilde{F}},\boldsymbol{\tilde{K}} )=&-\dfrac{1}{2}\boldsymbol{e}^\mathrm{T}\boldsymbol{Qe}+ \left ( \boldsymbol{r}^\mathrm{T}\boldsymbol{\tilde{K}}^\mathrm{T}\boldsymbol{B}^\mathrm{T}-\boldsymbol{x}^\mathrm{T}\boldsymbol{\tilde{F}}^\mathrm{T}\boldsymbol{B}^\mathrm{T}\right )\boldsymbol{Pe} \\&+\dfrac{1}{2}\dfrac{\mathrm{d} }{\mathrm{d} x}\mathrm{tr}\left (\boldsymbol{\tilde{F}\Gamma}\boldsymbol{\tilde{F}}^\mathrm{T} \right )+\dfrac{1}{2}\dfrac{\mathrm{d} }{\mathrm{d} x}\mathrm{tr}\left (\boldsymbol{\tilde{K}\Lambda}\boldsymbol{\tilde{K}}^\mathrm{T} \right ) .\end{aligned}        (6)

其中正定矩阵Q应满足Lyapunov方程

\boldsymbol{A}^\mathrm{T}\boldsymbol{P}+\boldsymbol{PA}=-\boldsymbol{Q}.

        对于矩阵的迹(trace),有如下性质:\mathrm{tr}(\boldsymbol{A}^\mathrm{T})=\mathrm{tr}(\boldsymbol{A})。并且由于\boldsymbol{\Gamma}对称,因此有

\begin{aligned} \dfrac{1}{2}\dfrac{\mathrm{d} }{\mathrm{d} t}\mathrm{tr}\left (\boldsymbol{\tilde{F}\Gamma}\boldsymbol{\tilde{F}}^\mathrm{T} \right )&= \dfrac{1}{2}\mathrm{tr}\left (\boldsymbol{\dot{\tilde{F}}\Gamma}\boldsymbol{\tilde{F}}^\mathrm{T}+\boldsymbol{\tilde{F}\Gamma}\boldsymbol{\dot{\tilde{F}}}^\mathrm{T} \right ) \\&= \dfrac{1}{2}\mathrm{tr}\left (\boldsymbol{\dot{\tilde{F}}\Gamma}\boldsymbol{\tilde{F}}^\mathrm{T} \right ) + \dfrac{1}{2}\mathrm{tr}\left (\boldsymbol{\tilde{F}\Gamma}\boldsymbol{\dot{\tilde{F}}}^\mathrm{T} \right ) \\&= \mathrm{tr}\left (\boldsymbol{\dot{\tilde{F}}\Gamma}\boldsymbol{\tilde{F}}^\mathrm{T} \right ). \end{aligned}

同理可得

\dfrac{1}{2}\dfrac{\mathrm{d} }{\mathrm{d} t}\mathrm{tr}\left (\boldsymbol{\tilde{K}\Lambda}\boldsymbol{\tilde{K}}^\mathrm{T} \right )= \mathrm{tr}\left (\boldsymbol{\dot{\tilde{K}}\Lambda}\boldsymbol{\tilde{K}}^\mathrm{T} \right ).

(6)式可进一步写为

\begin{aligned} \dot{V}( \boldsymbol{e},\boldsymbol{\tilde{F}},\boldsymbol{\tilde{K}} )=&-\dfrac{1}{2}\boldsymbol{e}^\mathrm{T}\boldsymbol{Qe}+ \boldsymbol{r}^\mathrm{T}\boldsymbol{\tilde{K}}^\mathrm{T}\boldsymbol{B}^\mathrm{T}\boldsymbol{Pe}-\boldsymbol{x}^\mathrm{T}\boldsymbol{\tilde{F}}^\mathrm{T}\boldsymbol{B}^\mathrm{T}\boldsymbol{Pe} \\&+\mathrm{tr}\left (\boldsymbol{\dot{\tilde{F}}\Gamma}\boldsymbol{\tilde{F}}^\mathrm{T} \right )+\mathrm{tr}\left (\boldsymbol{\dot{\tilde{K}}\Lambda}\boldsymbol{\tilde{K}}^\mathrm{T} \right ).\end{aligned}        (7)

由于\boldsymbol{r}^\mathrm{T}\boldsymbol{\tilde{K}}^\mathrm{T}\boldsymbol{B}^\mathrm{T}\boldsymbol{Pe}\in\mathbb{R},\;\boldsymbol{x}^\mathrm{T}\boldsymbol{\tilde{F}}^\mathrm{T}\boldsymbol{B}^\mathrm{T}\boldsymbol{Pe}\in\mathbb{R},均为标量,而对于标量有\mathrm{tr}(a)=a成立。 此外,由于矩阵的迹具有性质\mathrm{tr}(\boldsymbol{AB})=\mathrm{tr}(\boldsymbol{BA}),因此可知

\boldsymbol{r}^\mathrm{T}\boldsymbol{\tilde{K}}^\mathrm{T}\boldsymbol{B}^\mathrm{T}\boldsymbol{Pe}=\mathrm{tr}\left (\boldsymbol{r}^\mathrm{T}\boldsymbol{\tilde{K}}^\mathrm{T}\boldsymbol{B}^\mathrm{T}\boldsymbol{Pe} \right )=\mathrm{tr}\underbrace{\left (\boldsymbol{B}^\mathrm{T}\boldsymbol{Pe}\boldsymbol{r}^\mathrm{T}\boldsymbol{\tilde{K}}^\mathrm{T} \right )}_{p\times p}

\boldsymbol{x}^\mathrm{T}\boldsymbol{\tilde{F}}^\mathrm{T}\boldsymbol{B}^\mathrm{T}\boldsymbol{Pe}=\mathrm{tr}\left (\boldsymbol{x}^\mathrm{T}\boldsymbol{\tilde{F}}^\mathrm{T}\boldsymbol{B}^\mathrm{T}\boldsymbol{Pe} \right )=\mathrm{tr}\underbrace{\left (\boldsymbol{B}^\mathrm{T}\boldsymbol{Pe}\boldsymbol{x}^\mathrm{T}\boldsymbol{\tilde{F}}^\mathrm{T} \right )}_{p\times p}

这样,所形成的p×p的矩阵就可以与(7)式中的最后两项的维度相匹配,从而得到

\begin{aligned} \dot{V}( \boldsymbol{e},\boldsymbol{\tilde{F}},\boldsymbol{\tilde{K}} )&=-\dfrac{1}{2}\boldsymbol{e}^\mathrm{T}\boldsymbol{Qe}+\mathrm{tr} \left (\boldsymbol{B}^\mathrm{T}\boldsymbol{Pe}\boldsymbol{r}^\mathrm{T}\boldsymbol{\tilde{K}}^\mathrm{T} \right )-\mathrm{tr}\left (\boldsymbol{B}^\mathrm{T}\boldsymbol{Pe}\boldsymbol{x}^\mathrm{T}\boldsymbol{\tilde{F}}^\mathrm{T} \right ) \\&\quad+\mathrm{tr}\left (\boldsymbol{\dot{\tilde{F}}\Gamma}\boldsymbol{\tilde{F}}^\mathrm{T} \right )+\mathrm{tr}\left (\boldsymbol{\dot{\tilde{K}}\Lambda}\boldsymbol{\tilde{K}}^\mathrm{T} \right ) \\&= -\dfrac{1}{2}\boldsymbol{e}^\mathrm{T}\boldsymbol{Qe}+\mathrm{tr} \left (\boldsymbol{\dot{\tilde{F}}\Gamma}\boldsymbol{\tilde{F}}^\mathrm{T}-\boldsymbol{B}^\mathrm{T}\boldsymbol{Pe}\boldsymbol{x}^\mathrm{T}\boldsymbol{\tilde{F}}^\mathrm{T} \right )+\mathrm{tr}\left (\boldsymbol{\dot{\tilde{K}}\Lambda}\boldsymbol{\tilde{K}}^\mathrm{T} +\boldsymbol{B}^\mathrm{T}\boldsymbol{Pe}\boldsymbol{r}^\mathrm{T}\boldsymbol{\tilde{K}}^\mathrm{T}\right ) .\end{aligned}

要使系统渐进稳定,可令最后两项均为0,即

\begin{cases} \boldsymbol{\dot{\tilde{F}}}\boldsymbol{\Gamma}-\boldsymbol{B}^\mathrm{T}\boldsymbol{Pe}\boldsymbol{x}^\mathrm{T}=\boldsymbol{0} \\ \boldsymbol{\dot{\tilde{K}}}\boldsymbol{\Lambda}+ \boldsymbol{B}^\mathrm{T}\boldsymbol{Pe}\boldsymbol{r}^\mathrm{T}=\boldsymbol{0} \end{cases}

由于误差增益矩阵的定义是\boldsymbol{\tilde{F}}:=\boldsymbol{F}^*-\boldsymbol{F},\;\boldsymbol{\tilde{K}}:=\boldsymbol{K}^*-\boldsymbol{K},因此前馈增益和反馈增益的自适应律为

\begin{cases} \boldsymbol{\dot{F}}=-\boldsymbol{B}^\mathrm{T}\boldsymbol{Pe}\boldsymbol{x}^\mathrm{T}\boldsymbol{\Gamma}^{-1} \\ \boldsymbol{\dot{K}} =\boldsymbol{B}^\mathrm{T}\boldsymbol{Pe} \boldsymbol{r}^\mathrm{T} \boldsymbol{\Lambda}^{-1} \end{cases}        (8)

注意,\boldsymbol{\dot{F}}项带有负号是因为控制律(1)式选取的是状态负反馈的形式;若选取状态正反馈,则符号正好相反。

2.2  仿真示例

        仿真MATLAB源码请到文末链接获取下载。

        我们以无刷直流电机的二阶近似模型为例。考虑以下系统:

G(s)=\dfrac{Y(s)}{R(s)}=\dfrac{b_0}{s^2+a_1s+a_0},

其中

系统参数由实际电机决定,本例中取参考模型参数(即理想参数/目标参数)为

而实际参数则是未知的,与理想值存在一定偏差,具体取值请参见文末源码。

        首先进行无MRAC的运行对比,其中红色虚线表示参考模型的参考输出,即理想/目标的输出曲线;蓝色实线为同一输入作用下的实际系统输出曲线。可见二者之间存在一定的差异,这在反映了实际中建模不准、模型失配的问题。

模型失配时无MRAC的响应结果

       

        随后加入本节所述的MARC方法,可见实际输出完全跟踪上了参考模型的输出,模型失配问题得以校正。

模型失配时时有MRAC的响应结果

        以上展示的是参数未知但恒定的情况,接下来考虑模型参数时变影响下的控制性能。假设系统参数会随时间发生缓慢的变化,造成结果如下图所示,可见实际输出与参考输出存在较大的差异。

参数时变时无MARC的响应结果

        引入MRAC后,可以看到系统输出在参数时变条件下仍能跟随参考输出。

参数时变时有MRAC的响应结果

3  状态反馈型自适应模型跟随控制

前一节所介绍的KF法是最常用的MRAC方法之一。然而,该方法也存在一个最严重的不足:自适应律(8)使用了实际模型的控制矩阵\boldsymbol{B},而这一般而言是未知的。针对此,一般有两种解决办法:1)用参考模型的控制矩阵近似代替;2)用系统辨识的方法获取控制矩阵。不过这两种方法总是不大方便的,我们总是希望自适应律中完全不含有未知的量。而本节所提供的方法就可以解决这一点。

3.1  方法推导

       KF法需要用到未知控制矩阵的的本质原因是,状态反馈所得的控制输入加到了实际模型的输入上,也就是说状态反馈的信号必须直接经过控制矩阵,才能影响到被控系统。因此,如果能够避免状态反馈信号直接经过控制矩阵,例如先与前馈信号进行综合,之后再进入被控系统,就能较好地解决该问题。

        基于此,设计如下与(1)式不同的控制律,可简称为GF法:

\boldsymbol{u}=\boldsymbol{G}\left (\boldsymbol{r}-\boldsymbol{Fx} \right ),        (9)

则闭环系统方程变为

\boldsymbol{\dot{x}}=\left (\boldsymbol{A}-\boldsymbol{BGF} \right )\boldsymbol{x}+\boldsymbol{BGr}.

        同样地,在参数已知的情况下,我们希望能够直接找到F*和G*,时闭环系统等同参考系统:

\begin{cases} \boldsymbol{A}-\boldsymbol{BGF}\to \boldsymbol{A}_m \\ \boldsymbol{BG}\to\boldsymbol{B}_m \end{cases}\Rightarrow \begin{cases} \boldsymbol{F}^*=\boldsymbol{B}_m^\dagger\left ( \boldsymbol{A}-\boldsymbol{A}_m \right ) \\ \boldsymbol{G}^*=\boldsymbol{B}^\dagger\boldsymbol{B}_m \end{cases}        (10)

继而可推出类似于KF法的等式成立条件:

\begin{cases} \left ( \boldsymbol{I}-\boldsymbol{B}_m\boldsymbol{B}_m^\dagger\right )\left ( \boldsymbol{A}-\boldsymbol{A}_m \right )=\boldsymbol{0} \\ \left ( \boldsymbol{I}-\boldsymbol{B}\boldsymbol{B}^\dagger\right )\boldsymbol{B}_m=\boldsymbol{0} \end{cases}        (11)

(11)称为GF型的埃尔茨贝格(Erzberger)条件

        需要注意的是,在本方法中,\boldsymbol{G},\boldsymbol{G}^*\in\mathbb{R}^{p\times p}应当设计为可逆的,则由(10)可知

\boldsymbol{B}=\boldsymbol{B}_m{\boldsymbol{G}^*}^{-1}.

如果用来\boldsymbol{\Xi }表示目标G的逆实际G的逆之间的偏差,即

\boldsymbol{\Xi }:=\boldsymbol{G}^{*-1}-\boldsymbol{G}^{-1},

就可以得到一个容易被忽视但在后续推导过程中很有用的式子:

\boldsymbol{B}=\boldsymbol{B}_m \left (\boldsymbol{\Xi }+\boldsymbol{G}^{-1} \right ).        (12)

此外,类似KF法,定义增益误差矩阵和广义误差:

\boldsymbol{\tilde{F}}:=\boldsymbol{F}^*-\boldsymbol{F}\in \mathbb{R}^{p\times n},\;\boldsymbol{e}:=\boldsymbol{x}_m-\boldsymbol{x}.

由此可得关于广义误差的状态方程:

\begin{aligned} \dot{\boldsymbol{e}}&=\dot{\boldsymbol{x}}_m-\dot{\boldsymbol{x}} \\&= \boldsymbol{A}_m\boldsymbol{x}_m+\boldsymbol{B}_m\boldsymbol{r} - \left (\boldsymbol{A}-\boldsymbol{BGF} \right )\boldsymbol{x}-\boldsymbol{BGr} \\&= \boldsymbol{A}_m\boldsymbol{e} + \left (\boldsymbol{A}_m-\boldsymbol{A}+\boldsymbol{BGF} \right )\boldsymbol{x}+\left ( \boldsymbol{B}_m-\boldsymbol{BG} \right )\boldsymbol{r} \\&= \boldsymbol{A}_m\boldsymbol{e} + \left (-\boldsymbol{B}_m\boldsymbol{F}^*+\boldsymbol{BGF} \right )\boldsymbol{x}+\left ( \boldsymbol{B}_m-\boldsymbol{BG} \right )\boldsymbol{r} \\&= \boldsymbol{A}_m\boldsymbol{e} + \left [\left (-\boldsymbol{B}_m\boldsymbol{F}^*+\boldsymbol{B}_m\boldsymbol{F} \right )-\boldsymbol{B}_m\boldsymbol{F}+\boldsymbol{BGF} \right ]\boldsymbol{x}+\left ( \boldsymbol{B}_m-\boldsymbol{BG} \right )\boldsymbol{r} \\&= \boldsymbol{A}_m\boldsymbol{e} - \left [\boldsymbol{B}_m\boldsymbol{\tilde{F}}+\left (\boldsymbol{B}_m-\boldsymbol{BG} \right )\boldsymbol{F} \right ]\boldsymbol{x}+\left ( \boldsymbol{B}_m-\boldsymbol{BG} \right )\boldsymbol{r} . \end{aligned}

其中\boldsymbol{B}是我们不愿看到的,因为它是未知量,而这时就可以使用(12)式巧妙地消去\boldsymbol{BG}

\boldsymbol{B}_m-\boldsymbol{BG} =\boldsymbol{B}_m-\boldsymbol{B}_m \left (\boldsymbol{\Xi }+\boldsymbol{G}^{-1} \right )\boldsymbol{G}=-\boldsymbol{B}_m\boldsymbol{\Xi G}.

因此广义误差的状态方程变为

\begin{aligned} \dot{\boldsymbol{e}}&= \boldsymbol{A}_m\boldsymbol{e} - \boldsymbol{B}_m\boldsymbol{\tilde{F}}\boldsymbol{x}+\boldsymbol{B}_m\boldsymbol{\Xi GF}\boldsymbol{x}-\boldsymbol{B}_m\boldsymbol{\Xi G}\boldsymbol{r} . \end{aligned}        (13)

我们希望广义误差\boldsymbol{e}(t)和参数误差\boldsymbol{\tilde{F}}(t),\boldsymbol{\Xi}(t)均收敛,为此构建如下的待定Lyapunov函数:

V(\boldsymbol{e},\boldsymbol{\tilde{F}},\boldsymbol{\Xi})=\dfrac{1}{2}\boldsymbol{e}^\mathrm{T}\boldsymbol{P}\boldsymbol{e}+ \dfrac{1}{2}\mathrm{tr}\left (\boldsymbol{\tilde{F}}\boldsymbol{\Gamma}\boldsymbol{\tilde{F}}^\mathrm{T} \right )+ \dfrac{1}{2}\mathrm{tr}\left (\boldsymbol{\Xi}\boldsymbol{\Lambda}\boldsymbol{\Xi}^\mathrm{T} \right ).        (14)

与KF法类似,可得Lyapunov函数的导数为

\begin{aligned} \dot{V}(\boldsymbol{e},\boldsymbol{\tilde{F}},\boldsymbol{\Xi})&=-\dfrac{1}{2}\boldsymbol{e}^\mathrm{T}\boldsymbol{Q}\boldsymbol{e} \\&\quad\,-\boldsymbol{x}^\mathrm{T}\boldsymbol{\tilde{F}}^\mathrm{T}\boldsymbol{B}_m^\mathrm{T}\boldsymbol{Pe}+\boldsymbol{x}^\mathrm{T}\boldsymbol{F}^\mathrm{T}\boldsymbol{G}^\mathrm{T}\boldsymbol{\Xi}^\mathrm{T}\boldsymbol{B}_m^\mathrm{T}\boldsymbol{Pe}-\boldsymbol{r}^\mathrm{T}\boldsymbol{G}^\mathrm{T}\boldsymbol{\Xi}^\mathrm{T}\boldsymbol{B}_m^\mathrm{T}\boldsymbol{Pe} \\&\quad\,+ \mathrm{tr}\left (\boldsymbol{\dot{\tilde{F}}}\boldsymbol{\Gamma}\boldsymbol{\tilde{F}}^\mathrm{T} \right )+\mathrm{tr}\left (\boldsymbol{\dot{\Xi}}\boldsymbol{\Lambda}\boldsymbol{\Xi}^\mathrm{T} \right ) \\&=-\dfrac{1}{2}\boldsymbol{e}^\mathrm{T}\boldsymbol{Q}\boldsymbol{e}+\mathrm{tr}\left ( \boldsymbol{\dot{\tilde{F}}}\boldsymbol{\Gamma}\boldsymbol{\tilde{F}}^\mathrm{T} - \boldsymbol{B}_m^\mathrm{T} \boldsymbol{Pe}\boldsymbol{x}^\mathrm{T} \boldsymbol{\tilde{F}}^\mathrm{T} \right ) \\&\quad\,+ \mathrm{tr}\left ( \boldsymbol{\dot{\Xi}}\boldsymbol{\Lambda}\boldsymbol{\Xi}^\mathrm{T}+\boldsymbol{B}_m^\mathrm{T}\boldsymbol{Pe}\boldsymbol{x}^\mathrm{T}\boldsymbol{F}^\mathrm{T}\boldsymbol{G}^\mathrm{T}\boldsymbol{\Xi}^\mathrm{T}-\boldsymbol{B}_m^\mathrm{T}\boldsymbol{Pe}\boldsymbol{r}^\mathrm{T}\boldsymbol{G}^\mathrm{T}\boldsymbol{\Xi}^\mathrm{T} \right ) . \end{aligned}

令后两项为0,则有

\begin{cases} \boldsymbol{\dot{\tilde{F}}}= \boldsymbol{B}_m^\mathrm{T} \boldsymbol{Pe}\boldsymbol{x}^\mathrm{T}\boldsymbol{\Gamma}^{-1} \\ \boldsymbol{\dot{\Xi}}=\boldsymbol{B}_m^\mathrm{T}\boldsymbol{Pe}\left (\boldsymbol{r}^\mathrm{T}-\boldsymbol{x}^\mathrm{T}\boldsymbol{F}^\mathrm{T} \right )\boldsymbol{G}^\mathrm{T}\boldsymbol{\Lambda}^{-1}. \end{cases}        (15)

        接下来需要将关于误差的自适应律变换回关于增益矩阵本身的自适应律。考虑\boldsymbol{\tilde{F}}的定义,容易得到结论\boldsymbol{\dot{\tilde{F}}}=-\boldsymbol{\dot{F}};需要使用到一点技巧的是如何将\boldsymbol{\dot{\Xi}}变换回\boldsymbol{\dot{G}}

由于\boldsymbol{G}\boldsymbol{G}^{-1}=\boldsymbol{I},则\boldsymbol{\dot{G}}\boldsymbol{G}^{-1}+\boldsymbol{G}\boldsymbol{\dot{G}}^{-1}=\boldsymbol{0},即\boldsymbol{\dot{G}}=-\boldsymbol{G}\boldsymbol{\dot{G}}^{-1}\boldsymbol{G};考虑到参数误差的定义\boldsymbol{\Xi}=\boldsymbol{G}^{*-1}-\boldsymbol{G}^{-1},求导有\boldsymbol{\dot{\Xi}}=-\boldsymbol{\dot{G}}^{-1},因而可得

\boldsymbol{\dot{G}}=\boldsymbol{G}\boldsymbol{\dot{\Xi}}\boldsymbol{G}.        (16)

        综上,最终的自适应律为

\begin{cases} \boldsymbol{\dot{F}}= -\boldsymbol{B}_m^\mathrm{T} \boldsymbol{Pe}\boldsymbol{x}^\mathrm{T}\boldsymbol{\Gamma}^{-1} \\ \boldsymbol{\dot{G}}=\boldsymbol{G}\boldsymbol{B}_m^\mathrm{T}\boldsymbol{Pe}\left (\boldsymbol{r}-\boldsymbol{F}\boldsymbol{x} \right )^\mathrm{T}\boldsymbol{G}^\mathrm{T}\boldsymbol{\Lambda}^{-1}\boldsymbol{G}. \end{cases}        (17)

3.2  仿真示例

        仿真Simulink文件请到文末链接获取下载。

        本例的实际系统为:

\dot{x}=\begin{bmatrix} 0 & 1\\ -6 & -7 \end{bmatrix}x+\begin{bmatrix} 0 \\ 8 \end{bmatrix} u.

参考系统为:

\dot{x}_m=\begin{bmatrix} 0 & 1\\ -10 & -5 \end{bmatrix}x_m+\begin{bmatrix} 0 \\ 3 \end{bmatrix} r.

假设状态量全部已知,即输出矩阵为单位矩阵。

Simulink仿真模型示意图

        仿真结果如下图所示,其中红色虚线为参考模型的状态量,蓝色实线为实际系统的状态量,绿色实线为未加入自适应律的实际系统状态量。

GF法-阶跃输入
GF法-正弦输入
GF法-方波输入
GF法-随机噪声输入

        至此,模型参考自适应控制的内容已基本结束。接下来的几篇文章将继续讨论基于最小二乘辨识的自校正控制。


参考文献

[1] 柴天佑, 岳恒. 自适应控制[M]. 北京: 清华大学出版社, 2016.
[2] 董宁. 自适应控制[M]. 北京理工大学出版社, 2009.


下载链接

【免费】模型参考自适应控制(MRAC):增益反馈型方法的MATLAB仿真程序资源-优快云下载https://download.youkuaiyun.com/download/ych0872/92418424?spm=1001.2014.3001.5503【免费】模型参考自适应控制(MRAC):全状态反馈型方法的Simulink仿真程序资源-优快云下载https://download.youkuaiyun.com/download/ych0872/92419932?spm=1001.2014.3001.5503


友情链接

【状态空间漫游记】(二)模型参考自适应控制(MRAC):局部参数最优化方法(MIT律)_mrac设计原理以及稳定性分析与自适应律推导-优快云博客

【状态空间漫游记】(三)模型参考自适应控制(MRAC):基于传递函数的自适应控制(变增益法、变参数法)-优快云博客

【玩转机械臂】(一)机器人学的数学基础:坐标变换与位姿描述_机械臂坐标变换-优快云博客

【玩转倒立摆】(一)一阶倒立摆之 - 数学模型的建立-优快云博客

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值