FFTを使用して加速度計のジェスチャーを解釈できますか?


10

加速度計のデータを見ているときに発生する2つの異なるジェスチャーを検出する必要があります。以下がその概要です(私ができる限り簡単に):

iPhoneが表を上にしたまま、前後に振動しているとしましょう。ユーザーは、1つの振動(前方または後方に1回、ジェスチャー1)または任意の時間の継続的な振動(ジェスチャー2)を実行できます。

現在、私のコードは、最後の50フレームからのデバイスの加速度計データ(y軸)のリストを保持しています。このデータごとにFFTアルゴリズム(これはhttp://goo.gl/yi3mn)を実行してから、指定された周波数領域を解釈しようとします。私は振動の速度と周波数空間の中低域のパワーとの間に強い関係があることに気づきました。

問題は、(動きが画面上で何かをアニメートするときにリアルタイムで)直前に完了した振動が単一のものか、それとも反対方向に別の振動が続くものかを検出する必要があることです。ここで、加速度計はプレッシャープレートで機能することを指摘しておきます。発振が停止すると、入力データは発振が実行されていたときと反対の値を示します。これにより、1回の前進運動と2回の前進運動とその後の運動運動(最初の各振動の終わり)の明らかな違いを確認することが困難になります。

上記のジェスチャーの違いを伝えるために使用できる正確な大きさの値(または何か他の便利なもの)をFFTを使用して解読する方法を誰かが提案できますか?

使用しているデータをテキストファイルに記録しました。これは、加速度計入力のy軸に沿った生データ(g力の値)です。

http://pastebin.ca/2108123は、2つの特異な振動のデータを示しています(デバイスを最初、最後、および2つの振動の間で静止させています)。

ここに画像の説明を入力してください

注:20振動の新しい生データがアップロードされていますが、まだプロットされていません。 http://pastebin.ca/2108387は、20回の連続振動のデータを示しています(デバイスを最初と最後で動かさないでください)。

ここに画像の説明を入力してください


自分でデータを見たことがないので、私の第一印象は、これはFFTに適したアプリケーションではないようだということです。生の形式またはプロットとして投稿できるキャプチャされたデータはありますか?
Jason R

こんにちは、フィードバックをありがとう。'、'区切り文字を使用して、各値を時系列で示すファイルだけでも許容されますか?1秒あたり約60個の値を取得しています。これも良いアプリケーションではないかもしれません。おそらく、いくつかのデータを使って作業することもできます。
リカルド2012年

2
生データを投稿すると、誰かがそれをプロットに変換し、それを使って投稿を編集する可能性があります。
Jason R

わかりました。まもなくアップロードされます。
リカルド2012年

それは私が予想したよりもずっと長くかかりました。Unityでプロジェクトを実行しています。Unityでは、デバイスからの入力データを60フレーム/秒でしか受信できません。つまり、サンプルレートを高くすることはできませんが、それでもなおです。これはあなたがあなたの提案で何を意味したのですか?
リカルド2012年

回答:


2

データを見ると、なぜこの目的でFFTを使用したいのかわかりません(私は間違っているかもしれません)。このデータセット(添付したもの)に基づいて単一または複数の動きを検出したいとします。

  1. 絶対値の変化率の線上の何か。一次導関数はうまく機能すると思います。
  2. 多分ウェーブレット変換?ピークの位置を知りたいかどうかがわかるまで、その有用性について詳しく説明することはできません。

検出したいのが単一の振動と複数の振動のみの場合、私の意見では、FFTは分析にはあまり適していません。


フィードバックをお寄せいただきありがとうございます!友人は、FFTを使用する方法はないかもしれないと提案しました。私が検出する必要があるのは、新しい振動が各振動の終わりに始まっているかどうかです。上記のプロットは、なぜそれが難しいのかを明らかにしているはずです。マグニチュードアルゴリズムを使用できると思いましたが、振動のパワー/速度がユーザーごとに異なるため、これはトリッキーです。
リカルド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.