Регистрация движений рук и отправка их на Arduino

Я хочу управлять серводвигателем, подключенным к Arduino, с помощью движений рук. Я только начинаю проект, и моя идея состоит в том, чтобы прикрепить пару акселорометров к каждому пальцу, а затем отправить эти данные на Arduino через Xbee. Во-первых, это правильный подход к этому, или есть готовые датчики, которые я могу обернуть вокруг руки и отправить данные в Arduino. Во-вторых, я не понимаю, как прикрепить отправитель Xbee к каждому акселерометру на моей руке. Это так вообще делается? Kinect даже использует акселерометры. Или это какой-то другой датчик. Каков был бы правильный подход к этому проекту?

Нам нужно больше узнать об этом жесте. Не могли бы вы быть достаточно конкретными, потому что это, как ни странно, окажет большое влияние на различные реализации. Например, вам нужно знать координату X руки пользователя, или вам просто нужно знать, находится ли рука примерно влево или примерно вправо, или вам нужно знать, что пользователь внезапно переместил свою руку влево или вправо , или что-то другое?
Мне просто нужно знать, если пользователь вдруг переместил руку влево или вправо, вверх или вниз
В этом случае вы можете привязать акселерометр к руке пользователя и просто посмотреть на амплитуду ускорения. Если оно высокое, то пользователь совершает резкое движение. Знак чтения говорит вам, если движение влево или вправо.
ага. Это похоже на то, что я хочу

Ответы (1)

Там заложено очень много вопросов! Попробуем распаковать их:

  1. Kinect на самом деле не имеет ничего , связанного с пользователем. Он работает, отправляя сетку инфракрасных точек и измеряя, насколько искривлена ​​сетка, с помощью камеры с ИК-фильтром. У него большое разрешение для определенных приложений, но он не работает, когда объекты находятся очень близко к Kinect, и он также не может измерить что-либо, что закрыто (например, если что-то мешает, вы не можете сказать, что происходит за ним).
  2. Получить положение пальцев и рук очень сложно. Вы можете надеть акселерометр на каждый палец и положить один на ладонь, но интерпретировать, что означают эти положения акселерометра, будет сложно в режиме реального времени. К тому же это будет очень дорого! Вы можете увидеть некоторые предыдущие идеи по отслеживанию рук с помощью суперкрасочной перчатки MIT , здесь кто-то использует kinect , а здесь отслеживание пальцев с помощью wiimote . Теперь обратите внимание, что все они используют компьютер для передачи информации от датчика в положения рук, и вам, вероятно, придется сделать что-то подобное, если только у вас нет более скромных требований к отслеживанию рук.
  3. Не пытайтесь проектировать беспроводной компонент, пока у вас не будет хорошего метода определения положения рук. Многие требования к отслеживанию рук изменят требования к беспроводной сети: как часто вы хотите знать положение рук? Сколько деталей вам нужно о положении руки? Как только вы это узнаете, вы сможете посмотреть, какие беспроводные решения существуют, и что-то внедрить. Например: если вы использовали 3-осевые акселерометры (не говорю, что это хорошая идея, но если вы это сделали), по одному на палец, с 10-битным АЦП, считывающим результат с каждого пальца: это дает 3 оси * 5 пальцев. * 10 бит = 150 бит на обновление. Это означает, что если вы использовали только один zigbee, работающий со скоростью 115200 бит в секунду, вы можете иметь 768 обновлений в секунду (при условии отсутствия накладных расходов, что нереально). Но дело в том, что установка 5 зигби была бы полным излишеством! Просто вставьте одно радио. Точно так же любое решение, которое вы выберете, должно быть разработано после того, как вы узнаете, что ему нужно.

Надеюсь, это поможет!

Сейчас мне нужно только почувствовать движение оси X. Я думал об использовании датчиков Flex вместо акселерометров, поскольку цель состоит в том, чтобы показать, что я могу управлять сервоприводом рукой, а интерпретировать данные намного проще. Только с акселерометром по оси X, как вы думаете, будет ли легко определить, двигаю ли я рукой вправо или влево?
Вправо или влево относительно чего? Почему бы просто не поставить рычаг на свое устройство? Вам нужно, чтобы это было бесконтактным по какой-то причине? Если вы это сделаете, вам, вероятно, лучше всего сделать что-то вроде ссылки wiimote, которую я дал вам, и просто попросить пользователя держать инфракрасный светодиод. Это даст вам координаты x и y руки (или чего-либо, что держит ИК-маяк). В качестве альтернативы просто используйте wiimote, и в вашем проекте будет набор равномерно расположенных ИК-светодиодов. Существует множество библиотек для получения данных с wiimote, они дешевые и дадут вам полную позиционную информацию (x, y, z и ориентацию).
Жест вправо потребует вращения сервопривода вправо, а жест влево заставит его вращаться влево. Я хочу, чтобы он был бесконтактным, так как я экспериментирую с беспроводной связью, используя getsures. Мне не нужны координаты x и y. Только если пользователь внезапно переместил руку вправо или влево