如果不定期测量输出,如何定期估计 LTI 的状态?

信息处理 过滤器设计 估计 线性系统 控制系统
2022-02-21 21:57:31

如何定期估计离散线性时不变系统的状态,形式为

x˙=Ax+Bu
y=Cx+Du
如果测量其输出y不定期执行?(假设输入总是可以测量的)。


我最初的方法是使用估计设计一个Luenberger 观察器A^,B^,C^D^上面提到的矩阵,然后定期更新它Ts秒根据以下规则:

如果有测量y自上次更新以来:

x^˙=A^x^+B^u^+L(ymeasuredC^x^)
如果不:
x˙=A^x^+B^u^

(为清楚起见,我省略了上标箭头)

我相信可能有更好的方法来做到这一点,因为我正在使用过时的测量来更新观察者y(这是过时的Ts最坏情况下的秒数)。

提前致谢。

1个回答

我对此的直觉是,您实际上会在收到测量值的那一刻执行一次瞬时更新,其中此更新取决于自上次更新以来的时间。

这种直觉的原因如下:考虑对系统进行精细离散化。让我们假设矩阵A,B,C,D是已知的。事实上,让我们忽略矩阵D,因为我们可以等效地定义观察y~=Cx=yDu. 最后,让我们假设初始值的一些分布x(0). 事实上,为了它的细节,称它为高斯。这为我们提供了一个隐藏的马尔可夫模型,该模型可以通过在所得概率图模型上传递的高斯消息来解决。“解决”是指解决E[x[t]], 在哪里x[t]是原始版本的离散化版本x. 对应于 (hidden, sincex没有观察到)马尔可夫系统只是一个长链x变量和它们之间的确定性关系,每隔一段时间就会有一个观察结果。这个图中的实时推断基本上由一个卡尔曼滤波器组成,除了大部分时间只是“预测”步骤。只有在有观察的情况下,您才会有“更新”步骤。

基本上,我推测您实际上应该执行以下操作:

如果当时没有测量t, 然后简单地继续

x^˙=Ax^+Bu
但是,当收到观察时t, 更新x^作为
x^(t)=x^(t)+L(yCx(t))

在哪里t是直到收到观察之前的模拟状态。L将由您设计,并且应取决于自上次观察以来的时间。不幸的是,到目前为止,这样做的正确方法让我无法理解,但是精细离散的卡尔曼滤波器类比可能会阐明这里的合理性。

请注意,这只是考虑获得隐藏状态的估计x. 如果然后将状态估计用于控制目的,则需要注意导数中存在不连续性这一事实x^˙(t)对于每个t收到意见时。这可以通过简单地分配给那些值来缓解t的左边界或右边界x^˙在那个观察时间左右。

如果我获得更多关于这方面的信息,我会更新。