2011-12-13 266 views
3

我正在做一個Opengl應用程序,其中我必須旋轉相機,如果Android設備沿着Z軸旋轉/傾斜。我試過SensorManager.getOrientation(R, orientVals);使用磁性和加速度傳感器。但價值非常波動。 陀螺儀也可用於我的設備。如何使用Android傳感器計算旋轉角度?

因爲我動畫(旋轉)相機,我需要一個平穩的旋轉值

請指引我在這方面。

+2

當你有陀螺儀時,使用它。磁性/加速度傳感器會產生很多噪音(您可以補償,但陀螺儀的負載會更好)。 下面是一個視頻,更多地解釋:http://www.youtube.com/watch?v=s19W-MG-whE – Jave

+0

陀螺儀產生優秀,可靠的價值,但不是非常無處不在。如果你想讓你的應用在很多設備上運行,你就需要堅持現在的方式。我發現簡單的移動平均線是修正價值的最佳方式。它稍微拖延了一段時間,但更加平穩。 – Jonba

回答

0

請參閱How do you calculate the rate of rotation using the accelerometer values in Android for a particular axis瞭解如何讀取Android的軟件衍生傳感器,這些傳感器結合加速度計,磁力計和(如果可用)陀螺儀的數據。

要使數值平滑,請使用低通濾波器或(更好但更復雜的)a Kalman filter。我懷疑Android的軟件派生的傳感器如「旋轉傳感器」已經使用卡爾曼濾波器來組合來自不同傳感器的數據。 (可以搜索源代碼...)