卡尔曼滤波器和内部状态变量的质量

And*_*raz 6 java android accelerometer filter kalman-filter

我正在尝试为Android开发运动检测应用程序.应用程序应该能够跟踪手机在空间中的运动并将其映射到计算机屏幕上的运动.我正在使用3轴加速度计,因为数据非常嘈杂,我使用的是卡尔曼滤波器.

内部状态是6分量矢量[speed-x,speed-y,speed-z,accel-x,accel-y,accel-z],测量状态是3分量矢量[accel-x,accel-y,accel-z ].

滤波器在测量值上运行良好,但速度仍然非常嘈杂.

绘制的值

现在我想知道这是正常行为还是我做错了,因为我对卡尔曼滤波器的理解非常基础.我正在使用JKalman库并遵循状态转换矩阵(dt是1/15,这是近似的传感器刷新率)

double [] [] A = {{1,0,0,dt,0,0},{0,1,0,0,dt,0},{0,0,1,0,0,dt}, {0,0,0,1,0,0},{0,0,0,0,1,0},{0,0,0,0,0,1}};

我还建立了自己的协方差矩阵,其中协方差是根据测试数据计算出来的.这改善了加速度信号,但对速度没有影响.

目前我能够实现stdvar

[0,0632041857 0,0607274545 0,0886326602]用于速度[x,y,z]

[0,0041689678 0,004423822 0,0074808552]用于加速度[x,y,z].

我对加速度信号非常满意,我想我无法改善它,但我希望提高速度信号的质量.

Ali*_*Ali 3

行不通。

无论你做什么,速度都会在几秒钟内变得极其不准确。尽管上述链接的答案是关于位置的,但对于速度也是如此。至于卡尔曼滤波器也请参见此处。

您应该尝试使用 GPS 来获取速度,或者(如果适用)仅在应用程序中使用手机的方向并放弃获取速度。