我现在正在尝试从记录加速度计、陀螺仪和磁力计输出的 Android 应用程序中提取 Matlab 信息。由于我需要找到线性加速度,我假设我可以从加速度计计算它,并考虑重力。我认为应该可以通过基于磁力计输出(地球磁场)检查手机方向来找到。但我无法用任何公式得到正确的结果。借助磁力计可以找到重力矢量,我说得对吗?如果是这样,我应该如何解释传感器读数?
问问题
1084 次
2 回答
1
不,不可能从磁力计中找到重力。
您正在寻找的是所谓的传感器融合。我已经根据这篇手稿为Shimmer 平台实现了传感器融合,它基本上是一个教程:
我强烈推荐的另一个资源是Android 设备上的传感器融合。
但是你为什么要自己做呢?SensorManager已经提供了您想要的。
于 2013-03-18T15:15:40.967 回答
0
您可以通过对加速度计值进行低通滤波器以获得重力,然后从重力中减去加速度计值来获得线性加速度。下面的代码来自 http://developer.android.com/reference/android/hardware/SensorEvent.html
public void onSensorChanged(SensorEvent event)
{
// alpha is calculated as t / (t + dT)
// with t, the low-pass filter's time-constant
// and dT, the event delivery rate
final float alpha = 0.8;
gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0];
gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1];
gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2];
linear_acceleration[0] = event.values[0] - gravity[0];
linear_acceleration[1] = event.values[1] - gravity[1];
linear_acceleration[2] = event.values[2] - gravity[2];
}
于 2013-03-18T17:26:36.210 回答