Робо-рука с дистанционным управлением от перчатки и Arduino

Идея этого проекта появилась и увлекла меня во время отпуска.

Мысль была примерно следующая: "Было бы классно иметь робо-руку, которая управлялась бы моей собственной!". И через некоторое время я принялся за разработку и реализацию этого проекта. Надеюсь, вам будет интересно!

Основные узлы проекта - перчатка и сама робо-рука. В качестве контроллера использовался Arduino. Движение робо-руки обеспечивается сервомоторами. На перчатке установлены датчики изгиба: переменные резисторы, которые меняют свое сопротивление пи изгибе. Они подключены к одной стороне делителя напряжения и постоянным резисторам. Arduino считывает изменение напряжения при изгибе датчиков и передает сигнал серводвигателям, которые пропорционально поворачиваются. Видео рабочего проекта приведено ниже.

Конструкция руки взята из open-source проекта InMoov. На странице проекта можно загрузить 3-D модели всех узлов и напечатать их на 3-D принтере.

Ниже приведены все шаги для реализации вашей собственной робо-руки с управлением от перчатки.

Необходимые материалы

Для проекта вам понадобятся:

  • 5 серводвигателей MG946R (или аналогичных - MG995 или MG996. При разработке руки у меня возникли некоторые проблемы с диапазоном перемещений. Так что лучше использовать сервы с большим углом поворота ). Сервы, которые использованы в этом проекте, покупались на hobbyking.com, но можно заказать на eBey или Aliexpress, подождать посылку недельки две-три и прилично сэкономить.
  • Сервы для робо-руки
  • 5 датчиков изгиба 4.5 дюймов.
  • Датчики изгиба для робо-руки
  • 1 плата Arduino Uno или ее аналог.
  • 5 резисторов на 22 кОм.
  • 1 6.0-7.2В батарейка (для серводвигателей).
  • 1 монтажная плата (breadboard).
  • 1 коннектор для батарейки.
  • Коннекторы для макетки.
  • 1 маленькая монтажная плата для распайки.
  • 1 перчатка. Максимально подходящая по размеру руки.
  • 1 длинный болт 8 мм в диаметре. Длина 55 мм.
  • 1 длинный болт 8 мм в диаметре. Длина 60 мм.
  • 1 длинный болт 8 мм в диаметре. Длина 80 мм.
  • 14 болтов 3 мм в диаметре. Длина 20 мм.
  • 20 болтов 4 мм в диаметре. Длина в диапазоне от 7 до 30 мм.
  • Около 5 метров лески или нитей или веревок (надо подобрать такую, чтобы не порвалась)
  • Супер клей
  • Наждачная бумага
  • Нитка и нить
  • Дрель
  • Паяльник
  • Доступ к 3-D принтеру

...все! Вы можете начинать ваш проект робо-руки!

Печатаем руку

Рука является частью open-source проекта под названием InMoov. Это робот, который печатается на 3-D принтере. Рука - это лишь отдельный узел общей конструкции. Скачайте с этой страницы и напечатайте следующие детали:

robpart1.stl*

robpart4V2.stl

robpart5V2.stl

Auriculaire3.stl

Index3.stl

Majeure3.stl

ringfinger3.stl

WristsmallV3.stl

thumb5.stl

Wristlarge.stl

На всякий случай прилагаю кликабельный список деталей, потому-что некоторые из них удалены со страницы основного проекта.

И с этой страницы

RobCableFrontV1.stl

RobRingV3.stl (в этой детали пришлось сделать дополнительные отверстия, чтобы подошли мои сервы)

RobCableBackV2.stl

RobServoBedV4.stl

robpart3V3.stl

robpart4V3.stl

(Это две детали "обшивки" - они не обязательны с точки зрения жесткости конструкции и ее функционирования)

Детали для робо-руки

В общей сложности понадобилось около 13-15 часов для печати. Зависит от качества печати. Я использовал MakerBot Replicator 2X. Рекомендую печатать детали пальцев на стандартном или высоком разрешении, чтобы избежать нежелательного трения в конструкции.

Auriculaire3.stl

coverfinger1.stl

Index3.stl

Majeure3.stl

ringfinger3.stl

RobCableBackV2.stl

RobCableFrontV1.stl

robpart1.stl

robpart2V2.stl

robpart3V3.stl

robpart4V3.stl

robpart5V2.stl

robpart5V2.stl

RobServoBedV4.stl

thumb5.stl

topsurface4.stl

WristlargeV3.stl

WristsmallV3.stl

Напечатанная робо-рука

Подключаем датчики изгиба к Arduino

Для подключения датчиков изгиба к Arduino нам в схему надо включить делитель напряжения. Датчики изгиба по сути являются переменным резистором. При использовании в паре с постоянным резистором, можно отслеживать разницу в напряжении двух резисторов. Отследить разницу можно с помощью аналоговых контактов Arduino. Схема подключения приведена ниже (красный коннектор - это напряжение, черный - земля, голубой - коннектор самого сигнала, который подключается к аналоговому входу Arduino).

Arduino и датчики изгиба - подсхема подключения

Резисторы на фото имеют номинал 22 кОм. Цвета проводов соответствуют цветам, приведенным на схеме подключения.

Все контакты GND от датчиков соединены в общую Землю. Земля идет к пину GND на Arduino. +5V на Arduino подключается к общему контакту питания от всех датчиков. Каждый голубой коннектор сигнала подключается к отдельному аналоговому входу на микроконтроллере.

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

Я собрал схему на небольшой монтажной плате. Размеры платы желательно выбрать поменьше, чтобы в дальнейшем закрепить на перчатку. Закрепить на перчатке нашу собранную схему можно с помощью элементарной нити и иголки. Кроме того, не поленитесь и сразу же используйте изоленту на оголенных контактах.

Распайка монтажной платы с изоляцией Распайка монтажной платы и Arduino Распайка монтажной платы вид сбоку

Устанавливаем сенсоры на перчатке

Можем приступать к установке датчиков и нашей монтажной платы на саму перчатку. Сначала просверлите небольшое отверстие в пластике датчиков. Отверстия сверлятся в местах, где чувствительный элемент закончился. ВАЖНО! Ни в коем случае не сверлите отверстие в чувствительном материале. После этого оденьте перчатку. Сделайте отметки карандашом или ручкой на вершине каждого сустава. Эти места вы будете использовать для крепежа сенсоров. Датчики изгиба крепятся обычной ниткой. Пришейте сенсоры к перчатке. Используйте отверстие, которые вы сделали на концах датчика. В местах, где отмечены суставы сенсоры "прихватываются" нитью поверх. Более детально все это показано на фото ниже. Монтажная плата пришивается к перчатке аналогично сенсорам. Учтите, что для движения пальцев надо оставить определенный запас длины проводников. Это надо учесть при установке нашей монтажной платы и выборе длины коннекторов от нее к датчикам.

Пришиваем датчик изгиба к перчатке Пришитый к 1 пальцу датчик изгиба Пришитые ко всем пальцам датчики изгиба Пришитые датчики изгиба Монтажная плата на перчатке

Собираем робо-руку

Я не буду детально останавливаться на этом шаге. Он очень подробно раскрыт на веб-сайте InMoov (в разделе "Assembly Sketches" и "Assembly Help"):

Когда соберете руку, убедитесь, что узлы установлены правильно с точки зрения ориентации в пространстве. Не забудьте рассверлить отверстия в пальцах робо-руки под крепеж 3 мм, чтобы уменьшить трение между сочленениями. С наружной стороны я залил болты клеем.

Собираем робо-руку

Не спешите устанавливать леску. Сначала проверьте работоспособность серводвигателей.

Проверка сервомоторов

На этом этапе сервы уже должны быть установлены в задней части вашей робо-руки. Для подключения серв к Arduino и источнику питания, я использовал небольшую макетную плату. Подключите каждый позитивный контакт серводвигателя (красный) к одной рельсе макетной платы, а негативный (черный или коричневый) - к другой рельсе.

ВАЖНО! Не забудьте подключить контакт Arduino к рельсе с отрицательным зарядом: помните, что все контакты Земля должны быть соединены между собой. Контакт VCC может подключаться к различным источникам питания, но GND должен быть одинаковым.

Загрузите программу на Arduino (файл с программой прилагается). Убедитесь, что подключение сенсоров, сервомоторов и т.п. Было правильным. Наденьте перчатку и включите Arduino. Серводвигатели должны вращаться в зависимости от того, каким пальцем вы будете двигать. Если сервы двигаются, значит все работает!

Проверяем сервомоторы

Если вы более искушенный пользователь Arduino и знаете как проверить текущие значения с датчиков изгиба, можете настроить диапазон в программе под ваши реалии. Предполагаю, что все сенсоры изгиба примерно одинаковые, но если это не так, калибровка датчиков вам однозначно поможет.

Если сервомоторы отрабатывают неправильно, убедитесь, что вы их правильно подключили (например, когда я работал над этим проектом, я, как обычно, забыл соединить пин GND Arduino с GND источника питания и всех серв. В этом случае работать ничего не будет). Убедитесь, что все отрабатывает перед тем, как двигаться дальше.

Добавляем леску

Добавить леску - это, наверное, самая сложная и ответсвенная часть проекта робо-руки. На сайте InMoov есть инструкция на этот счет. Концепция простая, но реализовать ее практически не так то просто. Обратите внимание, что эта часть проекта требует сосредоточения и терпения. Единственное отличие моего варианта от конструкции на InMoov - использование клея. Благодаря этому мы можем получить возможность более губкой настройки при калибровке серв. Для этого достаточно расплавить клей и подтянуть нужные нам болты. Хотя, конечно же, надежность конструкции падает. В конце-концов, после окончательной настройки и калибровки, мы в любой момент можем использовать другой вариант фиксации.

Для калибровки сервомоторов, проверните роторы так, чтобы пальцы робо-руки лежали на столе. Подключите ваш Arduino и источник питания. Выставьте качалки приводов таким образом, чтобы в полностью "лежащем" состоянии руки натяжение было максимальным.

Крепеж лески

Объяснить процесс калибровки достаточно сложно. Кроме того, инструкция с InMoov мне, например, не подошла. То есть, при крепеже вам надо проявить фантазию и подстроиться под ваши реалии - как то: тип качалок, тип лески или ниток, погрешности конструкции и сборки, расстояние установки сервомоторов относительно суставов робо-руки.

К счастью - это последний этап проекта!

Послесловие

Готовый проект

Несмотря на то, что существуют гораздо более сложные и точные (и дорогие в том числе) конструкции, приведенный проект очень интересен и имеет отличный потенциал для практического применения. Подобные конструкции не стоит использовать при непосредственном контакте с человеком, ввиду недостаточной точности самого концепта. Но промышленности, медицине и т.п. для задач без повышенных требований к точности перемещений суставов, наша робо-рука вполне подойдет. Ну а с точки зрения дальнейшего "апгрейда" руки - тут поле вообще непаханое. Начиная от беспроводного управления, заканчивая заменой приводов, габаритов, разработки дополнительных степеней свободы.

Именно за это я люблю Arduino: вы можете очень быстро и за небольшие деньги собрать макет или прототип устройства, которое не только просто программируется, но и может выполнять реальные интересные задачи.

Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!