我正在开发一个Android应用程序,我需要从加速度计读数中删除重力.我已经阅读了关于这个问题的多个讨论,我也在这里找到了一个算法,但我并没有真正理解它.
我想从每个轴过滤重力,而不是从总加速度过滤.
你能帮帮我吗?我的代码应该是这样的:
public void onSensorChanged(SensorEvent sensorEvent) {
float vals[] = sensorEvent.values;
float accelerationX = filterGravity(vals[0]);
float accelerationY = filterGravity(vals[1]);
float accelerationZ = filterGravity(vals[2]);
}
Run Code Online (Sandbox Code Playgroud)
我应该在filterGravity()方法中放置什么代码?
我看到很多关于过滤Accelermeter值的例子,以消除重力(高通滤波器).
但是大多数都是一阶的,据说很简单,但是迟到而不是最好的(尽管我对滤波器或DSP一无所知).
这里有人说DSP中存在用于感知运动的更好的解决方案.遗憾的是,我甚至无法想象会是什么,因为我完全不喜欢这个领域.
我希望有人能够分辨出处理传感器时可以使用的滤波器类型.当然,即使对具体算法进行简要介绍也会非常高兴:)
提前致谢.