背景

有些状态量并不能由传感器直接观测出来,那么可以通过控制量和输出量把状态量观测出来。

全状态观测器

对于一个系统 :
状态观测 运动控制 python 状态观测器公式_状态观测 运动控制 python
如果已知A、b、c(也就是已知模型),那么可以观测出估计状态量状态观测 运动控制 python 状态观测器公式_状态观测 运动控制 python_02
状态观测 运动控制 python 状态观测器公式_状态观测 运动控制 python_03
只要能获取原系统的初始状态,那么是可以得到状态观测 运动控制 python 状态观测器公式_状态方程_04的。

这就是开环状态观测器

状态观测 运动控制 python 状态观测器公式_状态方程_05


开环观测器有个很大的问题是,如果A的特征值在右半平面,一旦某一个时刻的状态观测不准确,那么估计状态和实际状态之间的误差会越变越大,最终状态的估计完全失真。

这里留一个思考题,为什么说A的特征值在右半平面,系统会不稳定呢?(我们通常把这个当作一个结论) 答案我放在这篇博客里了【控制理论】【数学基础】为什么说对于dX=AX系统,A的特征值在右半平面系统不稳定。

既然开环观测器不稳定,那么引入一个修正项状态观测 运动控制 python 状态观测器公式_特征值_06,新的观测状态方程写作:

状态观测 运动控制 python 状态观测器公式_状态方程_07

L是需要设计的矩阵,相比于开环状态器,这个观测器形成了闭环。

状态观测 运动控制 python 状态观测器公式_频域_08


闭环状态观测器的稳定要好很多,一起来分析一下,定义误差状态观测 运动控制 python 状态观测器公式_频域_09

则:状态观测 运动控制 python 状态观测器公式_特征值_10,把两个状态方程带入进去,有:

状态观测 运动控制 python 状态观测器公式_状态观测 运动控制 python_11,

那么只要状态观测 运动控制 python 状态观测器公式_状态观测 运动控制 python_12的特征值全部在频域负半平面,那么误差最终肯定会收敛到零,而不论初始的误差有多大。

怎样可以让状态观测 运动控制 python 状态观测器公式_状态方程_13的特征值全部在频域负半平面呢,要满足系统(A,c)能观测。

全状态观测器的设计方法

1、根据期望的极点设计
状态观测 运动控制 python 状态观测器公式_状态观测 运动控制 python_14,期望的极点等于状态观测 运动控制 python 状态观测器公式_状态方程_13的特征值。
2、实际中系统的状态方程肯定是有误差的,A这个状态矩阵没法得到,那么怎么解决?
step1、设计和A同维的矩阵F
step2、设计矫正矩阵L,使得系统(F,L)可观测
step3、计算矩阵T,状态观测 运动控制 python 状态观测器公式_特征值_16
step4、新的状态矩阵
状态观测 运动控制 python 状态观测器公式_特征值_17
只要F矩阵稳定,那么误差最终会减小到零。证明过程比较简单,就不放了。