2011-01-20 4 views
5

Accelermeterの値をフィルタリングして重力を打ち消す例(ハイパスフィルタ)が多数ありました。Android Accelerometerのフィルタリングですか?

しかし、それらのほとんどは、シンプルではあるがラグジュアリーであり、最良のものではない(私はフィルタやDSPについては何も知らない)と言われている1次のものでした。

ここでは、動きを感知するためにDSPに使用されるより良い解決策が存在すると述べました。残念ながら、私はフィールドに完全に部外にいるので、それがどんなものか想像もできません。

少なくとも、センサを扱うときに使用できるフィルタの種類を教えてください。もちろん、特定のアルゴリズムについての簡単な紹介も非常に喜ばれるでしょう:)

ありがとうございます。

答えて

1

AndroidのSensorListener()クラスを利用したいと考えています。たとえば、「The Schwartz Unsheathed」は、Google Codeで公開されているオープンソースのAndroidプロジェクトです(Clark Scheffによって書かれた)。

ソースをSVN http://code.google.com/p/the-schwartz-unsheathed/source/checkoutでチェックアウトするか、ウェブ上で閲覧することができます。ソースはアクティビティ(TheSchwartz.java)とビュー(GraphView.java)に分割されています。 GraphView.javaには加速度計処理が行われるSensorListener() ad onSensorChanged()クラスが含まれています。ライン284と285:

magnitude = (float)Math.sqrt(values[0]*values[0]+values[1]*values[1]+values[2]*values[2]); 
magnitude = Math.abs(magnitude - SensorManager.GRAVITY_EARTH); 

magnitudeの値が「ヒット」またはAndroidの携帯電話の「スイング」、無運動のために評価されます。私はこれが信号処理の意味でデータをフィルタリングしないことを認識していますが、センサデータを分類する方法を示しています。それが役に立てば幸い。

2

DSPガイドはあなたが探しているものです。それは、デジタル信号処理とその仕事の背後にある基本的な「理論」と数学を提供します。良い出発点

それをチェックアウトです

http://www.dspguide.com/ch14.htm

個人的な経験から、ほとんどの簡単なアプリケーションでは1次フィルタが十分に「良い」ものになります。これは特定のアプリケーションに完全に依存しますが、

4

より高次のFIRフィルタまたはIIRフィルタを試すことができます。これにより、より鮮明な周波数ドメイン遷移が得られます。しかし、より高度な方法は、適応カルマンフィルタを使用することである。ここにはone article on accelerometers and Kalman filtersがあります。

+0

ありがとうございました!ガイドはとても役に立ちました。 –

関連する問題