Я работаю над приложением, которое может помочь людям с ограниченными физическими возможностями использовать компьютер. Приложение считывает значения от Arduino + MPU6050 (который позиционируется над головой) и преобразует его в нужное положение. Значения от последовательных портов соответствуют «x, y», а масштаб этих значений - от -16000 до +16000.C# Arduino headtracking MPU6050
Я обрабатываю эти значения в своем вычислительном методе (я сообщаю об этом в нижней части этого сообщения). Все работает нормально, но у меня проблема. Если у человека, использующего это программное обеспечение/аппаратное обеспечение, есть некоторые типы мышечных спама или тиков, программное обеспечение слишком точное и перемещает мышь. Я хочу устранить это хроническое движение ... как я могу это сделать?
Это код computePosition ..
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, но мне это не полезно, потому что я не знаю, как фильтровать «небольшое» движение. –
Владимир, ты потрясающий! Я постараюсь завтра ... как вы думаете, результат в этом видео хорош? Рисунок справа представляет собой комбинацию гироскопа/акта с фильтром kalmann https://www.youtube.com/watch?v=qmd6CVrlHOM –