我想现在从Matlab应用程序中提取的信息,记录加速度计,陀螺仪和磁力计的输出。当我需要找到线性加速度时,我假设我可以从加速度计中考虑重力来计算它。我认为应该可以通过检查基于磁力计输出(地球磁场)的手机方位来找到。但是我无法用任何公式得到正确的结果。我说得对,有可能通过磁力计找到重力矢量吗?如果是这样,我应该如何解读传感器读数?从智能手机后处理传感器读数 - 重力从计算器计算
1
A
回答
0
不,不可能从磁力计找到重力。
你要找的是所谓传感器融合。我已经实现传感器融合,基于此稿件Shimmer platform,它基本上是一个教程:
Direction Cosine Matrix IMU: Theory
另一种资源,我强烈建议是Sensor fusion on Android devices.
但是为什么你自己做的吗? SensorManager已经提供你想要的。
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];
}
我认为你需要某种形式的校准时间。例如一段时间,电话被认为是静止的。然后你得到两个矢量,一个用于重力加速度,另一个用于磁场的磁场。 – Ifor 2013-03-18 14:06:03
但我有一个实际测量线性加速度的应用程序,它没有校准似乎是正确的。它是如何做到的? – Danio 2013-03-18 14:32:18