假设我有一个机器人,该机器人具有两个基于不同物理原理的3D位置传感器,并且希望通过卡尔曼滤波器运行它们。我通过垂直连接两个恒等矩阵,构造了一个观察矩阵,两个代表我的两个传感器。 end {bmatrix} $ $ \ hspace {20pt} $
$ \ overrightarrow x = \ begin {bmatrix} x \\ y \\ z \ end {bmatrix} $

这样

$ H \ overrightarrow x = \ begin {bmatrix} x \\ y \\ z \\ x \\ y \\ z \ end {bmatrix} $

两个传感器都读取机器人的精确位置。到目前为止是有意义的。问题是当我计算创新协方差时出现的

$ S_k = R + HP_ {k | k-1} H ^ T $

由于

$ HH ^ T = \ begin {bmatrix}
1&0&0&0&0&1 \\
0&1&0&1&0&0 \\
0 &0&1&0&1&0 \\
0&1&0&1&0&0 \\
0&0&1&0&1&0 \\
1&0&0&0&0&1 \\
\ end {bmatrix} $

然后,无论$ P $是什么,我都要结束$第一个传感器的x $创新与第二个传感器的$ z $创新相关,如果我解释的是这种直觉,这似乎是错误的。

从这里开始,我的增益矩阵($ K = P_ {k | k-1} H ^ T S_k ^ {-1} $)会做一些非常奇怪的事情(交换行和这样,当更新具有恒定测量值$ \ overrightarrow z = [1,0,0] $的静态系统($ A = I_3,B = [0] $)时,我最终得到的是预测状态$ \ hat x = [0,0,1] $。 />
我认为我对其中一个或多个步骤中的一些技术要点感到困惑。我要去哪里错了?

我想我可以将$ S_k $的非对角3x3块设置为0,因为我知道传感器是独立的,但是理论中是否有任何建议或包含此步骤的内容?

评论

好问题。我从未见过像您那样重复执行状态变量的实现。而是,在将数据输入到EKF之前,许多文献将传感器融合逻辑细分为一个过程。 1982年,NASA使用这种方法进行传感器容错决策:ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19820017360.pdf

这不是归结为两个测量值的加权平均值,而权重是协方差的倒数吗? (如此处所述)

是的,没有;如果用身份代替大多数变量,而忽略了预测协方差,那么卡尔曼滤波器的确可以归结为协方差加权平均值。但这实际上是这种想法的概括,它将观测协方差与当前估计协方差混合到一个称为“创新”的值中,以便与更新的状态估计协方差一起计算最佳测量加权平均值(即状态估计) 。在这种情况下,我使用一个人为设计的示例来建立解释此创新矩阵的直觉。

#1 楼

您确定$ HH ^ T $的表达式吗?

我得到了

$$
1&0&0&1&0&0 \\
0&1&0&0&1&0 \\
0&0&1&0&0&1 \\
1&0&0&1&0&0 \\
0&1&0&0&1&0 \\
0&0&1&0&0&1
\ end {bmatrix}
$$
,这符合您的直觉。

评论


$ \ begingroup $
嗯...是的,你是对的。必须输入错误的表达式。显然是多次。下次我看到这种奇怪的东西时,我会手工解决。
$ \ endgroup $
–evenex_code
16年5月31日在15:26