线性状态观测器和线性控制器综合
对于一个不可观测的系统的控制,就需要用到设计观测器和控制器结合
对于一个系统
X˙=AX+Buy=CX+Du\dot{X}=AX+Bu\\y=CX+Du
X˙=AX+Buy=CX+Du
观测器
根据之前的观测器设计,可以得到
ex˙=(A−LC)exex=X−X^L=[l1l2]\dot{e_x}=(A-LC)e_x\\e_x={X}-{\hat{X}}\\L=\begin{bmatrix}l_1\\l_2\end{bmatrix}
ex˙=(A−LC)exex=X−X^L=[l1l2]
需要 A−LCA-LCA−LC 的特征值小于 0 ,才能使得该误差值逐渐趋近于 0
控制器
其中需要设计控制器为
u=−KX^u=-K\hat{X}
u=−KX^
带入到系统状态方程中可以得到
X˙=AX−BK(X−ex)=(A−BK)X+BKex\dot{X}=AX-BK(X-e_x)=(A-BK)X+BKe_x
X˙=AX−BK(X−ex)=(A−BK)X+BKex
与观测器中的式子合并可以得到
[ex˙x˙]=[A−LC0BKA−BK][exx]=M[exx]\begin{bm ...
线性控制器设计
系统控制
对于一个开环控制器来说
X˙=AX\dot{X}=AX
X˙=AX
这里的 AAA 的特征值 λ\lambdaλ 决定系统的表现,稳定性
当引入一个输入量时,控制器变为
X˙=AX+Bu\dot{X}=AX+Bu
X˙=AX+Bu
其中由于 uuu 是 XXX 的函数,所以系统形成了一个闭环控制
对于线性控制器来说,输入 uuu 满足
u=−KXu=-KX
u=−KX
代入到控制器中可以得到
X˙=AX−BKX=(A−BK)X\dot{X}=AX-BKX=(A-BK)X
X˙=AX−BKX=(A−BK)X
可以选择 KKK 的数值来使得 XXX 前的系数的特征值 λi\lambda_iλi 处于一个期望的位置上,一般来说,需要保证其特征值均 ≤0≤0≤0 才能使得系统稳定
选取 λi\lambda_iλi 的原则
如果选取 λ\lambdaλ 为虚数,那么一定会有共轭解存在,将一定会引入一个反复的振动
λ\lambdaλ 决定收敛的速度,最后的解的形式会变为 c1eλ1+c2eλ2+...c_1e^{\lambda_1}+c_2e^{\lambda_2}+...c1e ...
线性状态观测器
对于系统的状态,一般都是可以直接测定的,但是有些情况,系统的状态不能够直接测定,所以要根据系统的输入和输出来估计系统的状态
对于一个系统
X˙=AX+Buy=CX+Du\dot{X}=AX+Bu\\y=CX+Du
X˙=AX+Buy=CX+Du
设定 X^\hat{X}X^ 为系统状态的估计值, y^\hat{y}y^ 为输出的估计值
X^˙=AX^+Bu+L(y−y^)y^=CX^+Du\dot{\hat{X}}=A\hat{X}+Bu+L(y-\hat{y})\\\hat{y}=C\hat{X}+Du
X^˙=AX^+Bu+L(y−y^)y^=CX^+Du
两式合并得
X^˙=(A−LC)X^+(B−LD)u+Ly\dot{\hat{X}}=(A-LC)\hat{X}+(B-LD)u+Ly
X^˙=(A−LC)X^+(B−LD)u+Ly
这就是观测器形式
可以得到
X˙−X^˙=AX+Bu−((A−LC)X^+(B−LD)u+Ly)⇓X˙−X^˙=(A−LC)X−(A−LC)X^=(A−LC)(X−X^)\dot{X}-\dot{\hat{X}}=AX+Bu-((A-LC)\ ...
LQR线性二次型调节器
github仓库
线性指的是系统是线性的,典型的线性系统的状态方程
x(k+1)=Ax(k)+Bu(k)x(k+1)=Ax(k)+Bu(k)
x(k+1)=Ax(k)+Bu(k)
二次型是指代价函数 JJJ 是二次型的。
J=12x(N)TSx(N)+12∑k=0N−1[xT(k)Qx(k)+uT(k)Ru(k)]J=\frac{1}{2} x(N)^TSx(N)+\frac{1}{2}\sum_{k=0}^{N-1}{[x^T(k)Qx(k)+u^T(k)Ru(k)]}
J=21x(N)TSx(N)+21k=0∑N−1[xT(k)Qx(k)+uT(k)Ru(k)]
其中前一项中 NNN 表示末端时刻, xdx_dxd 是系统的参考,也就是目标,这个 JJJ 是末端代价, SSS 为末端状态的权重矩阵,是一个对角阵, QQQ 是运行过程中的权重矩阵, RRR 是控制量的权重矩阵, SSS 和 QQQ 是 N×NN\times NN×N 的,但是 RRR 是 P×PP\times PP×P的,如果对某个元素要求大时可以对应的将 RRR 增大,关键的是 SSS 和 QQQ 都是半正 ...
matlab中LMI工具箱使用
初始化一个 LMI 系统
12setlmis(lmi0);setlmis([]); % 常用
向 LMI 系统中添加矩阵变量 lmivar
12X = lmivar(type, struct); % 常用[X, ndec, xdec] = lmivar(type, struct); % ndec表述与X有关的决策变量的个数,xdec表示X对这些决策变量的初始依赖关系
type类型对应的数值
含义
1
对角线对称矩阵格式,每个对角块都是满块
2
矩形块,struct=[m,n] 表示 m x n 阶矩阵
3
描述复杂类型的矩阵
type=1
struct 包含两个基本变量
第一个描述矩阵块的阶数
第二个描述矩阵块的类型
0
标量
1
满块
-1
零块
type=2
type=3
描述复杂类型的矩阵
返回 LMI 的函数的内部描述 getlmis
1lmisys = getlmis % lmisys 称为存储在机器内部线性矩阵不等式系统的名称,一个线性矩阵不等式以 setlmis 开始,以 getlmis 结束 ...
不变性原理
例子
对于一个简单的倒立摆
可以知道系统状态方程是
Lϕ¨+gsinϕ=0L\ddot{\phi}+gsin\phi=0
Lϕ¨+gsinϕ=0
设
x1=ϕx2=ϕ˙x_1=\phi\\\\
x_2=\dot{\phi}
x1=ϕx2=ϕ˙
得到
x˙1=x2x˙2=−gLsinx1\dot{x}_1=x_2\\\\
\dot{x}_2=-\frac{g}{L}sinx_1
x˙1=x2x˙2=−Lgsinx1
寻找李雅普诺夫函数,可以使用能量方程
E=K动能+P势能=12mv2+mgh=12m(Lϕ˙)2+mgL(1−cosϕ)E=K\text{动能}+P\text{势能}\\\\
=\frac{1}{2}mv^2+mgh=\frac{1}{2}m(L\dot{\phi})^2+mgL(1-cos\phi)
E=K动能+P势能=21mv2+mgh=21m(Lϕ˙)2+mgL(1−cosϕ)
所以得到李雅普诺夫函数
V(x)=12m(Lx2)2+mgL(1−cosx1)V(x)=\frac{1}{2}m(Lx_2)^2+mgL(1-cosx_1)
V(x)= ...
系统的稳定性
稳定性:系统在离开平衡点之后的动态反应随时间不增加
函数的一些知识
PD 正定
V(x)=0 if and only if x=0V(x)=0\ if\ and\ only\ if\ x=0V(x)=0 if and only if x=0
V(x)>0 if and only if x≠0V(x)>0\ if\ and\ only\ if\ x\neq 0V(x)>0 if and only if x=0
PSD 半正定
V(x)=0 if and only if x=0V(x)=0\ if\ and\ only\ if\ x=0V(x)=0 if and only if x=0
V(x)≥0 if and only if x≠0V(x)\geq0\ if\ and\ only\ if\ x\neq 0V(x)≥0 if and only if x=0
ND 负定
V(x)=0 if and only if x=0V(x)=0\ if\ and\ only\ if\ x=0V(x)=0 if and only if x=0
V(x)<0 if ...
系统的可控性
对于一个系统状态方程
X˙=AX+Bu\dot{X}=AX+Bu
X˙=AX+Bu
离散型与连续型是一样的
Xk+1=AXk+BukX_{k+1}=AX_k+Bu_k
Xk+1=AXk+Buk
X1=AX0+Bu0X2=AX1+Bu1=A2X0+ABu0+Bu1…Xn=AXn−1+Bun−1=AnX0+An−1Bu0+⋯+ABun−2+Bun−1X_{1}=AX_0+Bu_0\\\\
X_2=AX_1+Bu_1=A^2X_0+ABu_0+Bu_1\\\\
\dots\\\\
X_n=AX_{n-1}+Bu_{n-1}=A^nX_0+A^{n-1}Bu_0+\dots+ABu_{n-2}+Bu_{n-1}
X1=AX0+Bu0X2=AX1+Bu1=A2X0+ABu0+Bu1…Xn=AXn−1+Bun−1=AnX0+An−1Bu0+⋯+ABun−2+Bun−1
转化为矩阵形式
Xn=[BABAn−1BAn][un−1un−2…u0X0]X_n=\begin{bmatrix}B&AB&A^{n-1}B&A^n\end{bmatri ...
Hamilton Matrix and Equation
最优化问题求解中的汉密尔顿方程是最优控制方法解决动态优化问题的一阶必要条件
汉密尔顿方程(Hamilton Equation)
理论推导
首先看需要解决的问题
max∫t0t1f(x,u)dtx˙=g(x,u)x(t0)=x0x(t1):freemax\int_{t_0}^{t_1}f(x,u)dt\\\\
\dot{x}=g(x,u)\\\\
x(t_0)=x_0\\\\
x(t_1):free
max∫t0t1f(x,u)dtx˙=g(x,u)x(t0)=x0x(t1):free
引入一个函数 λ(t)\lambda (t)λ(t) 表示一个定义在 t0≤t≤t1t_0\leq t\leq t_1t0≤t≤t1 上的连续的可微函数,那么对于任何满足上述约束的 x(t),u(t)x(t),u(t)x(t),u(t) 有
∫t0t1f(x,u)dt=∫t0t1[f(x,u)+λg(x,u)−λx˙]dt\int_{t_0}^{t_1}f(x,u)dt=\int_{t_0}^{t_1}[f(x,u)+\lambda g(x,u)-\lambda \dot{x}]dt
∫t ...
Riccati方程
前言
第四讲:李群和李代数 - 知乎 (zhihu.com)
辛矩阵
数学中,辛矩阵是指存在一个 2n×2n2n\times 2n2n×2n 的矩阵 M,使之满足
MTΩM=ΩM^T\Omega M=\Omega
MTΩM=Ω
其中 MTM^TMT 为 M 的转置矩阵,而辛矩阵 Ω\OmegaΩ 是一个固定的可逆斜对称矩阵,这类矩阵在适当的变化后皆能表为
Ω=[0I−I0]\Omega=\begin{bmatrix}0&I\\-I&0\end{bmatrix}
Ω=[0−II0]
或者
Ω=[01−10...01−10]\Omega=\begin{bmatrix}0&1\\-1&0\\&&...\\&&&0&1\\&&&-1&0\\\end{bmatrix}
Ω=⎣⎢⎢⎢⎢⎢⎡0−110...0−110⎦⎥⎥⎥⎥⎥⎤
两者的差异仅在于基的排列,其中 III 是 n×nn\times nn×n 的单位矩阵,此外 detΩ=1\det\Omega=1detΩ= ...