FOC磁场定向控制
电机场向量调制是一种用于控制感应电机的方法。它使用三相电流控制来调制电机的转矩和转速。在FOC控制中,电机的转子位置和速度被监测和估计,以提供准确的电流控制。这使得电机能够以高效率和低噪音运行。
FOC控制是现代驱动器系统的标准,用于控制感应电机、同步电机和永磁电机。它提供了高度可预测的电机控制,并且可以在不同负载条件下实现高效率。
电机类型
步进电机
步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。您可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
永磁式 一般为2相,转矩和体积比较小,步进角为7.5或者15度
反应式 一般为3相,可实现大扭矩,步进角1.5度,噪声振动较大
混合式 结合以上两者优点,分为2相和5相,步进角为1.8度和0.72度
直流电机 通入直流旋转,反向电流就反向转
交流电机 输入或 ...
阻抗和导纳控制
机器人交互控制
直接力控 直接对完成任务所需要的力做一个设定,利用力或者转矩的传感器实时对力进行反馈,从而达到控制
存在的一些问题:使用的一些力的传感器一般会比较贵,也会出现精度和噪声的情况,其次就是不容易对力进行设定
间接力控
柔顺控制
被动柔顺 使用一些机械的设备,例如弹簧之类的设备使机器人在与外界交互中出现一些柔顺性
主动柔顺 通过软件使机器人对外界的环境做出一些柔顺性
阻抗/导纳控制 让机器人在与外界交互的过程中,包含有质量,弹簧,阻尼这样一个二阶阻抗系统的性质
关节空间
笛卡尔空间 也就是三维空间坐标系
力位混合控制
机器人在某个方向上做力的控制,在正交的方向上做位移的控制
阻抗控制
关节空间内的阻抗控制
目标:让机器人的每一个关节能体现出由弹簧-阻尼-质量组成的二阶系统的动态特性,其中 qdq_dqd 是对关节角度的设定值, qqq 是实际测量值,那么 q‾\overline{q}q 就是一个控制误差,左边就是对这个控制的动态误差的描述,M, D, K 就是三个矩阵,表示质量,阻尼和弹性系数,这个q矩阵的大小是和关节数自由度量有关的 ...
VMC虚拟模型控制
一点点小补充
M3508 转矩常数0.3,也就是每增加1A电流力矩增加0.3牛米
AK80-6 转矩常数 0.09 这个好像不用管
对于四足,电机相对,力矩Tp由TB和TF共同提供,会比以上计算更简单
五连杆正运动学解算
以杆 L5L_5L5 的中心为原点,可以得到
A=(−L52,0)B=(−L52+L1cosφ1,L1sinφ1)D=(L52+L4cosφ4,L4sinφ4)E=(L52,0)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)
A=(−2L5,0)B=(−2L5+L1cosφ1,L1sinφ1)D=(2L5+L4cosφ4,L4sinφ4)E=(2L5,0)
通过五连杆左右两部分列写 C 点坐标,可以得到下列等式
{xB+L2cosφ2=xD+L3cosφ3yB+L2si ...
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
控制器的具体形式为 ...
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 ...
非线性系统控制器设计
前言
对于一个非线性系统
x˙=f(x,u)\dot{x}=f(x,u)
x˙=f(x,u)
假设 u 是 x 的函数
u=ϕ(x)u=\phi (x)
u=ϕ(x)
反馈线性化
就是将传递函数 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˙=f(x,u)=x2−x3+u\dot{x}=f(x,u)=x^2-x^3+u
x˙=f(x,u)=x2−x3+u
...
线性状态观测器和线性控制器综合
前言
对于一个不可观测的系统的控制,就需要用到设计观测器和控制器结合
对于一个系统
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[e ...
线性控制器设计
系统控制
对于一个开环控制器来说
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˙=AXy=CX\dot{X}=AX\\y=CX
X˙=AXy=CX
可以得到系统的状态转移方程
X=eAtX(0)X=e^{At}X(0)
X=eAtX(0)
根据状态方程的解,可以知道
y=CX=CeAtX(0)y=CX=Ce^{At}X(0)
y=CX=CeAtX(0)
根据矩阵质数定义的状态转移矩阵有
eAt=I+At+12!A2t2+...e^{At}=I+At+\frac{1}{2!}A^2t^2+...
eAt=I+At+2!1A2t2+...
取前 n 项
eAt=I+At+12!A2t2+...+1(n−1)!An−1tn−1e^{At}=I+At+\frac{1}{2!}A^2t^2+...+\frac{1}{(n-1)!}A^{n-1}t^{n-1}
eAt=I+At+2!1A2t2+...+(n−1)!1An−1tn−1
带入到上面 y 的式子中
y=(CI+CAt+...+1(n−1)!CAn−1tn−1)X(0)=[It...1(n−1)!tn−1][CCA…CAn−1]X(0)y=(CI+CAt+...+\frac ...
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 结束 ...
不变性原理
前言
李雅普诺夫的不变性原理(LaSalle’s Invariance Principle,也称为李雅普诺夫-拉塞尔不变性原理)是动力系统和控制理论中用于分析系统长期行为的重要工具。它是对经典李雅普诺夫稳定性理论的扩展,尤其在处理非线性系统时非常有用。
示例
对于一个简单的倒立摆
可以求出系统状态空间方程是
Lϕ¨+gsinϕ=0L\ddot{\phi}+gsin\phi=0
Lϕ¨+gsinϕ=0
设
x=[x1x2]x1=ϕx2=ϕ˙x=\begin{bmatrix}x_1\\x_2\end{bmatrix}\\
x_1=\phi\\
x_2=\dot{\phi}
x=[x1x2]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+P\\
=\frac{1}{2}mv^2+mgh=\f ...
系统的稳定性
前言
稳定性:系统在离开平衡点之后的动态反应随时间不增加
函数的一些知识
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 ...
系统的可控性
对于一个系统状态方程
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
Hamiltonian 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
∫t0t1f(x, ...
Riccati方程
前言
群
群就是一种集合加上一种运算的代数结构,把集合记作 AAA ,运算记作 ⋅\cdot⋅ ,那么群就可以记作 G=(A,⋅)G=(A,\cdot)G=(A,⋅) ,一个群满足如下性质
封闭性: ∀a,b∈A,a⋅b∈A\forall a,b\in A,a\cdot b\in A∀a,b∈A,a⋅b∈A
结合律: ∀a,b,c∈A,(a⋅b)⋅c=a⋅(b⋅c)\forall a,b,c\in A,(a\cdot b)\cdot c=a\cdot(b\cdot c)∀a,b,c∈A,(a⋅b)⋅c=a⋅(b⋅c)
单位元 eee : ∃e∈A,∀b∈A,e⋅b=b⋅e=b\exist e\in A,\forall b\in A,e\cdot b=b\cdot e=b∃e∈A,∀b∈A,e⋅b=b⋅e=b
逆元: ∀a∈A,∃a−1∈A,a⋅a−1=a−1⋅a=e\forall a\in A,\exist a^{-1}\in A,a\cdot a^{-1}=a^{-1}\cdot a=e∀a∈A,∃a−1∈A,a⋅a−1=a−1⋅a=e
群结构保证了在群上的运算具有良好的性质
李 ...
矩阵求导和迹运算
求导
对与矩阵 XXX, AAA, UUU, VVV
dXTX=IdXXT=IdXTAX=AdAXXT=AdAXX=ATdXAX=ATdXTXX=2XdXTAXX=(A+AT)XdXTAXXXT=ddX(dXTAXdX)=AT+A∂U∂XT=(∂UT∂X)T∂UTV∂X=∂UT∂XV+∂VT∂XUT∂UVT∂X=∂U∂XVT+U∂VT∂X∂[(XU−V)T(XU−V)]∂X=2(XU−V)UT∂UTXV∂X=UVT∂UTXTXU∂X=2XUUT\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} ...