如何定义卡尔曼滤波器的状态转移矩阵?

问题描述 投票:0回答:2

我想了解Kalman Filter并且有一些我无法理解的术语。

我正在阅读有关动力学模型转换矩阵(4x4)的内容。它表示该矩阵将下面的等式映射到状态分量。方程是简单的物理方程:

xt = x(t-1) + vx(dt)
yt = y(t-1) + vy(dt)
dt = 1

代表它的代码如下:

dt = 0.1
DT = np.matrix([[1.,0.,dt,0],[0.,1.,0.,dt],[0.,0.,1.,0.],[0.,0.,0.,1.]])

有人能帮助我理解这个吗?究竟是什么代表?

python opencv image-processing computer-vision kalman-filter
2个回答
1
投票

因此,转移矩阵描述了从一个时间点i到下一个i + 1的自发转变。说,你有一个小机器人开车穿过你的房子。然后有时它会在地板上滑动一点,因为它不会总是有良好的牵引力。转换矩阵试图对其进行建模。

然后在卡尔曼滤波器中的几个部分中使用转换模型。首先,描述机器人在时间点i的方差和位置。它是制定传感器模型的预测误差(卡尔曼增益)的一部分,以最小化下一个测量的方差。

基本上,它是卡尔曼滤波器的重要组成部分,但也是一个微不足道的滤波器。它只是试图模拟随时间的自发过渡(a.k.a滑动,滑动,被风推动......)

如果这没有帮助,请询问更多。


0
投票

状态转换矩阵描述了状态在初始状态下如何随时间传播。对于线性时不变(LTI)系统,这是一个常数矩阵。

例如,假设我有一个下面给出的二维离散时间LTI模型:

x(k + 1)= x(k)----(1)

y(k + 1)= y(k)+ 2x(k)-----(2)

这可以通过查看每个等式中的状态系数以矩阵形式写入,如下所示:

[x(k + 1),y(k + 1)] = [[1.0,0.0],[2.0,1.0]] * [x(k),y(k)]

矩阵[[1.0,0.0],[2.0,1.0]]被称为状态转移矩阵。请注意,这类似于使用Cramer规则或矩阵求逆同时以矩阵形式编写线性方程组来同时求解它们的方法。

如您所见,只有x(k)出现在(1)中,系数为1,因此转移矩阵的第一行为[1.0,0.0]。同样,第二行是[2.0,1.0]。

看一下矩阵的结构

DT = np.matrix([[1.,0.,dt,0],[0,1。,0.,dt],[0,0.1,1。],[0, 0.,0.,1。]]))

我可以告诉你有4个变量[x(t-1),y(t-1),vx,vy]。您只显示了两个状态方程(x(t)和y(t)),并且矩阵的前两行与方程中变量的系数很好地对应。

从你的矩阵,我可以推断最后两个方程是

vx(t)= vx(t-1)和vy(t)= vy(t-1)。

我建议你阅读更多有关状态空间模型的信息(LTI应该足够了)。 https://en.wikipedia.org/wiki/State-space_representation

注意:对于连续时间模型,获取状态转移矩阵将需要找到矩阵指数。

© www.soinside.com 2019 - 2024. All rights reserved.