5

加速度計の値をフィルター処理して重力を相殺する (ハイパス フィルター) 例をたくさん見ました。

しかし、それらのほとんどは単純であると言われている1次のものでしたが、ラグがあり、最良のものではありませんでした(フィルターやDSPについては何も知りませんが).

ここの誰かが、動きを感知するために DSP で使用されるより良いソリューションが存在すると言いました。残念ながら、私は完全に部外者なので、それがどうなるか想像もつきません。

少なくともセンサーを扱うときに使用できるフィルターの種類を誰かが教えてくれることを願っています. もちろん、特定のアルゴリズムを簡単に紹介するだけでも大歓迎です :)

前もって感謝します。

4

3 に答える 3

4

高次の FIR または IIR フィルターを試すと、周波数領域の遷移がよりシャープになります。しかし、より高度な方法は、適応カルマン フィルターを使用することです。加速度計とカルマン フィルターに関する 1 つの記事を次に示します。

于 2011-01-20T04:32:13.690 に答える
2

DSP ガイドはあなたが探しているものです。基本的な「理論」だけでなく、デジタル信号処理の背後にある数学と作品を提供します。

http://www.dspguide.com/ch14.htm これは良い出発点です

見てみな。

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

于 2011-01-20T02:44:58.583 に答える
1

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

そのソースは SVN http://code.google.com/p/the-schwartz-unsheathed/source/checkoutからチェックアウトするか、Web 上で閲覧することができます。ソースはアクティビティ ( TheSchwartz.java ) とビュー ( GraphView.java ) に分割されます。GraphView.java には、加速度計の処理が行われるSensorListener()広告クラスが含まれています。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 フォンの動きがないか、「ヒット」または「スイング」に対して評価されます。これは信号処理の意味でデータをフィルタリングするものではありませんが、センサーデータを分類する方法を示しています。それが役に立てば幸い。

于 2011-01-20T03:52:12.367 に答える