3. 能达性和能控性(1) Reachability and Controllability
停更了几个月,终于要回归了。最近仔细组织了一下内容,我觉得把一个比较系统的MATLAB方面的控制教程放在之后再叙述。这一篇文章介绍状态空间设计,或者说所谓现代控制理论中 最为重要的概念 之一: 能控性(Controllability)。 同时也将引申出能达性(Reachability)的概念。
这两个概念是Kalman引入的,为了描述一个动力学系统是否能够被输入所控制的性质。严格来说,不管是线性还是非线性系统,我们都可以讨论Controllability和Reachability。不过在这里,我们讨论的概念针对于线性系统而言,而且主要针对线性定常系统。关于非线性系统的所谓能控性,这不是简简单单能说清楚的,而涉及到了flatness的概念,这需要一定数学功底去研究。关于时变系统的能控性可以参考刘豹的现代控制理论(第三版)中的第3章关于它的讨论。在这篇中,我们只关心Linear Time-Invariant System。
这篇文章内容十分丰富,是对Controllability 和Reachability 的一个很好的总结。由于文章过长,我把内容分为了几篇。
本篇目录
1. 为什么提能控性? Why Controllability ?
2. 能控性和能达性的初步概念 Intro of Controllability and Reachability
3. 探究能达性与能控性:从离散LTI系统出发 Difference from Discrete LTI System
(未完待续)
1. 为什么提能控性? Why Controllability ?
很多教材对能控性和能达性的解释可能比较抽象。简单来说,不管是能控性还是能达性,它们都是用来描述控制输入对于系统的“塑造”能力。一个线性定常系统,如果其动力学部分没有控制输入和其他显式依赖于时间的函数,那么它就是自治的(autonomous),就形如:
\dot{x}=\hat{A}x \\
可以看到这个时候并没有输入 u(t) 。当然自治的概念一般是针对闭环系统而言的。我们采用闭环状态反馈,能把一个开环连续LTI系统转化为上述自治系统。比如对下面这个系统采用状态反馈控制律
u=-Kx\\ \dot{x}=Ax+Bu
我们可以得到
\dot{x}=(A-BK)x\triangleq{\hat{A}x} \\
显然控制输入 u(t) 在这里的作用就是改变了系统矩阵,也就是改变了系统的“结构”。在这里“结构”可以指很多方面,比如自然频率,系统阻尼,惯性质量等等。对于一个典型的机械系统振动系统而言,也就是希望通过输入来改变系统的惯性(质量M),阻尼(C)以及刚度(K)。这里外界输入是 F(t) 向量。
M\ddot{x}+C\dot{x}+Kx=F(t) \\
那么什么东西在背后决定这些所谓“结构”? 当我们写出LTI系统的状态响应后,即 x(t) 的解之后,就发现了原来是所谓的 模态(mode) 决定了解的构成,也就确定了系统的运动规律。所以控制输入作用于系统之上,我们希望控制信号能改变系统模态,让系统的响应按照我们期望的样子运行。
研究中人们发现,并不是只要你加了控制,系统就能任意被你驱使的。或者说, 即便你输入了控制,这控制信号也未必能一定作用到你想要控制的系统状态 。我们在设计控制系统之前自然想知道: 理论上是否可以存在控制输入 u(t) ,在一段时间内,使得系统的状态能够从当前的初值转移到我们指定的终值 。
如果我们证明了其不存在,那么就不要谈控制设计了,先把 系统设计(System design) 和 系统识别(System identification) 重新过一遍,看看是否可以改进。如果证明了其存在,我们就可以放心进行控制设计了。
这就是能控性概念提出的原因。
2. 能控性和能达性的初步概念 Intro of Controllability and Reachability
Controllability和Reachability这两个词经常出现,但是一般人基本都会被搞晕掉。其实我看了很多以前的书,它们反而是Reachability这个词用的更多一些。不过我们很快就会搞清楚它们的关系。当然我其实觉得纠结这些概念上的东西的区别很多时候没有必要,因为很多概念本身定义都五花八门,每个人根据自己的理解都会有一些细微的差别。我们能真正理解其含义就行,至于名字上和条件上的差别,这都是可以根据需要改变。
Controllability的概念在上一节的结尾我已经提了。这里针对连续的LTI系统稍稍正式一点再复述一遍:
Controllability of Continuous LTI system(LTI系统的能控性):对于系统
\dot{x}=Ax+Bu \\
如果存在一个分段连续(piecewise continuous)的输入信号 u(t) ,能在时间区间[ t_0,t_1 ]内,使得系统的初始状态 x(t_0) ,转移到指定的任意一个终端状态 x(t_1) ,那么此状态可控。如果所有的系统初值都能被一个 u(t) 转移到 x(t_1) ,即所有状态能控,那么此系统是能控的(controllable)。
第一点注意:我们在Controllability中强调的是什么? 强调的是,指定了某时刻( t_1,t_1>t_0 )的终值,初始时刻( t_0 )时取何种初值 x(t_0) 能够被 u(t) 转移到它 。所以你可以理解为,目标只有一个,我想确定的是从哪些初值出发能在控制作用下到达这个目标。这其实就是控制中的一个问题,为了消除扰动对系统的干扰,我们希望系统在控制的作用下始终能最终到达目标,不管初值受到多大的扰动而发生变化。我们能找到这一个用初值构成的能控状态集合,从它们出发系统最终能达到目标。如果这个集合是全状态空间,那么系统就是可控的。一般会用pair (A,B) is controllable的说法。
第二点注意: u(t) 的并不是唯一的,并且没有指定形式和约束,从初值到终值的路径是不确定的,就像你从家到学校,路可能有很多条,你所花费的体力和钱可能都是不一样的。至于哪种 u(t) 最好,这是最优控制的问题。
虽然理想很美好,但是实际系统的状态并不能随意在全空间中任意选取。 线性系统只是一个假设,我们只能在很小一段范围内将其近似为线性的,所以所谓的状态也只是在线性化平衡点附近的变化。我们虽然说线性化系统是可控的,但是对实际系统的初值范围肯定是有要求的。 所以你看出来没,很多东西都是建立在理论上的结论。 我们就假设它为理想的连续LTI系统吧。
那么一句话说Controllability定义的问题: 给定终值(可任意指定),询问是否存在合适的初值出发点能够设计一个 u(t) 来实现转移。在一般控制问题中,我们都会把终值取为origin。因为平衡点都可以进行转移,所以取origin为终值不失一般性。
那么说完Controllability的概念,我们来说说另一个它的兄弟概念:Reachability。
Reachability of Continuous LTI system(LTI系统的能达性):对于系统
\dot{x}=Ax+Bu \\
如果存在一个分段连续(piecewise continuous)的输入信号 u(t) ,能在时间区间[ t_0,t_1 ]内,将指定的系统的初始状态 x(t_0) ,转移到任意一个终端状态 x(t_1) ,那么此状态能达。如果所有的系统初值都能被一个 u(t) 转移到任意的终值 x(t_1) ,即所有状态能达,那么此系统是能达的(reachable)。
比较下两个定义,简单来说,能达性强调的是:确定起点,探讨从起点出发最后终值的去向。这里我们更关心,从状态空间指定的某一点出发,最终能不能到达其他任意的地方。而能控性强调,从状态空间的任意点出发,最终能达到指定的某一点。所以两者的所讨论的“方向”是相反的。
为什么要分别提这两个概念呢? 那当然是因为这两个概念 并不是总是能够相互等价的 。我们在下一节进行详细讨论, 连续LTI系统能控则能达,能达则能控。 但是离散LTI系统和时变LTI系统就并不是这样了。
3. 探究能达性与能控性:从离散LTI系统出发 Difference from Discrete LTI System
不要看到离散就跳过,这是重点!我们在学习状态空间法为基础的控制时,总是会选择性地省略关于离散系统的很多推导,直接给个结论或者压根就不看。实际上很多控制系统本身就是离散的,有时候由于计算机的参与,我们也要考虑z域中的传递函数。这里先说离散系统的原因就是: 离散LTI系统的能控性与能达性并不等价。
3.1 从能达性开始
这里我们为了理解能达性与能控性,我们把上面的连续LTI系统的微分方程改为差分方程,即有n维离散LTI系统,其中 u(k) 是m维的: x(k+1)=Ax(k)+Bu(k) \\
现在考虑能达性问题。我们从指定的初值 x(k_0)=0 出发,探究系统从该初值出发是否能达到任意一个终值 x(k) 。为了看清楚点,我们直接从第 k_0=0 步开始算,终值就取 k_1=k ,所有的 x(k) 的集合代表了 x(0)=0 在k步内能够达到的状态的集合,记为 {\chi^{+}}(k) : x(1)=Ax(0)+Bu(0)=Bu(0) \\ x(2)=Ax(1)+Bu(1)=ABu(0)+Bu(1) \\ x(3)=Ax(2)+Bu(2)=A(ABu(0)+Bu(1))+Bu(2)=A^2Bu(0)+ABu(1)+Bu(2) \\
一直算下去,到终值时: x(k)=Ax(k-1)+Bu(k-1)\\ =A^{k-1}Bu(0)+A^{k-2}Bu(1)+A^{k-3}Bu(2)...+ABu(k-2)+Bu(k-1) \\
我们把结果写成矩阵相乘的形式 x(k)=\begin{bmatrix}B & AB & A^2B &...&A^{k-2}B &A^{k-1}B \end{bmatrix}_{n\times{mk}}\begin{bmatrix}u(k-1) \\u(k-2)\\u(k-3)\\\vdots\\u(1)\\u(0) \end{bmatrix}_{mk\times1}\\
如果定义:k步reachability矩阵为: M_R(k)=\begin{bmatrix}B & AB & A^2B &...&A^{k-2}B &A^{k-1}B \end{bmatrix} \\
由于控制序列的值 u(0),...,u(k-1) 可以是任意的,那么显然所有 x(k) 处在 M_R(k) 的像空间中。也就是说有:
x(k)=M_R(k)\cdot{u}\\ \chi^{+}(k)=Im(M_R(k))
那么要讨论第k步的 x(k) 能不能任意取值,自然是要考虑 M_R(k) 的像空间的维度。根据线性代数知识,像空间的维度完全取决于 M_R(k) 的线性无关向量的个数,换言之 取决于 M_R(k) 的秩 。我们知道n维系统由n个状态变量,那么 M_R(k) 是一个 n\times{mk} 的矩阵,所以相乘才能得到 x(k) 是一个 n\times{1} 的向量。
重点来了!
我们马上意识到 M_R(k) 的秩取决于 mk 的值。如果 mk\leq{n} ,那么 M_R(k) 的秩最大只能为 mk 。这个时候 M_R(k) 的像空间 Im(M_R(k)) 的维度只有 mk (第 k 步时此矩阵只有 mk 列,而行秩与列秩必须相等,秩肯定不能超过行数和列数中较小的那个数),这意味着 x(k) 是一个 n 维向量,即有n个状态变量,但是最多只有 mk 个状态能够被输入向量 u 所影响,而剩下的 n-mk 个状态变量是不受影响的。所以初始状态能达的范围并不是整个n维状态空间,而是其中的一部分!
我们还意识到,随着时间的流逝, k 会慢慢增加,等到了第一次使得 mk>=n 的第 k^* 步时,由于 m>=1 ,满足 mk>=n 的最大 k^*=n ,即不超过 n 步即可令reachability矩阵的最大可能秩为 n 。此时我们取第 n 步的矩阵为: M_R(n)=\begin{bmatrix}B & AB & A^2B &...&A^{n-2}B &A^{n-1}B \end{bmatrix}_{n\times{nm}} \\
这个时候 M_R(n) 的秩变成了 n ,并且当 k 继续增加, M_R(n+1),M_R(n+2),... 的秩都为 n ,不再增加。这是因为尽管矩阵 M_R 的列数在增加,但是其最大行数只有 n 。所以此时我们就发现, 从第n步开始 M_R(n) 之后的矩阵像空间的维度均为 n ,这意味着控制向量 u 可以完全影响所有n个状态 。从维度上讲,这是我们能够从初始状态出发能达的最大空间。
于是我们定义上面的 M_R(n) 为reachability matrix,而不再加k步这样的字眼了。
M_R=\begin{bmatrix}B & AB & A^2B &...&A^{n-2}B &A^{n-1}B \end{bmatrix} \\
之前学过能控性判别条件的话,你可能已经发现了这个矩阵正是连续LTI系统的能控性矩阵。不错,我们后面会继续解释。
这里我们已经找到了一个 离散LTI系统能达性 的判别的 充要条件 : rank(M_R)=n 。显然要满足这个条件,我们起码得让系统演化到第n步,否则如前面分析的,最多只有mk个系统状态能够被影响到,这暗示我们控制系统需要运行一定的时间才能达到最好的控制效果。此时 Im(M_R) 的维度就是n,所以 M_R 的像空间与原状态空间就是同构的,即维度相同,只是基向量不同而已,本质上是同一个向量空间。所以如果 M_R 的像空间 Im(M_R) 就是全状态空间,那么初始状态就是reachable的。
注意,初始状态也是可以任意选取的,初值不会影响后来矩阵的像空间维度,只是将能达的状态进行了一个平移,平移量由初值和 A 确定。这点可以自行假设一个初值不为0的 x(0) 往里面代;另外初始步数 k_0 如果不是0,我们仍然能得到一样的 M_R (你可以按照上面自己推一遍)。 所以如果满足维度为n,那么我们可以得出此离散LTI系统是能达的。否则如果小于n,比如秩只有m,那么能达的集合就是由 M_R 中 m个向量的线性无关的向量构成的状态空间的子空间(subspace)。
3.2 再谈能控性
根据能控性的定义,我们从一个任取的状态出发,然后考虑在k步之内,系统能否回到origin。对于离散LTI系统 x(k+1)=Ax(k)+Bu(k) \\
我们取任意初值 x(0) ,初始步为k=0。然后目标是要让 x(k)=0 。我们依旧可以把值代进去求解: x(1)=Ax(0)+Bu(0)\\ x(2)=A(Ax(0)+Bu(0))+Bu(1) \\ \vdots\\ x(k)=A^{k}x(0)+\Sigma^{k-1}_{j=0}{A^{k-j-1}Bu(j)}
\Sigma^{k-1}_{j=0}{A^{k-j-1}Bu(j)} 这部分我们在上一小节中已经学成了k步reachability矩阵与控制向量u的点积,这里把它写成 M_R(k)\cdot{u} ,其中 M_R(k)=\begin{bmatrix}B & AB &A^2B&...&A^{k-1}B\end{bmatrix}\\
令 x(k)=0 则有
-A^{k}x(0)=\Sigma^{k-1}_{j=0}{A^{k-j-1}Bu(j)}=M_R(k)\cdot{u}\\
这告诉我们,如果上面等式成立,那么必然有 A^{k}x(0) 属于 M_R(k) 的像空间,换言之, 如果我们从origin出发考虑能达性, A^{k}x(0) 一定要在能达的范围之内,这样系统在k步之内才是能控的。考虑n步之后,矩阵 M_R(k) 就变成了 M_R 。
- 如果说 离散LTI系统 本身已经已经是reachable了,从origin出发,意味着终值选取是任意的,显然我们就一定可以推出controllable的结论: reachable\Rightarrow{controllable}\\
- reachability保证了 M_R 的像空间是全状态空间, A^{n}x(0) 自然是在里面的。
2. 如果说 离散LTI系统 是controllable的,那么只能说明 A^{n}x(0) 在 M_R 的像空间中的,但是 M_R 的维度可就不好确定了。最简单的例子,如果 A=0 ,并且 rank(B)<n ,那么 M_R 的像空间中显然包括 A^{n}x(0)=0 (因为像空间是subspace,origin一定在里面,再显然一点,只要控制取的合适,总能为0),但是 rank(M_R) 却一定小于 n ,所以此时系统是not reachable的。
controllable\nRightarrow{reachable}\\
所以在这里我们发现能控与能达并非总是等价的概念。但是对于连续的LTI系统来讲,他们就是等价的。我们下一节再讨论。
下一篇我们会继续讨论LTI和LTV的能控性与能观性,以及它们的判别条件。
参考资料 Reference
关于概念参考了多方的课堂笔记,就不一一写出来了。这里贴一个链接,是我觉得写的比较好的:
另外一方面的参考就是Kemin Zhou在Robust and Optimal Control里的Linear System回顾,以及刘豹的现代控制理论的第三章。不过这两个参考源,前者比较简略,后者并没有细说能达性。