HighGain and HighFrequency
github仓库
对于一个系统
x˙=f(x)+ux→xd\dot{x}=f(x)+u\\\\
x\rightarrow x_d
x˙=f(x)+ux→xd
其中不清楚 f(x)f(x)f(x) 的具体表达形式,但是 f(x)f(x)f(x) 是有界的,并且 ∣f(x)∣<ρ(x)|f(x)|<\rho(x)∣f(x)∣<ρ(x)
引入误差 e=xd−xe=x_d-xe=xd−x ⇒ e˙=x˙d−f(x)−u\dot{e}=\dot{x}_d-f(x)-ue˙=x˙d−f(x)−u,定义李雅普诺夫函数 V(e)=12e2V(e)=\frac{1}{2}e^2V(e)=21e2
不妨令
u=ke+x˙d+uauxu=ke+\dot{x}_d+u_{aux}
u=ke+x˙d+uaux
其中 uauxu_{aux}uaux 是一个辅助的控制器
滑膜控制器: uaux=ρ(x)∣e∣eu_{aux}=\rho(x) \frac{|e|}{e}uaux=ρ(x)e∣e∣,而这个会导致系统不断抖动
High Gain: uaux=1ερ2eu_{aux}=\ ...
SMC滑膜控制理论
github仓库
李雅普诺夫Lyapunov平衡理论
李雅普诺夫(第二方法)稳定性
如何理解李雅普诺夫稳定性分析
主要是用来判断一个系统是否能稳定
平衡点
一个控制系统最重要的问题就是稳定性的问题。稳定性就是一个系统在收到扰动之后能否有能力在平衡状态继续工作。平衡点就是系统状态不再发生状态的点,可能不止一个,也可能很脆弱稍微有点扰动就不再平衡了。实际上系统状态稳定的点应该是导数为0的点,也就是让系统状态方程的所有状态的导数为0,即变化率为0。
李雅普诺夫稳定
如果平衡状态受到扰动之后,仍然停留在平衡状态点附近,即该平衡点在李雅普诺夫意义下是稳定的
如果平衡状态受到扰动之后,最终都会收敛到该平衡点处,即该平衡点在李雅普诺夫意义下是渐进稳定的
如果平衡状态受到任何扰动之后最终都会收敛到该平衡点处时,即该平衡点咋子李雅普诺夫意义下是大范围渐进稳定的
如果平衡状态受到某种扰动之后状态开始偏离平衡点,就称该点在李雅普诺夫意义下是不稳定的
李雅普诺夫第一法
需要将非线性系统在平衡态附近线性化,然后讨论线性化系统的特征值分布来研究原非线性系统的稳定性问题。称之为间接法
李雅普诺 ...
非线性自适应控制器
对于一个系统
x˙=ax2+ux→xd\dot{x}=ax^2+u\\x\rightarrow x_d
x˙=ax2+ux→xd
可以设定 e=xd−xe=x_d-xe=xd−x,并且使 e→0e→0e→0,定义李雅普诺夫函数
V(e)=12e2:PDV(e)=\frac{1}{2}e^2:PD
V(e)=21e2:PD
得到
V˙(e)=ee˙=e(x˙d−ax2−u)\dot{V}(e)=e\dot{e}=e(\dot{x}_d-ax^2-u)
V˙(e)=ee˙=e(x˙d−ax2−u)
要使得上式负定,可以令 e˙=−ke\dot{e}=-kee˙=−ke ,就可以设置 u=x˙d−ax2+keu=\dot{x}_d-ax^2+keu=x˙d−ax2+ke,化简上式为
V˙(e)=−ke2:ND\dot{V}(e)=-ke^2:ND
V˙(e)=−ke2:ND
但是对于上述例子,如果 aaa 是未知的,或者是缓慢变化的数字(a˙=0\dot{a}=0a˙=0)就难以控制,所以需要自适应控制器
可以引入估计值 a^\hat{a}a^ 和估计误差 a~=a−a^\wide ...
非线性系统控制器设计
对于一个非线性系统
x˙=f(x,u)\dot{x}=f(x,u)
x˙=f(x,u)
假设 u 是 x 的函数
u=ϕ(x)u=\phi (x)
u=ϕ(x)
所以得到系统状态图
123graph LRA((u))-->B[f]-->C((x))C-->D[Φ]-->A
反馈线性化
就是将传递函数 f(x,u)f(x,u)f(x,u) 中的非线性部分通过调整 ϕ(x)\phi (x)ϕ(x) 来抵消,最终得到的是一个线性的关系
例子
x˙=f(x,u)=ax2+u\dot{x}=f(x,u)=ax^2+u
x˙=f(x,u)=ax2+u
可以使得 u=ϕ(x)=−ax2−xu=\phi(x)=-ax^2-xu=ϕ(x)=−ax2−x,其中 −ax2-ax^2−ax2 用于抵消系统的非线性量,而 −x-x−x 用于将系统保持平稳,得到
x˙=−x↓x=e−t\dot{x}=-x\\\\
\downarrow\\\\
x=e^{-t}
x˙=−x↓x=e−t
当 t→∞t→\inftyt→∞ 时, x→0x→0x→0
李雅普诺夫直接办法
需要选取李雅普诺夫函数来判 ...
线性状态观测器和线性控制器综合
对于一个不可观测的系统的控制,就需要用到设计观测器和控制器结合
对于一个系统
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)= ...