HighGain and HighFrequency
github仓库
控制器原理对于一个系统
\dot{x}=f(x)+u\\\\
x\rightarrow x_d其中不清楚 $f(x)$ 的具体表达形式,但是 $f(x)$ 是有界的,并且 $|f(x)|<\rho(x)$ ,引入误差 $e=x_d-x$ ⇒ $\dot{e}=\dot{x}_d-f(x)-u$,定义李雅普诺夫函数 $V(e)=\frac{1}{2}e^2$ ,不妨令
u=ke+\dot{x}_d+u_{aux}其中 $u_{aux}$ 是一个辅助的控制器,但是使用滑膜控制器 $u_{aux}=\rho(x) \frac{|e|}{e}$,而这个会导致系统不断抖动
High Gain控制器的具体形式为 $u_{aux}=\frac{1}{\varepsilon}\rho^2e$ 用足够大的输入抵消不确定性
根据李雅普诺夫函数求导得到 $\dot{V}$ ,将上述的 $\dot{e},u_{aux}$ 带入 $\dot{V}$,得
\dot{V}=e\dot{e}=e(\dot{x}_d-f(x)-ke-\dot{x}_d-\frac{1}{\varepsil ...
SMC滑膜控制理论
github仓库
李雅普诺夫Lyapunov平衡理论李雅普诺夫(第二方法)稳定性
如何理解李雅普诺夫稳定性分析
主要是用来判断一个系统是否能稳定
平衡点一个控制系统最重要的问题就是稳定性的问题。稳定性就是一个系统在收到扰动之后能否有能力在平衡状态继续工作。平衡点就是系统状态不再发生状态的点,可能不止一个,也可能很脆弱稍微有点扰动就不再平衡了。实际上系统状态稳定的点应该是导数为0的点,也就是让系统状态方程的所有状态的导数为0,即变化率为0。
李雅普诺夫稳定
如果平衡状态受到扰动之后,仍然停留在平衡状态点附近,即该平衡点在李雅普诺夫意义下是稳定的
如果平衡状态受到扰动之后,最终都会收敛到该平衡点处,即该平衡点在李雅普诺夫意义下是渐进稳定的
如果平衡状态受到任何扰动之后最终都会收敛到该平衡点处时,即该平衡点咋子李雅普诺夫意义下是大范围渐进稳定的
如果平衡状态受到某种扰动之后状态开始偏离平衡点,就称该点在李雅普诺夫意义下是不稳定的
李雅普诺夫第一法需要将非线性系统在平衡态附近线性化,然后讨论线性化系统的特征值分布来研究原非线性系统的稳定性问题。称之为间接法
李雅普诺夫第二法稳定的系统 ...
非线性自适应控制器
控制器原理对于一个系统
\dot{x}=ax^2+u\\x\rightarrow x_d可以设定 $e=x_d-x$,并且使 $e→0$,定义李雅普诺夫函数
V(e)=\frac{1}{2}e^2:PD得到
\dot{V}(e)=e\dot{e}=e(\dot{x}_d-ax^2-u)要使得上式负定,可以令 $\dot{e}=-ke$ ,就可以设置 $u=\dot{x}_d-ax^2+ke$,化简上式为
\dot{V}(e)=-ke^2:ND但是对于上述例子,如果 $a$ 是未知的,或者是缓慢变化的数字($\dot{a}=0$)就难以控制,所以需要自适应控制器,可以引入估计值 $\hat{a}$ 和估计误差 $\widetilde a=a-\hat{a}$,所以 $\dot{\widetilde a}=\dot{a}-\dot{\hat{a}}=-\dot{\hat{a}}$ 。可以设置李雅普诺夫函数
V(e,\widetilde a)=\frac{1}{2}e^2+\frac{1}{2}\widetilde a^2求导得
\dot{V}(e,\widetilde a)=e ...
非线性系统控制器设计
前言对于一个非线性系统
\dot{x}=f(x,u)假设 u 是 x 的函数
u=\phi (x)反馈线性化就是将传递函数 $f(x,u)$ 中的非线性部分通过调整 $\phi (x)$ 来抵消,最终得到的是一个线性的关系
例子
\dot{x}=f(x,u)=ax^2+u可以使得 $u=\phi(x)=-ax^2-x$,其中 $-ax^2$ 用于抵消系统的非线性量,而 $-x$ 用于将系统保持平稳,得到
\dot{x}=-x\\\\
\downarrow\\\\
x=e^{-t}当 $t→\infty$ 时, $x→0$
李雅普诺夫直接办法需要选取李雅普诺夫函数来判断
例子
\dot{x}=f(x,u)=x^2-x^3+u选定
V=\frac{1}{2}x^2由于
V(0)=0\\\\
V(x)>0~~x\not=0\\\\
\dot{V}=x^3-x^4+xu所以就需要设计 u 使 $\dot{V}$ 负定
已知
x^3:\text{非负定}\\\\
-x^4:\text{负定}所以就需要选定 u 来消除 $x^3$ ,可以选择 $u=-x^2-x$,消除非负定项,最 ...
线性状态观测器和线性控制器综合
前言对于一个不可观测的系统的控制,就需要用到设计观测器和控制器结合
对于一个系统
\dot{X}=AX+Bu\\y=CX+Du观测器和控制器设计如下
观测器根据线性状态观测器的设计
\dot{e_x}=(A-LC)e_x\\e_x={X}-{\hat{X}}\\L=\begin{bmatrix}l_1\\l_2\end{bmatrix}需要 $A-LC$ 的特征值小于 0 ,才能使得该误差值逐渐趋近于 0
控制器其中需要设计控制器为
u=-K\hat{X}带入到系统状态方程中可以得到
\dot{X}=AX-BK(X-e_x)=(A-BK)X+BKe_x与观测器中的式子合并可以得到
\begin{bmatrix}\dot{e_x}\\\dot{x}\end{bmatrix}=\begin{bmatrix}A-LC&0\\BK&A-BK\end{bmatrix}\begin{bmatrix}{e_x}\\{x}\end{bmatrix}=M\begin{bmatrix}{e_x}\\{x}\end{bmatrix}这里就看出来了,M 矩阵的特征值得实部必须小于 0 ,实际上该矩阵 ...
线性控制器设计
系统控制对于一个开环控制器来说
\dot{X}=AX这里的 $A$ 的特征值 $\lambda$ 决定系统的表现,稳定性
当引入一个输入量时,控制器变为
\dot{X}=AX+Bu其中由于 $u$ 是 $X$ 的函数,所以系统形成了一个闭环控制
对于线性控制器来说,输入 $u$ 满足
u=-KX代入到控制器中可以得到
\dot{X}=AX-BKX=(A-BK)X可以选择 $K$ 的数值来使得 $X$ 前的系数的特征值 $\lambda_i$ 处于一个期望的位置上,一般来说,需要保证其特征值均 $≤0$ 才能使得系统稳定
选取 $\lambda_i$ 的原则
如果选取 $\lambda$ 为虚数,那么一定会有共轭解存在,将一定会引入一个反复的振动
$\lambda$ 决定收敛的速度,最后的解的形式会变为 $c_1e^{\lambda_1}+c_2e^{\lambda_2}+…$
考虑输入 $u$,有些控制理论中会引入代价函数 $J=\int_0^{\infty}(X^TQX+U^TRU)dt$ ,用于调节参数平衡 u 与系统稳定的关系
控制器设计之前一定要判断一下系统的可控性 ...
线性状态观测器
系统的可观测性对于一个开环系统
\dot{X}=AX\\y=CX可以得到系统的状态转移方程
X=e^{At}X(0)根据状态方程的解,可以知道
y=CX=Ce^{At}X(0)根据矩阵质数定义的状态转移矩阵有
e^{At}=I+At+\frac{1}{2!}A^2t^2+...取前 n 项
e^{At}=I+At+\frac{1}{2!}A^2t^2+...+\frac{1}{(n-1)!}A^{n-1}t^{n-1}带入到上面 y 的式子中
y=(CI+CAt+...+\frac{1}{(n-1)!}CA^{n-1}t^{n-1})X(0)\\=\begin{bmatrix}I&t&...&\frac{1}{(n-1)!}t^{n-1}\end{bmatrix}\begin{bmatrix}C\\CA\\\dots\\CA^{n-1}\end{bmatrix}X(0)这是一个非齐次线性方程组,要从上面的式子中唯一的解出 n 阶初始状态 x(0) 的充要条件就是下面这个矩阵为满秩。实际的意义就是保证从任意状态来说都能推导出一个唯一的初始状态
定义一个矩阵 O
O=\beg ...
LQR线性二次型调节器
github仓库
线性指的是系统是线性的,典型的线性系统的状态方程
x(k+1)=Ax(k)+Bu(k)二次型是指代价函数 $J$ 是二次型的。
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)]}其中前一项中 $N$ 表示末端时刻, $x_d$ 是系统的参考,也就是目标,这个 $J$ 是末端代价, $S$ 为末端状态的权重矩阵,是一个对角阵, $Q$ 是运行过程中的权重矩阵, $R$ 是控制量的权重矩阵, $S$ 和 $Q$ 是 $N\times N$ 的,但是 $R$ 是 $P\times P$的,如果对某个元素要求大时可以对应的将 $R$ 增大,关键的是 $S$ 和 $Q$ 都是半正定阵, $R$ 为正定阵,只有这样系统才会有最小值,即 $s≥0,q≥0,r>0$
对于一个系统来说,当 $x_d$ 为零时,该系统就是一个调节系统,不为零就是一个跟踪系统。
LQR线性二次型调节器对应的调节二次型的 LQR 的代价函数就是
J=\frac{1}{2} x(N)^T ...
matlab中LMI工具箱使用
初始化一个 LMI 系统12setlmis(lmi0);setlmis([]); % 常用
向 LMI 系统中添加矩阵变量 lmivar12X = 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 的函数的内部描述 getlmis1lmisys = getlmis % lmisys 称为存储在机器内部线性矩阵不等式系统的名称,一个线性矩阵不等式以 s ...
不变性原理
前言李雅普诺夫的不变性原理(LaSalle’s Invariance Principle,也称为李雅普诺夫-拉塞尔不变性原理)是动力系统和控制理论中用于分析系统长期行为的重要工具。它是对经典李雅普诺夫稳定性理论的扩展,尤其在处理非线性系统时非常有用。
示例对于一个简单的倒立摆
可以求出系统状态空间方程是
L\ddot{\phi}+gsin\phi=0设
x=\begin{bmatrix}x_1\\x_2\end{bmatrix}\\
x_1=\phi\\
x_2=\dot{\phi}求导之后可以得到
\dot{x}_1=x_2\\
\dot{x}_2=-\frac{g}{L}sinx_1寻找李雅普诺夫函数,可以使用能量方程来求解
E=K+P\\
=\frac{1}{2}mv^2+mgh=\frac{1}{2}m(L\dot{\phi})^2+mgL(1-cos\phi)其中 $K$ 是动能, $P$ 是势能,所以可以得到李雅普诺夫函数
V(x)=\frac{1}{2}m(Lx_2)^2+mgL(1-cosx_1)开始分析,看得出来
V(0)=0并且,对于任意 $x_1,x ...
系统的稳定性
前言稳定性:系统在离开平衡点之后的动态反应随时间不增加
函数的一些知识PD 正定
$V(x)=0\ if\ and\ only\ if\ x=0$
$V(x)>0\ if\ and\ only\ if\ x\neq 0$
PSD 半正定
$V(x)=0\ if\ and\ only\ if\ x=0$
$V(x)\geq0\ if\ and\ only\ if\ x\neq 0$
ND 负定
$V(x)=0\ if\ and\ only\ if\ x=0$
$V(x)<0\ if\ and\ only\ if\ x\neq 0$
NSD 半负定
$V(x)=0\ if\ and\ only\ if\ x=0$
$V(x)\leq0\ if\ and\ only\ if\ x\neq 0$
平衡点
对于一个函数满足
\dot{x}=f(x)\\f(x=0)=0\\\downarrow\\\dot{x}_{x=0}=0那就说这个 $x=0$ 点是该函数的一个平衡点,如果此时的函数 V 满足
V:PD\\\dot{V}:NSD\\\downarrow\\x=0 ...
系统的可控性
对于一个系统状态方程
\dot{X}=AX+Bu离散型与连续型是一样的
X_{k+1}=AX_k+Bu_k
X_{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}转化为矩阵形式
X_n=\begin{bmatrix}B&AB&A^{n-1}B&A^n\end{bmatrix}\begin{bmatrix}u_{n-1}\\u_{n-2}\\\dots\\u_0\\X_0\end{bmatrix}想要实现该方程中 $u$ 有解,需要保证系数矩阵行满秩,也就是可控,一般来说初始状态 $X_0=0$,所以上式可以写作
X_n=\begin{bmatrix}B&AB&A^{n-1}B\end{bmatrix}\begin{bmatrix}u_{n-1}\\u_{n-2}\\\dots\\u_0\end{bmatrix}但是这里所说的系统可控并不能使系统从一点直接到另一点,只能沿着特 ...
Hamilton Matrix and Equation
Hamiltonian Equation最优化问题求解中的汉密尔顿方程是最优控制方法解决动态优化问题的一阶必要条件
首先看需要解决的问题
max\int_{t_0}^{t_1}f(x,u)dt\\\\
\dot{x}=g(x,u)\\\\
x(t_0)=x_0\\\\
x(t_1):free引入一个函数 $\lambda (t)$ 表示一个定义在 $t_0\leq t\leq t_1$ 上的连续的可微函数,那么对于任何满足上述约束的 $x(t),u(t)$ 有
\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对上式最右侧右侧部分进行分部积分可以得到
-\int_{t_0}^{t_1}\lambda \dot{x}dt=-\lambda(t_1)x(t_1)+\lambda (t_0)x(t_0)+\int_{t_0}^{t_1}x\dot{\lambda}dt将上式带回原来的方程
\int_{t_0}^{t_1}f(x,u)dt=\int_{t_0}^{t_1}[ ...
Riccati方程
前言群群就是一种集合加上一种运算的代数结构,把集合记作 $A$ ,运算记作 $\cdot$ ,那么群就可以记作 $G=(A,\cdot)$ ,一个群满足如下性质
封闭性: $\forall a,b\in A,a\cdot b\in A$
结合律: $\forall a,b,c\in A,(a\cdot b)\cdot c=a\cdot(b\cdot c)$
单位元 $e$ : $\exist e\in A,\forall b\in A,e\cdot b=b\cdot e=b$
逆元: $\forall a\in A,\exist a^{-1}\in A,a\cdot a^{-1}=a^{-1}\cdot a=e$
群结构保证了在群上的运算具有良好的性质
李群李群是同时具有光滑流形结构和群结构的数学对象,李群就是具有连续性质的群,群运算 $(a,b)\rightarrow a\cdot b$ 且 $a\rightarrow a^{-1}$ 都是光滑映射
李群在控制理论中的作用
机器人的姿态表示 $SO(3),SE(3)$
系统对称性分析
非线性控制系统设计
李代数李代数是配备了一 ...
矩阵求导和迹运算
求导对与矩阵 $X$, $A$, $U$, $V$
\frac{dX^T}{X}=I\\\\
\frac{dX}{X^T}=I\\\\
\frac{dX^TA}{X}=A\\\\
\frac{dAX}{X^T}=A\\\\
\frac{dAX}{X}=A^T\\\\
\frac{dXA}{X}=A^T\\\\
\frac{dX^TX}{X}=2X\\\\
\frac{dX^TAX}{X}=(A+A^T)X\\\\
\frac{dX^TAX}{XX^T}=\frac{d}{dX}(\frac{dX^TAX}{dX})=A^T+A\\\\
\frac{\partial U}{\partial X^T}=(\frac{\partial U^T}{\partial X})^T\\\\
\frac{\partial U^TV}{\partial X}=\frac{\partial U^T}{\partial X}V+\frac{\partial V^T}{\partial X}U^T\\\\
\frac{\partial UV^T}{\partial X}=\frac{\partial U}{ ...
系统离散化
连续时间系统一般来说系统的状态变化都是连续的
离散时间系统数字控制器,有时候计算时需要将系统的状态离散化,控制器是离散的输出。这就需要将离散系统和连续系统结合起来,需要用到一些模块。首先是通过ADC将传感器信号采样并转化为离散输出,同时其他的参数都将是离散的形式。随后控制器的输出将会通过DAC转化为连续的系统输出,控制量的输出需要使用到保持器来保证在一个控制周期之内的控制量保持不变。
对于采样,采样频率太快会使数据堆积,需要大量的存储数据,采样频率太小,小于控制周期,会产生误差,采样频率一般采用被采样数据频率的2倍甚至是5-10倍,如果在中断中采样并且处理数据的话,采样周期一定要大于处理所用的时间,否则这段期间内的采样就没有了意义。
有时候会把连续系统近似为离散的系统之后设计算法来控制系统,连续系统与离散系统的转换
采样周期的选取
一般来说肯定是采样周期越小越好 $T→0 \Rightarrow y[k]\rightarrow y(t)$,需要存储大量数据,内存占用多
$T\uparrow$ 会导致产生混叠,根据采样定理,采样频率至少为信号最高频率的2倍,一般选择5~10倍
对于实时 ...
传递函数和状态空间方程
状态空间对于一个系统的状态空间方程,可以使用 Laplace 变换来得到系统的运行状态方程
状态空间方程——一个包含输入,输出,状态变量的集合的一阶微分方程,但是对于高阶的系统,可以选择合适的状态量来消除高阶的系数
根据下式求出的状态空间方程中,对于矩阵 A 的特征值是决定系统极点的位置,可能会决定系统的稳定性
状态空间方程的解对于一个状态空间方程
\left\{\begin{aligned}\dot{x}(t)=Ax(t)+Bu(t)\\y(t)=Cx(t)+Du(t)\end{aligned}\right.对上述第一个式子求解,可以将状态空间方程的解写作如下的形式,解分为两个部分,第一项为零输入响应,第二项为零状态响应。对于零输入响应,当输入 $u(t)=0$ 时,系统的状态仅由初始状态 $X(t_0)$ 驱动,其中 $e^{A(t-t_0)}$ 是矩阵指数。对于零状态响应,当初始状态 $x(t_0)=0$ 时,系统仅由输入 $u(t)$ 驱动
X(t)=e^{A(t-t_0)}X(t_0)+\int_{t_0}^t{e^{A(t-\tau)}Bu(\tau)}d\tau另外 ...
深入理解计算机系统
快捷键窗口操作切换窗口:Alt+Tab窗口移动:Win+↑/↓/←/→
文件操作保存:Ctrl+S关闭文件:Ctrl+W撤销:Ctrl+Z恢复:Ctrl+Shift+Z复制/粘贴:Ctrl+C/V向上/向下翻页:PageUp/PageDown切换到左/右边的文件:Ctrl+PageUp/PageDown
选择操作全选:Ctrl+A选中:Shift+各种移动/跳转
光标操作上/下/左/右移动光标:↑/↓/←/→向上/下插入光标:Ctrl+Alt+↑/↓在下一个匹配项处插入光标:Ctrl+D查找/替换匹配项:Ctrl+F/H全局查找/替换匹配项:Ctrl+Shift+F/H
更改操作行删除:Shift+Delete行上/下交换:Alt+↑/↓
跳转操作跳转到上/下个光标位置:Alt+←/→跳转到词首/尾:Ctrl+←/→跳转到行首/尾:Home/End跳转到列首/尾:Ctrl+Home/End跳转到行:Ctrl+G跳转到括号:Ctrl+Shift+\跳到定义:F12查看定义:Alt+F12
VSCode 其他操作向右拆分编辑器:Ctrl+\行注释:Ctrl+/命令面板:F1 或 ctrl+ ...











