2016-04-22 24 views
1

私は、障害を持つ人々がコンピュータを使用するのを助けることができるアプリケーションに取り組んでいます。アプリケーションはArduino + MPU6050(ヘッドの上に配置されています)から値を読み取り、位置に変換します。シリアルポートからの値は "x、y"のようになり、この値のスケールは-16000から+16000になります。C#Arduino headtracking MPU6050

私の計算方法でこの値を処理しています(この記事の最後に報告します)。すべて正常に動作しますが、問題があります。このソフトウェア/ハードウェアを使用する人が何らかの筋肉のスパムやチックを持っている場合、ソフトウェアはあまりにも精確であり、マウスを動かします。私はこの慢性的な動きを排除したい...私はこれをどのようにすることができますか?

これは、私はあなたがファームウェアの動きアーチファクトのデータ処理を使用しrecommmendでしょう。..

public void computePosition() 
     { 
      data = connection.readSeriaLine(); 
      words = data.Split(','); 
      yaw = words[0]; 
      pitch = words[1]; 
      Int32.TryParse(pitch, out posiY); 
      Int32.TryParse(yaw, out posiX); 
      posiX = posiX/headSensitivity; 
      posiX = posiX - globalPosiX; 
      posiY = posiY/headSensitivity; 
      posiY = posiY - globalPosiY; 
      int signX = Math.Sign(posiX); 
      int signY = Math.Sign(posiY); 
      int positionX = Cursor.Position.X; 
      int positionY = Cursor.Position.Y; 
      Cursor.Position = new Point(positionX + (signX * movementSensitivity), positionY + (signY * movementSensitivity)); 
    }  

感謝

答えて

1

computePositionのコードです。パーキンソン症候群のような病気は、1〜20Hzの周波数で振戦があります。決定された頻度に適応したプログラムフィルタを使用することができます。

加速度計とジャイロの生データの周波数使用フーリエ変換を計算します。

ので、一般的に次のことを行う必要があり:corresonding配列

  • におけるセンサの

    • ストア生データは、FFTにアレイ用
    • プロセスのフィルタリング(FFTからの支配的な周波数をカットオフ)
    • 送信を行いますデータをモーション処理してからPCに転送する

    winform appでX、Y座標を同じにすることができます。どのような方法で使用するかは、特定のケースごとにどのようなアーチファクトが発生するかによって異なります。あなたは、それぞれの患者のために、さまざまなフィルタの設定を必要とするかもしれません。

    P.S.質問に「数学」(または同様の)タグを付けると、より多くの回答を得ることができます。それはC#やArduinoフィールドには存在しないからです。


    更新。

    プログラミングを行う前に、いくつかの研究をすることをお勧めします。まず第一に、あなたは一定の目標を達成した男の身体のセンサーからデータを収集する必要があります。ダニの動きのアーチファクトを含む少なくとも30〜60秒のデータが必要です。 3列にデータを書き込む:

    時間(ミリ秒)| | yの位置

    labchart reader download pageに移動し、ダウンロードしてインストールします。データを含むファイルを開き、XとYの両方で "スペクトル"コマンド/ビューを実行します。これにより、存在する周波数(人工物と "良い"動き)についての情報が得られます。私は動きの人為的な周波数がより大きい振幅を持っていると思います。それらの頻度を覚えています

    次に、 "デジタルフィルタ" - > "帯域停止"コマンドを実行します。そして、前のステップから周波数をカットします。私は、この処理の後、あなたは人工物のない良いチャートを見ることを願っています。

    プログラミングを行うことができます。 FFTとデジタルフィルタリングを実装することは本当に難しいことではありません。FFTの場合、Aforge.Mathライブラリを使用できます。

  • +0

    あなたの返信ありがとう!私はこの分野ではあまり専門家ではありませんが、私を助けるいくつかのリンクや例がありますか?たとえば、私はこのタイプのソリューションを実装しています:https://www.youtube.com/watch?v=sQC73LKnJckしかし、私は「小さな」動きをフィルタリングする方法がわからないので、私にとっては役に立ちません。 。 –

    +0

    ウラジミール、あなたは素晴らしいです!私は明日試してみる....あなたはこのビデオの結果が良いと思いますか?右側の図は、ジャイロ/アキュムレータとカルマンフィルタの組み合わせです。https://www.youtube.com/watch?v=qmd6CVrlHOM –