私は、障害を持つ人々がコンピュータを使用するのを助けることができるアプリケーションに取り組んでいます。アプリケーションは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));
}
感謝
あなたの返信ありがとう!私はこの分野ではあまり専門家ではありませんが、私を助けるいくつかのリンクや例がありますか?たとえば、私はこのタイプのソリューションを実装しています:https://www.youtube.com/watch?v=sQC73LKnJckしかし、私は「小さな」動きをフィルタリングする方法がわからないので、私にとっては役に立ちません。 。 –
ウラジミール、あなたは素晴らしいです!私は明日試してみる....あなたはこのビデオの結果が良いと思いますか?右側の図は、ジャイロ/アキュムレータとカルマンフィルタの組み合わせです。https://www.youtube.com/watch?v=qmd6CVrlHOM –