Перчатка-джойстик
Пролог
Это будет история моего проекта, который я развивал, будучи студентом.
Здесь я не хочу углубляться в рассуждения о том насколько данный проект актуален и насколько вообще удобны такого типа контроллеры. Я хочу уделить внимание инженерным и дизайнерским решениям, которые использовались при его создании.
Поместить свои мысли на страницу хабра меня заставило следующее.
Во-первых, хочу обобщить весь опыт разработки и решения по эргономике, в частности, которые я смог сформулировать благодаря обширной базе фидбека пользователей.
Во-вторых, технические решения, которые я буду описывать могут помочь тем, кто (то есть, возможно, мне в ближайшем будущем) задумывается над реализацией чего-то похожего.
Предисловие
За время работы над проектом я насмотрелся на всевозможные варианты контроллеров — перчаток различной степени готовности и качества. Штук пять перчаток, не считая своей, я видел в живую и мог испытать. Несмотря на это, я уверен, что в комментариях мне смогут показать несколько моделей, которые появились за то время, что я «выпал из темы»…
Возможно, некоторые наблюдения и выводы, которые будут здесь описаны, могут показаться очевидны. Но, в своё время, они мне такими не казались.
Точно не помню как это случилось, но идея управлять каким-либо устройством при помощи жестов поселилась в моей голове ещё во время учёбы в школе. Не исключено, что это было влиянием какого-либо произведения поп-культуры, но какого именно уже не упомнить… Тогда, благодаря увлечению электроникой и программированием, я смог начать воплощать эту задумку в жизнь. Самым очевидным решением мне показалось использовать перчатку, которая бы определяла положение пальцев, анализировала их и отправляла команды управления на исполнительное устройство. Так появился проект «перчатка-джойстик», который я продолжил развивать в течение 4-х лет во время обучения в университете.
Изначально не было цели создавать продукт. Мне просто хотелось воплотить свою задумку в жизнь. В ходе развития проекта, он неизбежно (что мне кажется логичным и правильным) начал приобретать очертания коммерческого продукта. Но стать таковым так и не смог.
Перчатка-джойстик Мк1
Первая перчатка была собрана из утеплителя для канализационной трубы, конструктора LEGO, скрепленных горячим клеем, а электроника размещалась на двух макетных платах. Питалась она от 4-х пальчиковых батареек, вследствие чего имела значительный вес.
На обоих макетных платах расположены микроконтроллеры ATmega8, тактируемые от кварцевого резонатора на 8МГц. Контроллер на запястье отвечает за обработку движения пальцев, он является ведомым. Контроллер на предплечье определяет смещение кисти относительно предплечья, он является ведущим. Связь между контроллерами осуществляется через SPI. Ведущий контроллер работает с матричной клавиатурой и знакосинтезирующим дисплеем WH1602B фирмы Winstar. Для связи с объектом управления используемся радиопровод. Точной модели не помню, но несущая там 433МГц. В него напрямую заводится TX от UART ведущего контроллера, а RX…, а нету, связь через модуль только односторонняя.
Поскольку первичной задачей было играть в компьютер, то необходимо было реализовать нажатие определённых клавиш на клавиатуре. На приёмной стороне радиопровода располагалось устройство, которое подключается к компьютеру через USB и имитирует клавиатуру. Сделано одно было также на базе ATmega8 и платы USB клавиатуры… Я нащупал какие контакты отвечают за какие кнопки и просто коммутировал их при помощи транзисторов. Аж вспомнить страшно! А что делать, время такое было Первые тесты — просто восторг! Оно работает, да ещё и вполне неплохо.
Можно было управлять виртуальным танком, да и после тренировок начало получаться не хуже, чем с обычной клавиатуры.
Перчатка-джойстик Мк2
Вторая версия появилась через год. Новая перчатка стала гораздо эргономичнее. За основу была взята тканевая перчатка для фитнеса. Для размещения электронного блока на предплечье был использован бандаж для фиксации растяжений.
Электронный блок управления состоял из тех же элементов: два микроконтроллера, радиопровод, подстроечные резисторы. Для определения положения пальцев были сконструированы нове рычаги, выполненные из фольгированного стеклотекстолита. Рычаги были бережно выпилены вручную. В те времена я ещё не имел доступа к технологиям 3D печати, так что очень много было сделано напильником и ручным гравером.
Элемент питания был заменён на литиевый аккумулятор. Макетные платы с электроникой пришивались к тканевой основе.
На каждом пальце располагался вибромотор. С их помощью была реализована обратная связь. Перчатка могла реагировать на изменение положения пальцев. В новой прошивке реализована функция калибровки положения пальцев. Теперь перед стартом пользователю надлежало несколько раз сжать руку в кулак и покрутить кистью, чтобы микроконтроллеры запомнили крайние положения переменных резисторов. Впоследствии алгоритмы калибровки совершенствовались.
Проект развивался в годы моего студенчества, буквально с первого курса бакалавриата до самого выпуска. И в этом время мне довелось посетить множество форумов и выставок, где я мог представить свою разработку на большую и маленькую аудиторию. Главное — я мог получить обратную связь от пользователей. Этот опыт был невероятно полезен для определения курса разработки, решения по дизайну принимались после анализа фидбэка.
Эта модификация очень быстро получила дальнейшее развитие. Стало очевидно, что использовать рычаги для определения положения кисти относительно предплечья — крайне неудобное решение и лучше использовать инерциальные датчики для определения ориентации руки в пространстве.
В это же время у меня появился первый 3D принтер, и я смог реализовать некоторые инженерные идеи при помощи него. Электронный блок на запястье был помещён в пластиковый корпус из ABS пластика. Для крепления на запястье использовалась эластичная тканевая лента.
Блок ведущего контроллера был переработан. Установлен модуль акселерометра — гироскопа MPU6050. А для связи с объектом управления теперь использовался Bluetooth модуль HC-05. На тот момент, по моим меркам, это была передавая разработка. Управлять теперь можно было радиоуправляемой машинкой!
Примечательно что я не использовал прямое подключение машинки к перчатке по Bluetooth. Перчатка связывалась с блоком ретранслятора, а он, в свою очередь, уже связывался с машинкой по стандартному радиоканалу для моделей. Блок ретранслятора имел переключатель для принудительного разрыва связи перчатки с объектом управления. Это на случай, если что-то пойдёт не так. Данное решение сослужило хорошую службу во многих ситуациях, когда я отдавал перчатку на тест-драйв не самым аккуратным пользователям…
Дальше я искал различные объекты управления перчаткой: радиоуправляемая машинка, лодка, настольный манипулятор, летательные аппараты. Для последнего пункта была разработана следующая версия перчатки.
На тот момент я считал, что моя перчатка — нечто уникальное. Пока на одном из форумов я не встретил похожую разработку от ребят из другого университета. Тогда я решил посмотреть, что там твориться в мире носимых контроллеров.
Если обобщить мои изыскания, то можно сделать выводы о следующих тенденциях. Думаю, что спустя пару лет они не сильно изменились.
Существует 5 основных подходов к построению таких перчаток. Речь идёт, в первую очередь, о принципах считывания положения пальцев, который определяет общие концепции в дизайне перчатки.
1. Инерциальные датчики ориентации на каждом пальце и запястье. Яркий представитель — проект Gest. Здесь в каждом колечке расположен акселерометр, гироскоп и магнетометр. Колечки подключаются к основному электронному блоку через гибкие провода. Примечательно, что колечки размещаются на средних фалангах пальцев, что позволяет сохранить работоспособность руки для «обычных» операций. Создатели проекта этого не заявляли, но мне кажется, что в перспективе в каждом колечке можно разместить вибромотор для тактильной обратной связи.
2. Концепция, которую выбрал я для своих перчаток — «рычажный считыватель». Движения пальцев передаются на датчик угла поворота через систему рычагов. Наиболее интересный представитель — перчатки Dexmo. Выглядит просто огромной! По заверениям разработчиков вес изделия 300 грамм. Рычаги крепятся к ногтевым фалангам пальцев из-за чего длина рычагов вынужденно сделана большой. Главная особенность — система тактильной обратной связи. Маленький мотор-редуктор на каждом пальце, который создаёт усилие, не позволяющее сжать кулак, если виртуальный палец натыкается на препятствие. Эта модель адаптирована для использования совместно с технологиями AR/VR. Хотя на старте разработчики также говорили о перчатке, как об универсальном контроллере для взаимодействия с электронными устройствами.
3. Тряпичная перчатка c гибкими датчиками. Студенческих проектов с такой конфигурацией очень много. Потому что это просто и быстро. Как правило, используются резисторы изгиба. Есть и самодельные оптические датчики. А также экзотические датчики BendLabs на не совсем понятных принципах. Как мне кажется, концепция, где используются тканевые основы не самая удачная, чуть позже объясню почему.
4. Контроллеры, которые считывают мышечную активность неинвазивным методом. Это не совсем перчатки, а скорее браслеты, которые крепятся на предплечье (ведь именно там расположены группы мышц, управляющие работой кисти и пальцев). Яркий представитель — браслет MYO компании Thalmic Labs. Здесь конечно много вопросов с расшифровкой сигналов, которые считываются миографом. Дело не простое. Распознавание жестов — да. Точное определение положения пальцев — крайне сомнительно. А что с обратной связью?
5. Положение пальцев можно считывать и при помощи компьютерного зрения. Этот вариант избавляет от всех проблем, связанных с размещением чего-либо на руре. Главный недостаток — камера должна смотреть на руку под определённым углом, значит рука должна находится в определённой позиции перед камерой. А вопросов с тактильной обратной связью ещё больше.
Вопрос тактильной обратной связи мне кажется очень важным, особенно если речь идёт о применении для приложений AR/VR. Мы, в конце концов, привыкли нажимать на кнопки, переключать тумблеры, даже сенсорный смартфон вибрирует при наборе текста. И в этом смысле, устройства, непосредственно расположенные на пальцах предоставляют больше простора для инженерной мысли.
Перчатка-джойстик Мк3
Эта модель специально разработана для управления летательными аппаратами.
В качестве основы снова использовалась тканевая перчатка для фитнеса. Механические элементы теперь были напечатаны на 3D принтере из ABS пластика и тщательно обработаны шкуркой и ацетоном. Пластиковые детали также прикреплялись к перчатке путём пришивания. Главное новшество — отсутствие модуля на предплечье. Аккумулятор, радиомодуль и акселерометр размещались непосредственно на перчатке.
В связи с этим электронный блок претерпел ряд изменений. Для микроконтроллера и драйверов вибромоторов была изготовлена печатная плата. Новый микроконтроллер ATmega32 с тактовой частотой 20МГц. Вот это мощь! Думал я тогда… Для обработки показаний акселерометра и гироскопа был использован комплементарный фильтр. Частота опроса датчиков составляла целых 200Гц.
В то время я увлёкся идеей сенсорного замещения. Поэтому количество вибромоторов для обратной связи было увеличено до 8 штук. Пять крепилось на каждом пальце и ещё три в разных местах перчатки. Идея была в том, чтобы передавать телеметрию от квадрокоптера на перчатку. Микроконтроллер изменял скорость вращения вибромоторов (амплитуду и частоту вибрации) в зависимости от углов наклона аппарата по различным осям. Сделано это для того чтобы можно было «почувствовать» в каком положении сейчас находится объект управления.
Наклоны руки управляли креном и тангажом, большой палец отвечал за акселератор, а указательный палец и мизинец регулировали ось рысканья. Незатейливая схема управления работала отлично!
Следующая перчатка избавилась от тряпичной основы. Это отличное решение для эргономики устройства. И вот почему. Элементы для считывания движения пальцев (рычаги с переменными резисторами или акселерометры) должны быть надёжно размещены на самих пальцах и тыльной стороне ладони. Иначе не удастся добиться повторяемости показаний датчиков при движении руки и всю калибровку можно выбрасывать… Если вы используете тканевую основу, это означает, что ваш материал должен плотно прилегать к коже. Это возможно только если он хорошо тянется. Хорошо тянуться в основном синтетические материалы. И здесь возникает сразу ряд проблем.
Во-первых, какой бы ни был тонкий материал, под синтетикой кожа всегда потеет. Это не приятно. И уже после нескольких сеансов работы с изделием её захочется постирать. Можете сколько угодно рассказывать про свои классные велосипедные перчатки, которые настолько тонкие, что ткань просвечивает как стекло и рука в ней не потеет, или про перчатки для фитнеса, изготовленные из натуральных материалов. Я вам не поверю!
Во-вторых, любая ткань изнашивается. И чем чаще вы будете запихивать свою руку в перчатку, растягивая её в разных местах в процессе запихивания, тем быстрее ваша тканевая основа придёт в негодность.
В-третьих, вы сделали перчатку, идеально сидящую на вашей руке, и захотели её продать. Но на другого человека она просто не налезает, а с хрупкой руки девушки спадает сама по себе. И что теперь? Выпускать целую линейку с разными размерами? Привет кроссовкам с автоматической шнуровкой!
Решение у этой проблемы одно — долой тканевую основу!
Перчатка-джойстик Мк4
Новая перчатка была полностью напечатана на 3D принтере из ABS пластика. А крепление рычагов к пальцам производилось при помощи эргономичных колечек с фиксацией на магнитиках. Таким образом, колечки можно легко менять, чтобы перчатка удобно сидела на руке любого размера.
Модуль для считывания положения большого пальца крепился на разъёме типа IDC10. Этот же разъём использовался для программирования перчатки. Но главное — он был размещён с левой и правой стороны, таким образом, перчатку можно было надевать на левую или правую руку! При этом, устройство могло само определить с какой стороны подключен разъём и соответственно понять на какой руке находится.
В этой модели решено было отказаться от вибромоторов обратной связи в пользу общей эргономики устройства. В следующей версии я планировал вернуть их на свои места… Микроконтроллер ATmega328P, модуль Bluetooth HC-05 и модуль акселерометра MPU6050 также были размещён на печатной плате, изготовленной по технологии ЛУТ. Эта модель обзавелась первым полноценным корпусом и уже стала похожа на какой-никакой продукт, который можно упаковать и попробовать продать.
Перчатка-джойстик Мк4+
В следующей версии был переработан дизайн изделия, а также обновлено программное обеспечение перчатки. Новый корпус из ABS пластика с прозрачной крышкой и подсветкой из голубых светодиодов… это показалось мне интересным решением!
Электронный блок не изменил состав: ATmega328, MPU6050, HC-05, печатная плата изготовленная лазерным утюгом и маленький литиевый аккумулятор. Аккумулятор, к слову, обеспечивал автономность 1,5–2 часа, а если выключить подсветку, то время удваивалось. Большой переработке подверглось программное обеспечение перчатки. Всё было переписано практически заново. Для ПК была написана утилита, которая позволяет использовать перчатку как в качестве мыши или джойстика в видеоиграх.
Заключение
История проекта заканчивается также неожиданно, как и начинается. Видимо появилось много важных и неотложных дел, энтузиазм во мне угас, и перчатка осталась пылиться на полке…
Сейчас, я могу сказать что недостаточное внимание уделял программному обеспечению. В то время я так и не смог (скорее даже не пытался) создать утилиту, которая бы обеспечивала стабильное, понятное и настраиваемое пользователем подключение перчатки к пк. А управлять машинкой или квадрокоптером — развлечение явно не для всех… Сейчас я бы сделал что-то вроде приложения для работы с графическими планшетами.
С уверенностью говорю, что опыт этой разработки был для меня крайне полезен!
Эпилог
Дождь. Вечер. Копаюсь в архивах со старыми проектами. Натыкаюсь на исходники программного обеспечения перчаток. Перчатка Мк4… Тогда всё было написано в WinAVR, шилось через AVRDUDE при помощи самодельного программатора… на новом компьютере уже не установлены эти программы… да, было время… Решил открыть проект в AVR Studio… то есть, он уже много лет Microchip Studio… Как эта прошивка вообще могла работать? Пробую переписать всё на новый лад, оптимизировать, где можно. Зачем? Наверно просто ностальгия… Заливаю в перчатку. Работает! Удивительно? Работает лучше чем прежде… Теперь-то я уж обойдусь без всяких железных костылей для подключения к ПК. Открываю Visual Studio. Консольное приложение на плюсах собранное из разных проектов. Обновлённая «перчатка — Bluetooth мышь»! Снова можно поиграть в игрушки… Сколько лет прошло? Надо бы записать всё, пока не забыл.