05.06.2015 21:00 Количество просмотров материала 2370 Время на чтение ~8.5 мин
Увеличить | Уменьшить Распечатать страницу

«Ручное» управление OWI-манипулятором

«Ручное» управление OWI-манипулятором


Доброго дня, мозгочины! Век технологий подарил нам много интересных приборов, которые можно и нужно дорабатывать своими руками, например как в этом мозгоруководстве о беспроводном управлении роботизированной рукой.

 

ruchnoe-upravlenie-owi-manipulyatorom23

 

https://www.youtube.com/watch?feature=player_embedded&v=7docrKlnpbA
Существует несколько вариантов управления промышленной робо-рукой, но этот мозго-мастер-класс отличается своим подходом. Суть его в том, чтобы сделать беспроводную самоделку манипулирующую робо-рукой жестами с помощью перчатки с контроллером. Звучит амбициозно и просто, а что на деле?
На деле поделка выглядит так:

• перчатка снабжена сенсорами для управления светодиодом и 5-ю моторами
• передатчик на Arduino принимает сигналы сенсоров, а затем в виде команд управления по беспроводной связи отправляет их на приемник контроллера робо-руки
• приемник контроллера на основе Arduino Uno получает команды и соответственно управляет робо-рукой

Особенности:

• поддержка все 5 степеней свободы (DOF) и подсветки
• наличие экстренной красной кнопки которая при необходимости отключает все двигатели робо-руки во избежание поломок и повреждений
• портативный модульный дизайн

 

 

Шаг 1: Компоненты

 

ruchnoe-upravlenie-owi-manipulyatorom2
Для перчатки:

• перчатка из стрейч-материала (или аналогичная)
• датчик Spectra Symboflex 5.6см
• 3-х осевой гироскоп с акселерометром
• штекерный разъем 2х5
• штекер 2х5
• ленточный кабель на 10 дорожек с шагом 0.1см
• светодиоды 5мм - зеленый и желтый
• маленькие кнопки – 2шт.
• резисторы, провода, иголка и черные нитки, клеевой пистолет, паяльник, припой и т.д.

Передаточный модуль:

• плата Arduino Compatible Nano v3.0 ATmega328P-20AU
• передатчик nRF24L01+ 2.4GHz Wireless Transceiver Arduino Compatible
• эластичный браслет
• держатель батареек на 9В с кнопкой выключения
• штекерный разъем 2х5
• 9В батарейка
• конденсатор 47микрофарад (50В)
• резисторы, провода, клеевой пистолет, паяльник, припой и т.д.

Приемник с контроллером OWI:

• плата Arduino Compatible Uno R3 Rev3 Development
• набор для Arduino Prototype Shield DIY KIT (или аналогичный)
• передатчик nRF24L01+ 2.4GHz Wireless Transceiver Arduino Compatible
• микросхема L293D 16-pin Integrated Circuit IC Motor Driver – 3шт
• микросхема SN74HC595 74HC595 8-Bit Shift Register With 3-State Output Registers DIP16
• конденсатор 47микрофарад (50В)
• корпус для Arduino
• переключатель
• 13мм-я кнопка – 2шт (одна с красным колпачком, вторая с зеленым)
• штекерный разъем 2х7 – 2шт
• ленточный кабель на 14 дорожек с шагом 0.1см
• 9В батарейка и штекер
• резисторы, провода, клеевой пистолет, паяльник, припой и т.д.

Ну и конечно - манипулятор OWI Robotic Arm Edge - Robot arm - OWI-535

 

 

Шаг 2: Предварительная сборка

 

ruchnoe-upravlenie-owi-manipulyatorom3

ruchnoe-upravlenie-owi-manipulyatorom4
Перед основной сборкой мозгоподелки я настоятельно рекомендую собрать прототип с помощью макетной платы, чтобы проверить функционирование каждого компонента самоделки.

Сам проект содержит два сложных момента: первый - это настроить два приемника-передатчика nRF24 друг на друга для слаженного взаимодействия. Получается, что ни Nano, ни Uno не обеспечивают стабильные 3.3В для четкой работы модулей. Это решается добавлением конденсаторов 47мФ на выводы питания обоих модулей nRF24. В принципе желательно перед использованием модулей nRF24 ознакомится с их функционированием в IRQ и не-IRQ режимах, да и другими нюансами. И помогут в этом следующие ресурсы. nRF24.и nRF24 lib

И второй - довольно быстро заполняются контакты Uno, но это не удивительно ведь нужно контролировать 5-ь двигателей, подсветку, две кнопки и модуль связи. Поэтому пришлось задействовать сдвиговый регистр. Основываясь на том, что модули nRF24 используют SPI интерфейс, я решил для программирования сдвигового регистра также использовать SPI вместо функции shiftout(). И на удивление набросок кода заработал с первого раза. Вы можете проверить это по назначению контактов и рисункам.

И пусть макетная плата и перемычки станут вашими мозгодрузьями :)

 

Шаг 3: Перчатки

 

ruchnoe-upravlenie-owi-manipulyatorom5

ruchnoe-upravlenie-owi-manipulyatorom6

ruchnoe-upravlenie-owi-manipulyatorom7

ruchnoe-upravlenie-owi-manipulyatorom8
OWI Робо-рука имеет 6 пунктов для управления:

screen1

• Светодиод подсветки расположенный Захвате
• Захват
• Запястье
• Локоть - это часть манипулятора соединенная с Запястьем
• Плечо – часть манипулятора, прикрепленная к Основе
• Основа

Перчатка-поделка управляет всеми этими 6-ю пунктами, то есть подсветкой и движениями манипулятора с 5 степенями свободы. Для этого на перчатке установлен сенсор, обозначенный на фото, с помощью которого и происходит управление:

• Захват контролируется кнопками на среднем пальце и мизинце, то есть при сведении вместе указательного пальца и среднего захват закрывается, а при сведении мизинца и безымянного открывается.
• Запястье управляется гибким сенсором на указательном пальце - сгибание пальца на половину заставляет запястье опускаться, а полное сгибание пальца подниматься.
• Локоть управляется акселерометром – наклон ладони вверх или вниз заставляет локоть подниматься или опускаться соответственно.
• Плечо так же контролируется акселерометром – поворот ладони вправо или влево заставляет плечо перемещаться вверх или вниз соответственно.
• Основа тоже управляется акселерометром – наклон всей ладони (лицевой стороной вверх) вправо или влево заставляет поворачиваться основу в правую или левую стороны соответственно.
• Подсветка включается/отключается одновременным нажатием обеих кнопок управляющих захватом.
При этом кнопки срабатывают при удержании в 1/4 секунды, чтобы избежать отклика при случайном касании.

Во время размещения компонентов самоделки на перчатке придется поработать ниткой с иголкой, а именно пришить 2 кнопки, гибкий резистор, модуль с гироскопом и акселерометром, ну и провода, идущие от всего перечисленного к штекерному мозгоразъему.

На плате со штекерным разъемом смонтированы два светодиода: зеленый – индикатор питания, а желтый – индикатор передачи данных на контроллер манипулятора.

 

 

Шаг 4: Блок передатчика

 

ruchnoe-upravlenie-owi-manipulyatorom9

ruchnoe-upravlenie-owi-manipulyatorom10

ruchnoe-upravlenie-owi-manipulyatorom11
Блок передатчика состоит из Arduino Nano, модуля беспроводной связи nRF24, штекерного разъема для ленточного кабеля и трех резисторов: два согласующих резистора по 10кОм для кнопок управления захватом на перчатке и делитель напряжения 20кОм для гибкого сенсора, отвечающего за управление запястьем.

Вся электронные компоненты спаяны на монтажной плате, при этом обратите внимание как модуль nRF24 "висит" над Nano. Я думал, что такое мозгоположение будет вызывать помехи, но нет, все нормально работает.

9В-я батарейка придает браслету громоздкости, но я не хотел «возиться» с литиевым аккумулятором, может быть позже.

Внимание!! Перед пайкой ознакомьтесь с распиновкой контактов!

 

 

Шаг 5: Контроллер манипулятора

 

ruchnoe-upravlenie-owi-manipulyatorom12

ruchnoe-upravlenie-owi-manipulyatorom13

ruchnoe-upravlenie-owi-manipulyatorom14

ruchnoe-upravlenie-owi-manipulyatorom15
Основа контроллера робо-руки - Arduino Uno, получающий посредством модулей беспроводной связи nRF24 сигналы от перчатки, и на их основе затем с помощью микросхем 3 L293D управляющий OWI манипулятором.

Так как почти все контакты Uno были задействованы, то мозгопровода, идущие к ним, едва умещаются в корпусе контроллера!

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

Подключение OWI

Робо-рука и контроллер соединяются ленточным кабелем с 14 дорожками, см. рисунок.

Светодиоды припаиваются к заземлению (-) и контакту а0 Arduino через резистор 220 Ом.
Все провода от двигателей подсоединяются к микросхеме L293D к выводам 3/6 или 11/14 (+/- соответственно). Каждая L293D поддерживает два двигателя, следовательно, две пары контактов.
Провода питания OWI расположены по краям 7-контактного штекера ( левая крайний +6В и правый крайний GND) на задней желтой крышке, см. фото. Эта пара подсоединена к контакту 8 (+) и контактам 4,5,12,13 (GND) на всех трех микросхемах L293D.

Внимание!! Обязательно ознакомьтесь с распиновкой контактов в следующем шаге!

 

 

Шаг 6: Назначение контактов (распиновка)

 

ruchnoe-upravlenie-owi-manipulyatorom16

ruchnoe-upravlenie-owi-manipulyatorom17

ruchnoe-upravlenie-owi-manipulyatorom18

Nano:

3,3V - 3,3В для модуля NRF24L01 (контакт 2)
5В - 5В для платы акселерометра, кнопок и гибкого сенсора
а0 – вход гибкого сенсора
а1 – желтый светодиод
а4 – SDA к акселерометру
а5 – SCL к акселерометру
d02 – прерывающий контакт модуля nRF24L01 (контакт 8)
d03 – вход кнопки открытия захвата
d04 – вход кнопки сжатия захвата
d09 - SPI CSN к модулю NRF24L01 (контакт 4)
d10 - SPI CS к модулю NRF24L01 (контакт 3)
d11 - SPI MOSI к модулю NRF24L01 (контакт 6)
d12 - SPI MISO к модулю NRF24L01 (контакт 7)
d13 - SPI SCK к модулюNRF24L01 (контакт 5)
Vin – «+9В»
GND – масса, заземление

Uno:

3,3V - 3,3В для модуля NRF24L01 (контакт 2)
5V - 5В к кнопкам
Vin – «+9В»
GND – масса, заземление
а0 – «+» светодиода на запястье
а1 - SPI SS контакт для выбора сдвига регистра – к контакту 12 на сдвиговом регистре
а2 – вход красной кнопки
а3 – вход зеленой кнопки
а4 – движение основы вправо - контакт 15 на L293D
а5 – светодиод
d02 - IRQ вход модуля nRF24L01 (контакт 8)
d03 – включение двигателя основы - контакт 1 или 9 на L293D
d04 – движение основы влево - контакт 10 на соответствующей L293D
d05 – включение двигателя плеча - контакт 1 или 9 на L293D
d06 - включение двигателя локтя - контакт 1 или 9 на L293D
D07 - SPI CSN к модулю NRF24L01 (контакт 4)
d08 - SPI CS к модулю NRF24L01 (вывод 3)
d09 – включение двигателя запястья - контакт 1 или 9 на L293D
d10 – включение двигателя захвата - контакт 1 или 9 на L293D
d11 - SPI MOSI к модулю NRF24L01 (контакт 6) и контакт 14 на сдвиговом регистре
d12 - SPI MISO к модулю NRF24L01 (контакт 7)
d13 - SPI SCK к модулю NRF24L01 (контакт 5) и контакт 11 на сдвиговом регистре

 

 

Шаг 7: Связь

 

ruchnoe-upravlenie-owi-manipulyatorom19
Перчатка самоделки посылает 2 байта данных в контроллер манипулятора 10 раз в секунду, или когда получен сигнал от одного из сенсоров. Этих 2 байтов достаточно для 6 пунктов контроля, потому что нужно всего лишь послать:

• включить/выключить подсветку (1 бит) - я на самом деле использую 2 бита совместно с двигателями, но достаточно одного.
• выключить/ вправо / влево для всех 5 двигателей – по 2 бита на каждый, то есть всего 10 бит

Получается что 11 или 12 бит достаточно.

Кодировка направлений:
Выкл: 00
Вправо: 01
Влево: 10

По битам управляющий сигнал выглядит так:

 

ruchnoe-upravlenie-owi-manipulyatorom22

Байт 1 может быть удобно направлен непосредственно в регистр сдвига, так как это контроль вправо/влево двигателей с 1 по 4.

Задержка в 2 секунды выключает связь, и тогда двигатели останавливаются как будто нажата красная кнопка.

 

 

Шаг 8: Код

 

ruchnoe-upravlenie-owi-manipulyatorom20

Код для перчаток содержит участки из следующих библиотек:

• DirectIO
• I2Cdev
• Wire
• MPU6050
• SPI
• RF24

и две библиотеки разработанные мной (доступны glove-libraries):

• DigitalFilter
• TaskScheduler

Код для перчаток Версия 1.3 доступен здесь glove-sketch
Код контроллера содержит участки из следующих библиотек:

• DirectIO
• PinChangeInt
• SPI
• RF24

и две библиотеки разработаны мной (доступны выше):

• DigitalFilter
• TaskScheduler

Код контроллера Версия 1.3 доступен здесь arm-sketch

Даташиты на компоненты:

• 74HC595 сдвиговый регистр
• Микросхема L293D motor drive
• Модуль беспроводной связи nRF24
• Модуль с гироскопом и акселерометром MPU6050

Новая версия 1.4 Кода перчаток и контроллера здесьglove-arm-sketches14

Добавлены еще два байта в структуре связи для отправки запрошенной скорости двигателей Запястья, Локтя, Плеча и Основы, которая определяется 5-битным значением (0..31) пропорционально угловому положению перчатки. Контроллер манипулятора распределяет полученное значение (0..31) на ШИМ значения соответственно для каждого мозгодвигателя. Это обеспечивает согласованное управление скорости оператора, и более точное манипулирование робо-рукой.

Новый набор жестов поделки:

  • Подсветка: Кнопка на среднем пальце – Включение, на мизинце - Выключение.
  • Гибкий сенсор управляет Захватом – полусогнутый палец – Открыть, полностью согнутый – Закрыть.
  • Запястье контролируется отклонением ладони относительно горизонтали Вверх и Вниз соответственно движению, и чем больше отклонение, тем больше скорость.
  • Локоть управляется отклонением ладони относительно горизонтали Вправо и Влево соответственно. Чем больше отклонение, тем больше скорость.
  • Плечо контролируется вращением ладони Вправо и Влево относительно вытянутой ладони лицевой стороной вверх. Вращение ладони относительно оси локтя, вызывает помахивание робо-рукой.
  • Основа контролируется также как и Плечо, но с положением ладони лицевой стороной вниз.

 

 

Шаг 9: Что же еще можно доработать?

 

ruchnoe-upravlenie-owi-manipulyatorom21

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

• Градиентное увеличение скорости: каждое движение двигателя начинается на минимальной скорости, которая затем постепенно увеличивается с каждой секундой, пока не достигнет необходимого максимума. Это позволит более точно управлять каждым двигателем, особенно двигателями Захвата и Запястья.
• Более быстрое торможение: при получении команды остановки от контроллера двигатель еще меняет свое положение в течение примерно 50мс, поэтому «ломка» движения обеспечит более четкое управление.
А что еще?

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

 

ruchnoe-upravlenie-owi-manipulyatorom1

 

Но это в будущем, а сейчас удачи в вашем творчестве и надеюсь мое мозгоруководство было вам полезно!

( Специально для МозгоЧинов #Wave-your-hand-to-control-OWI-Robotic-Arm-no-strin

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]


Вверх