电赛培训-23-07-19

pid控制系统

公式

$$ u(t)=K_p e(t)+K_i \int_0^t e(\tau) d\tau + K_d \frac{de(t)}{dt} $$

作用

  • 比例项:减小误差
  • 积分项:消除稳态误差
  • 微分项:减小超调量

超调量

$$ \xi = \frac{e^{-\frac{\pi \zeta}{\sqrt{1-\zeta^2}}}}{\sqrt{1-\zeta^2}} $$
超调量的意义在于:在没有积分项的情况下,超调量越大,系统的响应越快,但是超调量越大,系统的稳定性越差
其中 $\zeta$ 是阻尼系数,$\zeta$ 越大,超调量越小,系统越稳定

误差

低频抖动:积分项过大
高频抖动:微分项过大

例子

状态量:超声波,速度,MPU6050姿态,

卡尔曼滤波

作用

利用间接测量值,计算最优估算,组合各种可能受到噪音影响的数据源。

原理

状态观察

状态观察是指,通过测量值,计算出状态量的过程,
状态观测器得到的估计状态表示为$ \hat{x} $

状态预测

根据数学模型,从已有的状态量,通过计算得到了一个估计量$ \hat{x} $
然而,数学模型的预测有其局限性,初值条件不同所以不能得到相同的结果。
所以需要状态估算器

状态估算

需要估算值收敛到实际值,所以需要反馈,反馈误差为e
$$ e = x - \hat{x} $$假设一个微分方程:
$$ \dot{x} = Ax + Bu $$$$ y = Cx $$以上是一个真实系统
$$ \dot{\hat{x}} = A\hat{x} + Bu + Ke$$$$ \hat{y} = C\hat{x} $$这是系统估算模型

两方程分别相减得到:
$$ \dot{e} =(A- KC)·e$$$$ y-\hat{y} = C·e$$
解得:
$$e(t) = e^{A-KC} ·e(0)$$
若A-KC的值小于0,那么e(t)会收敛到0,即估算值收敛到实际值,实际上,k可以加速收敛过程。

例子

$$ \dot{x} = Ax + Bu + w$$$$ y = Cx + v$$
w是过程噪声,v是测量噪声,他们都服从高斯分布,且互相独立。
在初始条件下,状态估算器估计了$\hat{x}$,真实值在这个中心的正态分布周围
在多轮预测后,估计值的分布会比初始条件下的估计分布更大,同时,还有一个测量方程得到的均值与方差都不同的分布,这两个分布的相乘就得到优化估计。
事实上,卡尔曼滤波器方程是一个随机系统的状态观测器
公式如下:
$$ \hat{x}k=A·\hat{x}{k-1} +B·u_k +K_k(y_k - C(A·\hat{x}+B·u_k)) $$
其中$\hat{x_k^-}$是前项估测,代表前两项的和,所以公式写为:
$$ \hat{x}_k^ = A·\hat{x_k^-} ++K_k(y_k - C\hat{x_k^-}) $$

所以结果成为后验估值。

误差协方差矩阵P
$$ P_k^- = AP_{k-1}A^T +Q$$
这个就是对矩阵P的估值

第二步,更新状态
$$ K_k = \frac{P_k^-C^T}{(CP_k^-C^T+R)} $$
这个是卡尔曼增益,使得更新K后误差协方差最小
$$ P_k = (I-K_kC)P_k^- $$


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!