0%

自适应控制设计

《自适应控制基本思想》一文主要介绍了自适应控制设计的基本思路,但是针对控制率的设计没有具体说明,这里针对反馈控制率的设计步骤进行具体介绍。

控制器设计基本思想

对于任何一个动态系统,我们都可以根据Lyapunov稳定性设计其控制器,具体的说就是

  • 首先根据期望值 \(x_{d}\) ,将原系统改为误差系统,即将 \(\dot{x} =f( x,u)\) 转化为 \(\dot{e} =f( e,u,x_{d})\) ,利用误差信息,并在此基础上进行控制系统则为闭环控制系统设计,即我们利用系统的输出值,开环控制则不需要任何系统的反馈信号;
  • 在误差系统 \(\dot{e} =f( e,u,x_{d})\)的基础上,理论上,只要我们构造了某一个Lyapunov函数,为了满足系统稳定性的条件,构造了相对应的控制 \(u\) ,则完成了系统控制率的设计;

那么包括滑模控制,反馈线性化控制都是基于上述思想进行设计的,也基本代表了现代控制理论的设计思路。其实传统的控制系统设计也是基于满足系统稳定性进行设计,只不过传统的系统稳定性是基于传递函数,保证系统的特征方程稳定。

这里对比一个现代控制理论与传统控制理论设计思路上的区别

  1. 为了满足闭环控制,传统控制理论采用闭环设计,并在此基础上建立系统的传递函数;现代控制系统采用,将原系统转化为误差系统,并基于误差系统进行控制器设计;
  2. 系统稳定性分析,传统控制理论建立系统的传递函数,并依据系统的特征方程根的分布,判断稳定性;现代控制理论采用Lyapunov稳定性分析;
  3. 控制器设计思路,传统控制理论与现代控制理论都是为了保证系统的稳定性设计控制 \(u\) ,即传传统控制理论将 \(u\) 代入传递函数中,调整 \(u\)的结构,使得特征方程稳定;现代控制方法找到系统某一Lyapunov函数,对其求导,基于为了保证导数小于零的原则,设计相对应的控制\(u\)

补充说明

对于传统控制,之所以闭环系统鲁棒性高,是因为即使有了外接干扰,不会影响整个系统的特征方程根的分布,然后开环系统的特征方程直接与外界干扰有关,因此鲁棒性差;现代控制系统鲁棒性强的分析是基于Lyapunov稳定性。

控制器设计整个思考过程为

  1. 一开始当我们看到一个系统时,首先想到的是如何可以求解输出与输入的解析表达式 \(\ y=f( u)\) ,就可以直接进行控制器的设计 \(u=f^{-1}( y_{d})\) ,但是人们发现这其中有两个问题,首先系统的微分方程往往难以求解,其次这种设计属于开环设计,即我们并没有利用输出与期望的误差,系统的稳定性难以保证;
  2. 因此人们转而将研究思路放在对微分方程稳定性的研究上,如果我们不直接求解 $u=f^{-1}( y_{d}) $,而是设计一种控制 \(u\) ,使得系统动态调整到期望的值并保持稳定;
  3. 从微分方程的最简单形式,单变量线性微分方程,即线性单输入单输出系统(传统控制理论),到多变量非线性微分方程,即多输入多输出系统(现代控制系统理论);

对于很多系统而言,找到系统理想的Lyapunov函数是困难的,为了寻找Lyapunov函数,我们需要对问题进行分解转化。

反馈线性化控制的基本思路,首先设计稳定的误差系统,其次再设计控制使得稳定的误差系统可以保持。比如可以结合传统控制理论与线控控制理论系统稳定性相关的理论。具体来说,传统控制是通过对线性系统进行拉普拉斯变换后,得到系统的特征方程,并依据特征根的分布进行设计的,那么我们就可以将系统的误差动态系统人为的设计成稳定的线性系统,如果该系统一直满足,那么原系统就可以稳定。如果才能让理想的误差动态系统满足,我们可以再根据现代控制理论,依据Lyapunov,对理想的误差系统进行设计。

比如\(s^{2} e+\lambda _{1} se+\lambda _{2} e=0\) 为人为设计的理想稳定的误差系统,设 \(e_{s} =s^{2} e+\lambda _{1} se+\lambda _{2} e\) ,即需要满足 \(e_{s} =0\) ,因此我们需要研究 \(e_{s}\) 的动态特性,建立 \(e_{s}\) 的动态系统,并依据Lyapunov稳定性设计其控制率,满足 \(e_{s} =0\)

\(e_{s}\rightarrow 0,e\rightarrow 0\)

设计的理想误差系统的不同衍生出了很多不同的控制方法,比如线性滑模,非线性滑模等等。根据上述讨论,总体设计分为以下两个步骤

设计理想误差动态系统 需要人为设计理想的误差动态系统,即

\[\dot{e} =f( e) ————(1)\]

如果设计的该误差动态系统(1)是稳定的,即 \(\lim _{t\rightarrow \infty } e( t) =0\) ,那么原系统稳定

控制率设计 根据稳定的误差系统(1),设计反馈控制 u ,即如果设计的控制率可以满足该误差系统,则可以保证原系统稳定

具体步骤

理想误差动态系统设计 定义如下系统

\(\begin{cases} \dot{x_{i}} =\dot{x_{i+1}} & i=1,\dots ,n-1\\ \dot{x_{n}} =f( x) +g( x) u+d( t) & \\ y=x_{1} & \end{cases}\)

定义系统误差

\(e_{i} =x_{i} -x_{id} \ \ ,\ \ i=1,\dots ,n-1\)

我们完全可以这么设计,比如设计误差系统\(e_{1}=0\)

根据该系统求解控制 \(u\) ,我们假设 \(e_{1} =e_{s}\) ,之所以要这么假设,是因为我们设计的\(u\)并没有在 \(e_{1}=0\) 显含,也就是没有办法直接求解,那么只能通过分析\(e_{1}=0\)的动态系统,看是否可以找到控制 u ,因此我们要把 $e_{1}=0 $当做一个系统来研究,因此给它设了一个变量 \(e_{s}\)

补充说明

  1. 如果一个常量 \(e=0\) ,设 \(f=e\) ,则 \(\dot{f} =0\)
  2. 如果 \(e( t)\) 为一变量,\(e( t) =0\),同理设 \(f=e( t)\) ,并不等同于 \(\dot{f} =0\) 。而应该这么说,为了让 \(e( t) =0\) ,我们需要设计其微分系统 \(\dot{f}\) ,并使其 \(\dot{f} =0\) ,这个与控制系统的设计是一致的 上述说明看起来很显然,但其实说明,如果为了让一个变量为0,其实应该是分析其微分系统,即对变量求导
  3. 如果 \(e( t)\) 中直接显含了控制 \(u\) ,那么我们实际上就可以直接设计 \(u\)\(e=0\) ,但是这样的设计并不能保证系统的稳定,言外之意是,我们虽然让\(e=0\),但是系统不具备鲁棒性,也就是 \(e=0\) 并不能一直保持下去,即使 \(u\) 直接显含,我们也可以设 \(f=e( t)\),并对 \(f\) 求导,我们可分析 \(f\) 系统的稳定性,这与 \(u\) 是否直接显含并无关系
  4. 因此对一个变量求导,再求解控制 \(u\) ,使其 \(e( t) =0\) ,主要是从其控制的稳定性角度出发的
  5. 那么如果\(e( t)\)中直接显含了控制\(u\),但又要保证系统的稳定性,该如何设计呢?实际上可以通过对 \(f\) 求导后,\(\dot{f}\) 中会出现 \(\dot{u}\) ,我们对 \(\dot{u}\) 设计,并对其求积分可以得到 \(u\)

因此,根据上述说明,为了保证 \(e_{s}=0\) 成立,直接让控制 u 显含并直接求解并不能保证误差系统能够按照我们设定的那样一直保持。对于 \(e_{1} =e_{s}\) 而言,需要不断的求导直到 u 显含,这样控制器的设计就会很复杂,与我们设计的初衷是违背的,我们是希望能在这一步中,简化控制器的设计,将白了就是为了降低yapunov函数构造的难度。因此我们最好设计一种理想稳定的误差系统,使得在该系统的一阶导里就显含控制 u ,这样就可以降低了Lyapunov函数的构造,又能保证 \(e_{s}=0\) 的稳定

基于上述考虑,我们可以将理想的误差系统设计为

\(\lambda _{1} e_{1} +\lambda _{2} e_{2} +\dots +\lambda _{n-1} e_{n-1} +e_{n} =0\)

理想误差系统控制器设计 设理想的误差系统

\(e_{s} =\lambda _{1} e_{1} +\lambda _{2} e_{2} +\dots +\lambda _{n-1} e_{n-1} +e_{n}\)

可以改写成如下形式

\(e_{s} =\left[ \Lambda ^{T} \ 1\right] e\)

\(e=x-x_{d} =[ e_{1} ,\dots ,e_{n}]\)

\(\Lambda =[ \lambda _{1} ,\dots ,\lambda _{n-1}]^{T}\)

接下来需要分析\(e_{s}\)的动态特性,我们需要对其求一阶导,在设计之初就是将u显含在\(e_{s}\)一阶导中

\(\dot{e}_{s} =\lambda _{1}\dot{e_{1}} +\dots +\lambda _{n-1}\dot{e_{n-1}} +\dot{e_{n}}\)

\(\dot{e}_{s} =\lambda _{1} e_{2} +\dots +\lambda _{n-1} e_{n} +\dot{e_{n}}\)

\(\dot{e}_{s} =\left[ 0\ \Lambda ^{T}\right] e+a( x) +b( x) u\)

\(v=\left[ 0\ \Lambda ^{T}\right] e\),则\(\dot{e}_{s} =v+a( x) +b( x) u\)

针对 \({e}_{s}\) 系统,可以设计Lyapunov函数为

\(V=\dfrac{1}{2} e^{2}_{s}\)

为了保证系统的稳定性,我们需要相对应的控制u 首先

\(\dot{V} =e_{s}\dot{e}_{s} =e_{s}[ v+a( x) +b( x) u]\)

可以采用如下思路进行设计

控制 u 需要消除系统中的非线性项,即 \(v+a( x)\),则 u 的初版为\(u=-\dfrac{1}{b( x)}[ a( x) +v]\) ,很显然代入 \(\dot{V}\) 后系统并不稳定,但是结构上简单了很多\(\dot{V} =e_{s} \cdot 0\)

但是该系统并不稳定,因此只是消去非线性项是不够的,还需要额外添加一些项,为了能够利用上$ $中已经存在的 \(e_{s}\) 项,设额外添加项为\(\beta ( x) e_{s}\)

则Lyapunov函数导数转化为\(\dot{V} =e_{s} \cdot \beta ( x) e_{s}\)

具体 \(\beta ( x)\) 设计可以有很多种,但大体的思路就是让 \(\dot{V}<0\) 当然系统的Lyapunov函数也不仅仅局限于 \(V=\dfrac{1}{2} e^{2}_{s}\) ,也可以设成 \(V=\dfrac{e^{2}_{s}}{2b( x)}\)