Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

DIY манипулятор, управляемый жестами руки: пошаговая сборка на Arduino

Компоненты и материалы

Arduino UNO 1 шт.
JLCPCB Customized PCB 1 шт.
Сервопривод MG996R 6 шт.
Батарейный отсек 5V 1 шт.
PCA9685 8-канальный драйвер серв (I2C) 1 шт.
Bluetooth модуль HC-05 2 шт.
Драйвер шагового двигателя A4988 (SparkFun) 1 шт.
NEMA-17 шаговый двигатель 1 шт.
Макетная плата 1 шт.
IMU (6 степеней свободы) 1 шт.
Arduino Nano R3 1 шт.
Флекс-сенсор 1 шт.

Необходимые инструменты

О проекте

DIY манипулятор, управляемый жестами человека.

Фильмы вроде «Тихоокеанский рубеж», «Аватар» намекали на синергию с роботами — ваши движения усиливаются роботизированной помощью. А что, если построить тот же промышленный робот, но в меньшем масштабе?

Этот проект — попытка достичь этого.

Arduino-манепулятор, который можно запрограммировать или управлять жестами руки.

DIY манипулятор, управляемый жестами руки: пошаговая сборка на Arduino

По традиции Iron Man, каждая итерация — Mark. Этот прототип — MARK 1. Ожидаются улучшения.

DIY манипулятор, управляемый жестами руки: пошаговая сборка на Arduino

Полный туториал: DIY Robot Arm (controlled by Hand Gestures)

Обзор

Соберём 6-осевого робота, управляемого жестами руки через роботизированную перчатку. Подражая естественным жестам (щипок, поворот запястья), вы сможете открывать/закрывать захват или поворачивать руку влево/вправо. Фактически — ручное управление роботорукой.

DIY манипулятор, управляемый жестами руки: пошаговая сборка на Arduino

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

Список деталей

DIY манипулятор, управляемый жестами руки: пошаговая сборка на Arduino

Роборука полностью настраиваема. Можно купить или напечатать на 3D-принтере. Если печатаете — есть список роботов на сервоприводах, теория та же.

Для MARK 1 выбрана 3D-печать — больше места для кастомных деталей.

Роборука: Thingiverse 3D Printed Robotic Arm (автор: Wonder Tiger):

Подробности, типы винтов — в исходнике. Печать до 40 часов, но дешевле покупки.

Робоперчатка: STL файлы (автор: Roman 13)

DIY манипулятор, управляемый жестами руки: пошаговая сборка на Arduino

Перчатка — эстетичное дополнение, можно использовать строительную перчатку.

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

Как это работает

DIY манипулятор, управляемый жестами руки: пошаговая сборка на Arduino

Отправляем сигнал (по Bluetooth) от перчатки к сервоприводу. При получении значения драйвер серв посылает сигнал конкретному сервоприводу, двигая манипулятор.

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

DIY манипулятор, управляемый жестами руки: пошаговая сборка на Arduino

Роборука — серия сервоприводов, координирующих друг друга. Можно создать руку, управляемую перчаткой.

Arduino перчатки использует сенсоры для связи с Arduino руки и отправки данных для поворота сервы к нужному углу.

Какие сенсоры в перчатке?

Для MARK 1: флекс-сенсоры и акселерометр (MPU6050).

Сенсоры детектируют изменение жеста, отправляют специфическое значение (маппинг жеста) на манипулятор для управления сервоприводом через Bluetooth. С достаточным числом жестов рука оживает!

DIY манипулятор, управляемый жестами руки: пошаговая сборка на Arduino

Маппинг манипулятора

Таблица соответствия значений, отправляемых перчаткой манипулятору. Капитальная «F» (finger) — противоположное направление вращения сервы.

Сборка деталей

DIY манипулятор, управляемый жестами руки: пошаговая сборка на Arduino

Сборка манипулятора

Покупка готовой руки дорогая. 3D-печать — бюджетный вариант. В долгосрочной перспективе легко кастомизировать: добавить LED, камеру, зажим.

Модель основана на Thingiverse (Wonder Tiger) — отличный дизайн: 6 осей, хорошо документирован, прочный. Доступ к файлам через список деталей.

Также есть мои ремиксы для камерной стойки. Детали печатаются ~40 часов.

Сервопривод и драйвер

DIY манипулятор, управляемый жестами руки: пошаговая сборка на Arduino

Роборука — координированные моторы. Используем драйвер PCA9685 для питания MG996R серв.

Важно: Используйте внешнее питание для моторов. Arduino не тянет все. Здесь — 5V 2200 mAh RC батарея.

Схема подключения Arduino:

DIY манипулятор, управляемый жестами руки: пошаговая сборка на Arduino

NEMA-17 для поворота основания

Роборука стала тяжелее, MG996R не крутит основание. Нужен более мощный мотор — шаговый NEMA-17 за счёт точности и высокого крутящего момента.

DIY манипулятор, управляемый жестами руки: пошаговая сборка на Arduino

NEMA-17 и драйвер A4988 управляют направлением. Схема ниже:

DIY манипулятор, управляемый жестами руки: пошаговая сборка на Arduino

Финальная схема сборки всей электроники манипулятора.

Сборка электроники

Ниже схема окончательной сборки всех электронных частей, включая Bluetooth модуль. Парный процесс описан ниже.

DIY манипулятор, управляемый жестами руки: пошаговая сборка на Arduino

Человеческий флекс-сенсор

DIY манипулятор, управляемый жестами руки: пошаговая сборка на Arduino

Для эстетики можно напечатать 3D-экзоскелет перчатки. Для прототипа подойдёт строительная перчатка.

Компоненты робоперчатки:

Схема для тестирования флекс-сенсора и акселерометра:

DIY манипулятор, управляемый жестами руки: пошаговая сборка на Arduino

Важно: Точность руки зависит от точности перчатки. Стоит потратить время на калибровку.

Настройка Bluetooth (Master и Slave)

Arduino руки общается по Bluetooth через HC-05. Критические параметры:

Модуль Конфигурация
Робоперчатка HC-05 Master
Роборука HC-05 Slave

Baud Rate: 4800

Программирование Arduino

Код можно скачать ниже. Все тестовые скетчи и последняя версия в GitHub репозитории.

Программирование манипулятора

DIY манипулятор, управляемый жестами руки: пошаговая сборка на Arduino

Используется библиотека HCPCA9685 (для драйвера серв). Подключаем библиотеку, объявляем переменные серв.

/* Include the HCPCA9685 library */
#include "HCPCA9685.h"
/* I2C slave address for the device/module. For the HCMODU0097 the default I2C address is 0x40 */
#define I2CAdd 0x40
/* Create an instance of the library */
HCPCA9685 HCPCA9685(I2CAdd);
//initial parking position of the motor
const int servo_joint_L_parking_pos = 60;
//Degree of robot servo sensitivity - Intervals
int servo_joint_L_pos_increment = 20;
//Keep track of the current value of the motor positions
int servo_joint_L_parking_pos_i = servo_joint_L_parking_pos;
//Minimum and maximum angle of servo motor
int servo_joint_L_min_pos = 10;
int servo_joint_L_max_pos = 180;

Инициализация Serial на 4800 бод для Bluetooth:

Serial.begin(4800); // Initialise default communication rate of the Bluetooth module

В loop() постоянно проверяем поступление данных от перчатки. Если есть — сохраняем в переменную state и двигаем моторы.

//Defining the servo driver. 0x40 Address is the default I2C Address.
#define I2CAdd 0x40
int response_time = 5; //Receiving values from the Robotic Glove interval

if (Serial.available() > 0) {
  state = Serial.read();
  Serial.print(state);
  //Motor functionality code block
}

Пример: если согнули пальцы, перчатка шлёт 'f', рука читает и вызывает функцию поворота сервы. Процесс повторяется бесконечно.

if (Serial.available() > 0) {
  state = Serial.read();
  Serial.print(state);
  //For the naming of the motors, refer to the article / tutorial
  //Move (Base Rotation) Stepper Motor Left
  if (state == 'S') {
    baseRotateLeft();
    delay(response_time);
  }
}

Реализован hard stop, чтобы не превысить макс. угол (180°) и не стереть шестерёнки.

HCPCA9685.Servo(0, servo_joint_L_parking_pos_i);
//Move Claw Motor Downwards
if (state == 'f') {
  if (servo_joint_3_parking_pos_i < servo_joint_3_max_pos) {
    HCPCA9685.Servo(4, servo_joint_3_parking_pos_i);
    delay(response_time);
    Serial.println(servo_joint_3_parking_pos_i);
    servo_joint_3_parking_pos_i = servo_joint_3_parking_pos_i + servo_joint_3_pos_increment;
  }
}
void baseRotateLeft() {
  digitalWrite(stepPin, LOW);
  delayMicroseconds(stepDelay);
}

Программирование флекс-сенсора

Код на GitHub. Если работаете над проектом — контрибьютьте в репозиторий.

Ключевые моменты:

Определение пяти сенсоров:

//LED ON PIN 3
int pinkie_Data = A1;
int finger_Data = A2;
int thumb_Data = A3;
//const int MPU_addr = 0x68;
const int MPU2 = 0x69, MPU1 = 0x68;

Примечание: 0x68 и 0x69 — I2C адреса двух MPU6050.

//How often to send values to the Robotic Arm
int response_time = 1000;

Чтение значений сенсоров:

pinkie = analogRead(pinkie_Data);
finger = analogRead(finger_Data);
thumb = analogRead(thumb_Data);

Чтение акселерометров:

GetMpuValue1(MPU1);
GetMpuValue2(MPU2);

Калибровка: При включении (или нажатии Reset) определяются верхние/нижние пределы флекс-сенсоров.

if (bool_caliberate == false ) {
  delay(1000);
  thumb_high = (thumb * 1.15);
  thumb_low = (thumb * 0.9);
  finger_high = (finger * 1.03);
  finger_low = (finger * 0.8);
  pinkie_high = (pinkie * 1.06);
  pinkie_low = (pinkie * 0.8);
  bool_caliberate = true;
}

Постоянно проверяем, превысил ли текущий значение порог. Если да — шлём команду манипулятору.

// finger 1 - Claw Bend/Open
if (finger >= finger_high) {
  Serial.print("F");
  delay(response_time);
}
if (finger <= finger_low) {
  Serial.print("f");
  delay(response_time);
}

Программирование роборуки

Результаты

DIY манипулятор, управляемый жестами руки: пошаговая сборка на Arduino

Манипулятор достаточно точен для перемещения объектов. Для сложных задач нужна доработка кода. Работает как задумано для MARK 1. Можно улучшить значительно.

Хотите улучшить код? Контрибьютьте в Arduino Robot Arm Git Repo и делайте открытым для других!

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

Дальнейшие шаги

Всё для MARK 1! Если проект понравился, поддержите мой Patreon.

Код

Фрагменты кода (см. выше) и полные скетчи на GitHub:

CAD модели

Схемы

Robot Arm Git Repo

Производственный процесс

  1. Создание Bluetooth-робота на Raspberry Pi с аудио-обратной связью
  2. Сборка домашней машины для написания домашних заданий (плоттер-писатель)
  3. Android-управляемая робот-платформа на Raspberry Pi и Motor Shield
  4. Робот-ускользатор на сервоприводе: сборка на Arduino и HC-SR04
  5. Автономный линий-следующий робот на Arduino UNO
  6. Роботизированная рука 6 степеней свободы на Arduino Mega с управлением через Nunchuk
  7. Голосовой робот на Arduino Nano: Управление речью через Bluetooth
  8. Управление манипулятором по Ethernet: Arduino 101 + WIZ750SR + Android-приложение
  9. MobBob: Самостоятельная сборка Arduino-робота под управлением Android-смартфона
  10. Набор для создания робота с умной внутренней навигацией на базе Arduino