gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:01:39 26 4
gpt4 key购买 nike

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

内部状态是 6 分量 vector [speed-x, speed-y, speed-z, accel-x, accel-y, accel-z] 测量状态是 3 分量 vector [accel-x, accel-y,加速-z]。

过滤器在测量值上工作得很好,但速度仍然很嘈杂。

Plotted values

现在我想知道这是正常行为还是我做错了什么,因为我对卡尔曼滤波器的理解非常基础。我正在使用 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] for speed [x, y, z]

[0,0041689678 0,004423822 0,0074808552] for acceleration [x, y, z].

我对加速度信号非常满意,我想我不能再改进它了,但我很想提高速度信号的质量。

最佳答案

Won't work.

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

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

关于java - 卡尔曼滤波器和内部状态变量的质量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9229878/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com