2016-04-22 3 views
1

Я работаю над приложением, которое может помочь людям с ограниченными физическими возможностями использовать компьютер. Приложение считывает значения от 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)); 
    }  

Большое спасибо

ответ

1

Я бы recommmend использовать обработку данных артефактов движения в прошивке. Болезни, такие как болезнь Паркинсона, имеют тремор на частотах 1-20 Гц. Вы можете использовать программные фильтры с адаптацией к определенной частоте.

Рассчитать частотное использование преобразования Фурье для данных акселерометра и гироскопа.

Таким образом, в общем, вы должны:

  • магазин необработанных данных датчиков в corresonding массивов
  • сделать FFT
  • фильтрации процесса для массивов (отсечь доминантные частоты от FFT)
  • посыла данные для обработки движения, а затем на ПК

Вы можете попробовать сделать то же самое по координатам X, Y в приложении winform. Какой способ вы будете использовать, зависит от того, какие артефакты вы встретите в каждом конкретном случае. Возможно, вам даже понадобятся разные настройки фильтров для принятия удачных задач или алгоритмов самообучения для каждого пациента.

P.S. Вы можете получить больше ответов, если отметьте вопрос тегом «math» (или аналогичным). Потому что он лежит не в поле C# или Arduino.


Обновление.

Прежде чем делать программирование, я бы порекомендовал вам провести некоторую исследовательскую работу. Прежде всего, вам нужно собрать данные с датчиков, которые были бы уложены на человека с определенной болезнью. Вам нужно как минимум 30-60 секунд данных, содержащих артефакты движения тиков. Запись данных в 3 столбца:

время в мс | x позиция | y позиция

Затем перейдите к labchart reader download page, скачайте и установите его. Откройте файл с данными и сделайте команду/представление «спектра» как на X, так и на Y. Это даст вам информацию о частотах, которые присутствуют (как артефакты, так и «хорошие» движения). Я полагаю, что частоты артефактов движения имеют большую амплитуду. Помните эти частоты.

Затем выполните «цифровой фильтр» -> команда «band stop». И отрезали частоты от предыдущего шага. Я надеюсь, что после этой обработки вы увидите хорошие диаграммы без артефактов.

Тогда вы можете делать программирование. Реализация FFT и цифровая фильтрация не очень сложны.Для FFT вы можете использовать библиотеку Aforge.Math.

+0

Владимир, спасибо за ваш ответ! Я не очень эксперт в этой области, у вас есть ссылка или пример, чтобы помочь мне? например, я реализую этот тип решения: https://www.youtube.com/watch?v=sQC73LKnJck, но мне это не полезно, потому что я не знаю, как фильтровать «небольшое» движение. –

+0

Владимир, ты потрясающий! Я постараюсь завтра ... как вы думаете, результат в этом видео хорош? Рисунок справа представляет собой комбинацию гироскопа/акта с фильтром kalmann https://www.youtube.com/watch?v=qmd6CVrlHOM –

Смежные вопросы