如果卡尔曼滤波器无法计算出稳定的卡尔曼增益,可能的原因是啥?
Posted
技术标签:
【中文标题】如果卡尔曼滤波器无法计算出稳定的卡尔曼增益,可能的原因是啥?【英文标题】:What are the possible reasons if Kalman filter can not calculate a stabilizing Kalman gain?如果卡尔曼滤波器无法计算出稳定的卡尔曼增益,可能的原因是什么? 【发布时间】:2016-08-01 21:50:52 【问题描述】:我有一个关于卡尔曼滤波器的问题。我正在将卡尔曼滤波器用于状态空间模型,如下所示:
X(k+1) = A(k)x(k)+B(k)u(k)+w(k), w(k) ∼ N(0,Q)
Y(k) = C(K)x(k)+D(k)u(k)+v(k), v(k) ∼ N(0,R)
在每个采样时间更新状态空间矩阵(A(k),B(k),C(k),D(k))
,但 Q 和 R 矩阵被认为是恒定的。卡尔曼增益(K(k))和协方差P矩阵(P(k))的计算公式如下:
K(k) = (P(k)*C(k)' )/(R + C(k)*P(k)*C(k)');
Pxx(k) = (eye(n)-K(k)*C(k))*P(k)*(eye(n)-K(k)*C (k))'+K(k)*R*K(k)';%Joseph form
P(k) = A(k)*Pxx(k)*A(k)' + Q;
我面临的问题与(A(k)-K(k)*C(k))
的稳定性有关。在某些采样时间,计算出的卡尔曼增益不能稳定(A(k)-K(k)*C(k))
矩阵,(A(k)-K(k)*C(k))
的特征值在单位圆之外。
你能帮我找出这个问题的原因吗?我期待卡尔曼滤波器为我提供使(A(k)-K(k)*C(k))
矩阵在单位圆内的特征值稳定的增益。
【问题讨论】:
【参考方案1】:当系统不可观察时会发生这种情况。检查可观察性矩阵的等级
O = [C(k)
C(k)A(k)
C(k)A(k)^2
...
C(k)A(k)^(n-1)]
其中n
是状态空间的维度(即A(k)
是n X n
矩阵)。如果O
的行秩小于n
,那么你就有问题了。
在 matlab 中,O = obsv(A,C)
将计算可观察性矩阵,rank(O)
将给出其等级。
希望这会有所帮助。
【讨论】:
如果系统不可控也可能发生这种情况。可观测性和可控性是渐近稳定卡尔曼增益的两个标准。以上是关于如果卡尔曼滤波器无法计算出稳定的卡尔曼增益,可能的原因是啥?的主要内容,如果未能解决你的问题,请参考以下文章