Управление роботом с Wii Remote

wii remote
Авторы : Delphi and lord.tiran
Wii Remote - стильный и удобный игровой контроллер от Nintendo. Если вашим устройством требуется управлять на расстоянии, то возможно Wii Remote как раз то что вам нужно.

Что может этот контроллер:

  • Подключение к компьютеру по bluetooth
  • Много кнопок: "A", "B", "home", "-", "+", "1", "2", "Up", "Down", "Left", "Right"
  • Акселерометр
  • Четыре светодиода
  • Встроенный контроллер заряда батареи
  • Микрофон

Питается маленькое чудо от двух пальчиковых батареек или аккумуляторов. С устройством поставляется хороший прорезиненный чехол.

Подключение к компьютеру. Легко осуществить через графические средства: bluetooth manager -> add device -> add without code.
Устройство хорошо подхватывается в разных ОС: Windows, Linux, Mac OS X.
При этом следует помнить одну особенность. Для того чтобы подключить устройство один раз следует зажать и держать клавиши "1" и "2" до появления в менеджере. Если вы хотите чтобы ваше устройство появлялось в системе после загрузки следует открыть заднюю крышку и нажать красную кнопку, и только после этого подключать устройство.

Длительное нажатие кнопок один и два вводит устройство в режим поиска. Хотя при подключении к Linux с использовании xwiimote, о которой будет сказано далее, такой эффект не наблюдался. Нажатие этой комбинации и нажатие кнопки под крышкой вводит устройство в режим поиска, но в случае нажатия кнопки под крышкой при первом созданном соединении устройство перейдет в режим работы, тогда как в случае нажатия комбинации 1+2 устройство может после создания подключения перейти вновь в режим поиска. Однако под разными ОС поведение отличается и вообще является загадкой его верная логика. Так в Windows 8 рекомендуем подключать Wii нажатием 1+2, это предотвратит пропадание устройства после нескольких перезагрузок. Это поведение зависит от версии bluetooth модуля. В случае проблем под ОС Windows рекомендуется использовать программу Blue Soleil.

Дальность работы поражает воображение, ее хватает чтобы управлять устройством через длинный коридор 20-30 метров.

Способы использования Wii Remote с вашим приложением:

  • Использование библиотеки доступа к устройству
  • Внешняя программа эмулятор клавиатуры или мыши

Рассмотрим оба этих способа детально:

1) Библиотека доступа к устройству.

Плюсы:
Полный доступ к возможностям устройства. Включая акселерометр и вибрацию.

Минусы:
Лишние зависимости и код в проекте.
Много лишнего кода для кроссплатформенного решения.

Наиболее известные библиотеки:

http://abstrakraft.org/cwiid - Linux/C открытая GPL библиотека и набор средств на базе нее включая тестовый GUI.
http://github.com/dvdhrm/xwiimote - Linux/C открытая Public Domain библиотека для новый версий Linux (ядро 3.1 и выше). Добавляет Wii как полноценное устройство в Linux (Система видит сколько осталась заряда в устройстве и др.). Мне понравилась.

http://wiimotelib.codeplex.com - Windows/.Net - открытая, хорошо документирована.
http://wiiyourself.gl.tter.org - Windows/C++ - бесплатная библиотека с широкими возможностями. Разработана на базе wiimotelib. С лицензией не ограничивающей коммерческое использование. (Включая поддержку нескольких Wii и экспериментальную поддержку микрофона). Мне понравилась.
http://www.btframework.com - Windows/C++, .Net, VCL - проприетарная библиотека. Позиционируется как лучшее средство разработки под Windows. Содержит много всего.

https://code.google.com/p/wjoy - Mac OS X/Objective-C - библиотека и набор средств.

http://sourceforge.net/projects/wiiuse - Linux, Windows / C - открытая GPL библиотека. Официальный сайт http://wiiuse.net - недоступен. По отзывам в интернете плохо работает с несколькими устройствами.

Все рассмотренные библиотеки содержат примеры и их использование не вызовет у вас сложностей.

2) Внешняя программа эмулятор

Плюсы:
Минимум кода в вашей программе. Если вы уже делали управление с клавиатуры, то вы максимум измените кнопки.
Кроссплатформенное решение.

Минусы:
Нет всех возможностей устройства.

Примеры программ:

Для Linux:

http://abstrakraft.org/cwiid/wiki/wminput - вариант средства ввода на базе cwiid.
http://github.com/dvdhrm/xf86-input-xwiimote - как назвал ее автор "X.Org Wii Remote Input Driver". Базируется на xwiimote. Разработана тем же человеком. Я решил использовать именно ее.

Для Windows:

Мы решили выбрать эмуляцию стандартных устройств ввода с помощью Wii. Идеальным решением под Windows является программа glovePie. Это очень сильная программа в плане поддержки устройство. Позволяет условно говоря привести одно устройство ввода к другому при помощи скрипта-соответствия. Пример такого скрипта, который превращает Wii в клавиатуру:

ESC=Wiimote.Home
SPACE = Wiimote.B
CTRL = Wiimote.One
Shift = Wiimote.Two
Keyboard.ArrowKeys = Wiimote.Dpad
Wiimote.Led1 = true

Такой  скрипт позволяет управлять роботом с помощью стандартных стрелочек вашей псевдоклавиатуры. При этом Wii можно превратить в композитное устройство =мышь+клавиатура и даже джойстик.

GlovePie позволяет эмулировать даже такие оригинальные устройства как emotiv - устройство распознавания электроэнцефалограммы головного мозга.

Для Mac OS X:

https://code.google.com/p/wjoy

Список полезных ссылок:
Хорошая Wiki по устройству на английском

Leave a Reply

You must be logged in to post a comment.