VMC虚拟模型控制
一点点小补充
M3508 转矩常数0.3,也就是每增加1A电流力矩增加0.3牛米
AK80-6 转矩常数 0.09 这个好像不用管
对于四足,电机相对,力矩Tp由TB和TF共同提供,会比以上计算更简单
五连杆正运动学解算
以杆 $L_5$ 的中心为原点,可以得到
A=(-\frac{L_5}{2}, 0)\\B=(-\frac{L_5}{2}+L_1\cos\varphi_1,L_1\sin\varphi_1)\\D=(\frac{L_5}{2}+L_4\cos\varphi_4,L_4\sin\varphi_4)\\E=(\frac{L_5}{2},0)通过五连杆左右两部分列写 C 点坐标,可以得到下列等式
\left\{\begin{aligned}&x_B+L_2\cos\varphi_2=x_D+L_3\cos\varphi_3\\&y_B+L_2\sin\varphi_2=y_D+L_3\sin\varphi_3\end{aligned}\right.求解得到
\varphi_2=2\arctan(\frac{B+\sqrt{A^2+B^2-C^2}}{A+C})\ ...
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{V}=e\dot{e}=e(\dot{x}_d-f(x)-ke-\dot{x}_d-\frac{1}{\varepsilon}\rho^2e)=-ef(x)-ke^2-\frac{1}{\varepsilon}\rho^2e^2\\\\
\Downar ...
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{e ...
非线性系统控制器设计
对于一个非线性系统
\dot{x}=f(x,u)假设 u 是 x 的函数
u=\phi (x)所以得到系统状态图
123graph LRA((u))-->B[f]-->C((x))C-->D[Φ]-->A
反馈线性化就是将传递函数 $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:非负定\\\\
...
线性状态观测器和线性控制器综合
对于一个不可观测的系统的控制,就需要用到设计观测器和控制器结合
对于一个系统
\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 ,实际上该矩阵的特征值就是 $A-L ...
线性控制器设计
系统控制对于一个开环控制器来说
\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+Bu\\y=CX+Du设定 $\hat{X}$ 为系统状态的估计值, $\hat{y}$ 为输出的估计值
\dot{\hat{X}}=A\hat{X}+Bu+L(y-\hat{y})\\\hat{y}=C\hat{X}+Du两式合并得
\dot{\hat{X}}=(A-LC)\hat{X}+(B-LD)u+Ly这就是观测器形式
可以得到
\dot{X}-\dot{\hat{X}}=AX+Bu-((A-LC)\hat{X}+(B-LD)u+Ly)\\\Downarrow\\\dot{X}-\dot{\hat{X}}=(A-LC)X-(A-LC)\hat{X}=(A-LC)(X-\hat{X})此时,令
e_x={X}-{\hat{X}}是估计值与实际值之间的误差
由于我们的目标肯定是使得实际值与估计值是一致的,所以误差值的期望是变小的,也就是 $e_x→0$
所以根据上式可以得到一个这样的式子
\dot{e_x}=(A ...
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 ...