接着上一篇Pole Placement继续讲解SISO反馈控制器设计问题。在这一篇中我会简要介绍SISO的零极点与状态空间方程。极点位置的选择通常有两种方法,这里着重讲讲SRL/LQR方法。具体的二次型最优控制,我会在之后专门详细讲解。

本篇目录:

1. 传递函数的零极点与状态空间方程的关系 From p/z of transfer function to state-space equation

2. 常数参考输入 Constant reference input

3. 极点位置选择 Selection of pole location

3.1 主导极点法

3.2 Symmetric Root Locus(SRL)/LQR.

3.3 LQR的极限行为

3.4 其他方法


1. 传递函数的零极点与状态空间方程的关系 From p/z of transfer function to state-space equation

我们知道一个传递函数的实现是有无数种的,而其中维度最小的实现是其最小实现,必然是能控又能观的。反过来,如果有几个实现实际上都是针对同一个传递函数,那么由它们的状态空间表达式应该也能得到同一个传递函数。知道了状态空间方程,其传递函数为:

[公式]

这从基本的Laplace变换就能得到,就不具体展开过程了。既然一个状态空间方程描述的系统的传递函数可以由 (1) 表示,那么我们也应该由这些矩阵可以表达出传递函数的零极点。

传递函数的极点,是其特征方程的根。我们上一篇也说过了,正是矩阵 [公式] 的特征值。我们可以把系统的零输入解写成 [公式] ,其中 [公式] 是初始状态。把它代入状态方程中我们便可以得到[公式]由此我们得到了决定pole的特征方程

[公式]

根据 (2) 就可以确定出系统的极点,当然也可以通过 (1) 然后求分母为0时的根。

再看系统的零点。零点是一个复频率数 [公式] ,在这个频率下的非零输入会使得系统的输出为0,但内部状态不为0。既然是输入频率为 [公式] ,我们可以假设其输入为 [公式] ,这时候我们有 [公式] 。根据 [公式] 这个式子,我们知道此时的状态必然满足(否则输出 [公式] 怎么为0?):

[公式]

根据状态空间方程我们有:

[公式]

我们得到:

[公式]

此时这个系统的零点就可以由:

[公式]

得到零点 [公式] 后我们把它代入(5) ,可以得到 [公式] 时的系统初值 [公式] 与 输入幅值[公式] 。在传递函数中,系统的零点会把输入中对应零点频率的部分给“屏蔽”掉,此时的输出是零初始状态下 [公式] 的输出 [公式]  [公式] 时由 [公式] 带来的输出 [公式] ,满足 [公式] 

这样的零点我们称之为blocking zero或者transmission zero。以例子来解释零点请参见[3]。其中transmission zero是指最小实现时的零点。否则有可能存在invariant zero,这个以后MIMO的时候再说。

通过下式可以得到传递函数的另一个理论表达式:

[公式]

但是通过这个 (7) 计算实际传递函数的误差会很大,如果A,B,C,D并不准确, (7) 的结果会非常sensitive[1,p461]。 对于SISO系统,我们可以采用MATLAB的函数zero去计算其零点。

2. 常数参考输入 Constant reference input

对于regulation也好还是tracking也好,我们都希望输出能够跟踪给定的参考输入,无论其实是常数还是随着时间变化的信号。在这里先说参考信号是常值时的regulation问题。

现在有一个恒定参考输入 [公式],现在直接使用 [公式] 是不能使得系统稳态时输出 [公式] 的。我们假定系统稳定时的输入(steady-state input)为 [公式] ,而状态为 [公式] 。反馈控制律可以修改为:

[公式]

这样两个稳态时的条件都满足了。关于状态空间方程稳态时有:

[公式]

为了方便用 [公式] 计算 [公式] ,我们令 [公式]  [公式] 。这是可以办到的,只要前面的 [公式]  [公式] 都是一个向量, [公式] 是一个scalar就可以了。这样我们就能很容易得到:

[公式]

根据(10)解得 [公式]  [公式] 就可以了,把结果代入 (8) 中的得到:

[公式]

Fig.1 From [1,p474]

(11) 中的 [公式] 矩阵我们依旧可以根据上一篇中的方法配置极点得到,而 (11) 的实现方法有两种,如上图Fig. 1所示。这两种block diagram在数学上是完全等价的,无非是(b)把项展开并合并为了一项 [公式] ,然后 [公式] 。这一项 [公式] 是可以在得知 [公式] 后提前计算配置好的,可以设计一个滤波器放在参考输入 [公式] 后满足要求的。而 (a) 看起来就需要两个独立的模块来分别对参考输入 [公式] 进行处理。然而在实际操作中 (a) 的实现比 (b) 的鲁棒性更强。因为 [公式] 是提前根据理论增益 [公式] 计算好的,如果实际反馈控制中的 [公式] 与参与 [公式] 计算的nominal [公式] 有略微的差别,那么就会造成稳态误差。而在 (a) 中由于使用的是同一个 [公式] ,所以不管 [公式] 怎么变,稳态时还是能够保证没有误差[1]。

闭环系统的极点已经由 [公式] 决定了,根据 (6) 我们可以确定闭环系统的零点。可以发现施加了 (11) 这样的反馈,闭环系统的零点和开环系统的零点是一样的,即线性全状态反馈和常参考输入的引入没有使得系统零点发生改变[1,p477][2,p192]

3. 极点位置选择 Selection of pole location

关于极点的选择问题,[1,p477]这段话讲的非常好,请诸位一读:

The first step in the pole-placement design approach is to decide on the closed-loop pole locations. When selecting pole locations, it is always useful to keep in mind that the required control effort is related to how far the open loop poles are moved by the feedback. Furthermore, when a zero is near a pole, the system may be nearly uncontrollable and, as we saw in Section 7.5, moving such poles requires large control gains and thus a large control effort; however, the designer is able to temper the choices to take control effort into account. Therefore, a pole-placement philosophy that aims to fix only the undesirable aspects of the open-loop response and avoids either large increases in bandwidth or efforts to move poles that are near zeros will typically allow smaller gains, and thus smaller control actuators, than a philosophy that arbitrarily picks all the poles without regard to the original open-loop pole and zero locations.

闭环极点的位置选取我们有时需要将control effort给考虑进来。如果要把闭环极点配置到离开环极点较远的地方,那这就需要较大的gain;尤其是当极点与零点靠的很近时,此时系统的能控性很弱,需要使用更大的gain才能完成反馈控制。但是我们可以根据自己的需要来平衡control effort与极点位置的选择。所以这段话指出,我们进行极点配置的思路是要把一些undesirable的开环响应给修正,但是又要避免过大的增加系统的带宽,或者是control effort,而不是任意选择闭环极点位置,也不考虑开环零极点的位置。

这里需要再提醒一下的是,系统带宽的增加可能会导致反馈增益的增加,我在上一篇文章中也提及了(最后一个例子)。Gain的增加就导致了control actuator的功率和耗能都要增加。所以不能把极点配置的太远,一味增加系统带宽。

我们再来谈极点位置的选择。所谓的全状态反馈控制设计的设计方法在这里无非就是指极点位置的选择方法。把极点配置到左半平面这是一个基本的前提,但是剩下如何选择具体的位置,一般有两种常用的方法:dominant second-order poles(主导极点法)与LQR Control。

3.1 主导极点法

我们在经典控制部分就已经讲过了,其实就是一种处理高阶系统极点配置问题的方法。我们把高阶系统闭环极点配置出一对主导的极点,希望高阶系统的行为能够由这一堆主导极点来决定。当然主导极点最好要远离零点。其余的非主导极点就可以直接配置为高阻尼比且远离主导极点的位置,让这些极点所产生的瞬态过程能够明显快于主导极点的瞬态过程。[1,p478]有一个配置的例子可以参考,比较简单就不赘述了。

3.2 Symmetric Root Locus(SRL)/LQR.

Linear Quadratic Regulator(LQR) 可以说是最常见的反馈控制器了,而且也是比较简单的最优控制器。详细的LQR控制器设计我会在另外的篇章详细叙述,在这里介绍简化版本的LQR:Symmetric Root Locus(SRL)。

最优控制中的最优是以一个标准而言的,这个标准我们在优化问题中往往称之为objective function(目标函数),或者按照今天如火如荼的ML和DL中常用的说法,叫loss function。我们的优化目标通常是要使得objective function或者loss function最小化。最小化时的条件就是对应优化参数最优时。简化版的LQR控制目标函数定义为:

[公式]

我们要寻找一个最优控制 [公式] ,使得下面系统令(12)最小化:

[公式]

其中 [公式] 是measured output,是可以用于输出反馈的信号。而 [公式] 是controlled output,是我们希望能最小化的输出。这里我们最后要得到的就是这个optimal gain [公式] 这个 [公式] 会造成闭环系统的一组极点,这组极点是由下面这个方程的根所确定的:

[公式]

其中 [公式] ,是从 [公式]  [公式] 的传递函数。(12) 中的 [公式] 其实就是一个penalty,如果你学了机器学习应该更清楚了(当然这东西早就有了)。调节 [公式] 能够让我们平衡输出最小化与control effort最小化两方面来选择 [公式] 

(13) 形成了一个root locus的问题,其中 [公式] 是可调参数,由于 [公式] 这两个变量在 (13) 中形式上是对称的,所以画出来的根轨迹也是对称的,称之为Symmetric Root Locus(根据虚轴对称)。下面就是书中的一个例子:

Example 1: [1,p481]

[公式]

此时令 [公式] ,输出的传递函数为 [公式] 。请画出其SRL,并且选择一个optimal的K。

解:采用MATLAB的命令:

s=tf('s');
sysGG=1/s^4;
rlocus(sysGG);

我们可以画出:

Root Loci from MATLAB

注意到最优的极点damping ratio都是0.707,我们根据balance可以选择合适的极点,然后用acker或者place去配置极点,得到对应的最优 [公式] 。这里图中的“Gain”就是 [公式]  [公式] 越大,系统的speed of reponse就越快,因为极点的位置将离虚轴越来越远。

使用place命令得到:

>> K=place(A,b,[-1.22+1.22i,-1.22-1.22i])
K =
    2.9768    2.4400

Example 2[1,p483]:

[公式]

请画出 [公式] 

解: 这是一个开环不稳定的系统,我们依旧可以用SRL来place stale poles来稳定它。从 [公式]  [公式] 的传递函数为: [公式] 。注意到 [公式] 是符号是负号,这是一条 [公式] 根轨迹。

s=tf('s');
G=-(s+2)/(s^2-1);
G1=-(-s+2)/(s^2-1);
sysGG=G*G1;
rlocus(sysGG);

选完Poles之后用place或者acker就可以得到增益:

>> K=place(A,b,[-1.37+0.607i,-1.37-0.607i])

K =

   -3.2453   -2.7400

这个结果和[1,p484]在第一个 [公式] 处略有不同,这是因为极点的选择上我这里有略微的差异(书中 [公式] 时极点为 [公式] ,增益为 [公式] 我只是在图上大约找的,不过可以看到增益是差不多水平的,问题不大。)

得到了增益后,我们也可以给系统增加上面的常值输入,那么系统就可以跟踪常值输入了。只需要添加 [公式] 项到反馈控制律中就可以了。关于轨迹跟踪问题,我们也放到以后再聊。

LQR问题有一个更加通用的objective function或者cost function:

[公式]

这里面涉及到 [公式]  [公式] 的取法,以及一系列最优控制的解法问题。我们以后再聊。对于MATLAB而言,得到其最优增益只要通过:

K=lqr(A,B,Q,R)

所以如果只关心怎么计算的话,得到LQR的解在MATLAB里非常容易。

3.3 LQR的极限行为[1,p486]

我们来聊一聊,当 [公式] 取值为极限值时代表的情况。正常情况下只会在0到无穷之间取合适值。这一部分在[1][3]中均有讨论。

LQR是考虑了系统状态误差(或者输出误差,追踪误差,看你把什么当做 [公式] )实际上把 [公式] 当做是penalty,我们很容易理解当 [公式] 趋于0时,我们将无限考虑control effort最小化,而几乎不考虑任何状态误差和收敛速度的问题。这种情况下我们认为control is expensive,所以我们要尽可能节省cost of control。我们之前也讲过,大距离的移动pole必然会导致大增益。那么为了省下control effort,实际上就要求对原来的stable pole就不要变动,而把unstable pole进行移动到Left Half Plane(左半平面,LHP)。而且观察 (13) ,当 [公式] 接近0时,其在SRL中LHP上的pole就是open loop [公式] 的poles,并且把RHP的unstable pole通过虚轴给镜像过来了。所以在SRL里最节省的control effort的操作就是原来stable的poles不动,直接镜像unstable poles!

那么反过来的极限情况,当control无限cheap的时候,我们有 [公式] 。根据根轨迹的性质我们知道,最后poles不是去了LHP的zeros,就是去了无穷远处。对于NMP系统(non-minimum phase),RHP的zeros会在SRL中被镜像到RHP,还是会把poles配置到镜像后的零点上去。这时候系统响应最快,增益也没有上限。还有一点有趣的是,当 [公式] 趋向于无穷时,无穷远的极点位置符合Butterworth Filter的极点配置位置,这可以在[3]中找到一点分析,你可以google或者baidu一下butterworth filter的极点位置是怎么样的,来看看是不是这么一回事。

3.4 其他方法

在[3]中介绍了其他的集中pole placement的方法。比如配置贝塞尔曲线,使用ITAE标准来进行最优化。其中ITAE是一种不同于二次型函数的标准,有专门的表格用于控制设计。我们也放在将来专门搞一个篇文章来讲讲其他标准。感兴趣的话可以先参考[4,5,6]。

Reference 参考文献

[1] G.F. Franklin, J.D. Powell, A.Emami-Naeini, Feedback Control of Dynamic Systems, 7th Edition, 2014, Pearson

[2] 刘豹 唐万生,现代控制理论(第三版),2006, 机械工业出版社

[3] Feedback Control - Fall 2006 MIT Lecture Note, Prof. Steven R. Hall

[4] 自抗扰控制思想探究, 高志强,控制理论与应用[2013]

[5] D. Graham and R.C. Lathrop, "The Synthesis of Optimum Response: Criteria ans Standard Forms, Part 2", Transactions of the AIEE 72, Nov. 1953, pp. 273-288

[6] Y. Cao, "Correcting the minimum ITAE standard forms of zero-displaceemnt-error systems", Journal of Zhejiang University (Natural Science) Vol. 23, N0o.4, pp. 550-559, 1989.