2013-03-18 57 views
1

我想現在從Matlab應用程序中提取的信息,記錄加速度計,陀螺儀和磁力計的輸出。當我需要找到線性加速度時,我假設我可以從加速度計中考慮重力來計算它。我認爲應該可以通過檢查基於磁力計輸出(地球磁場)的手機方位來找到。但是我無法用任何公式得到正確的結果。我說得對,有可能通過磁力計找到重力矢量嗎?如果是這樣,我應該如何解讀傳感器讀數?從智能手機後處理傳感器讀數 - 重力從計算器計算

+0

我認爲你需要某種形式的校準時間。例如一段時間,電話被認爲是靜止的。然後你得到兩個矢量,一個用於重力加速度,另一個用於磁場的磁場。 – Ifor 2013-03-18 14:06:03

+0

但我有一個實際測量線性加速度的應用程序,它沒有校準似乎是正確的。它是如何做到的? – Danio 2013-03-18 14:32:18

回答

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]; 
}