Роботизированная рука манипулятор. Недорогая роборука, программируемая на Ардуино: роботизированный манипулятор своими руками Плавное движение самодельной руки манипулятора

Подписаться
Вступай в сообщество «page-electric.ru»!
ВКонтакте:

Муниципальное бюджетное учреждение

дополнительного образования «Станция юных техников»

города Каменск Шахтинский

Муниципальный этап областного слета-конкурса

«Юные конструкторы Дона – третьему тысячелетию»

Раздел «Робототехника»

« Рука-манипулятор на Arduino»

педагог дополнительного образования

МБУ ДО «СЮТ»

    Введение 3

    Исследование и анализ 4

    Этапы изготовления узлов и сборка манипулятора 6

    1. Материалы и инструменты 6

      Механическая начинка манипулятора 7

      Электронная начинка манипулятора 9

    Заключение 11

    Источники информации 12

    Приложение 13

    Введение

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

В настоящее время развитие робототехники не идет, а бежит, обгоняя время. Только за первые 10 лет XXI века было изобретено и внедрено более 1 млн. роботов. Но самое интересное, что разработками в этой области могут заниматься не только коллективы больших корпораций, группы ученых и инженеров профессионалов, но и обычные школьники по всему миру.

Для изучения робототехники в школе разработано несколько комплексов. Наиболее известные из них – это:

    Robotis Bioloid;

    LEGO Mindstorms;

  • Arduino .

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

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

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

Цель проекта – создание обучающего радио - конструктора на базе руки – манипулятора, для обучения детей программированию в среде Arduino в игровой форме. Дать возможность, чтобы как можно больше детей могли познакомиться с конструкторской деятельностью в робототехнике.

Задачи проекта:

    разработать и построить обучающую руку – манипулятор с минимальными затратами средств, не уступающую зарубежным аналогам;

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

    управление механизмами манипулятора осуществить с помощью радио – конструктора Arduino UNO R 3;

    разработать программу в среде программирования Arduino для пропорционального управления сервоприводами.

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

    Исследование и анализ

Исследование.

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

О
бучающий конструктор - манипулятор снабжен роботизированной рукой, которая сжимается и разжимается. С его помощью можно играть в шахматы, управляя дистанционно. Также можно с помощью робо - руки раздавать визитки. Движение включают в себя: запястье 120°, локоть 300°, базовое вращения 270°, базовые движения 180°. Игрушка очень хорошая и полезная, но стоимость его составляет порядка 17200 рублей.

Благодаря проекту «uArm», каждый желающий может собрать своего настольного мини - робота. «uArm» - это 4-x осевой манипулятор, миниатюрная версия промышленного робота «ABB PalletPack IRB460» Манипулятор оснащен микропроцессором Atmel и набором сервомоторов, общая стоимость необходимых деталей - 12959 рублей. Проект uArm требует хотя бы начальных навыков программирования и опыта конструирования лего. Мини - робот можно запрограммировать на множество функций: от игры на музыкальном инструменте, до загрузки какой - то сложной программы. В настоящее время ведется разработка приложений для iOS и Android, что позволит управлять «uArm» со смартфона.

Манипуляторы «uArm»

Большинство существующих манипуляторов предполагают расположение двигателей непосредственно в суставах. Это проще конструктивно, но выходит, что двигатели должны поднимать не только полезную нагрузку, но и другие двигатели.

Анализ.

За основу взяли, манипулятор, представленный на сайте Kickstarter, который назывался «uArm». Преимущество этой конструкции в том, что площадка для размещения захвата всегда расположена параллельно рабочей поверхности. Тяжелые двигатели расположены у основания, усилия передаются через тяги. В итоге манипулятор имеет три сервопривода (три степени свободы), которые позволяют ему перемещать инструмент по всем трем осям на 90 градусов.

В подвижных частях манипулятора решили установить подшипники. Такая конструкция манипулятора имеет массу преимуществ перед многими моделями, которые сейчас есть в продаже: Всего в манипуляторе использовано 11 подшипников: 10 штук на вал 3мм и один на вал 30мм.

Характеристики руки манипулятора:

Высота: 300мм.

Рабочая зона (при полностью вытянутом манипуляторе): от 140мм до 300мм вокруг основания

Максимальная грузоподъемность на вытянутой руке: 200г

Потребляемый ток, не более: 1А

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

Управление реализуется с помощью переменных резисторов, пропорциональное управление. Можно сконструировать управление типа пантограф, как у ядерщиков и у героя в большом роботе из фильма «Аватара», может управляться и мышкой, а по примерам кода можно составить свои алгоритмы движения.

Открытость проекта. Любой желающий может сделать свои инструменты (присоску или зажим для карандаша) и загрузить в контроллер необходимую для выполнения поставленной задачи программу (скетч).

    Этапы изготовления узлов и сборка манипулятора

      Материалы и инструменты

Для изготовления руки - манипулятора использовали композитную панель, толщиной 3мм и 5мм. Это материал, который состоит из двух алюминиевых листов, толщиной 0,21 мм соединенных термопластичной прослойкой из полимера, обладает хорошей жесткостью, легкий и хорошо обрабатывается. Скаченные фотографии манипулятора в интернете обрабатывались компьютерной программой Inkscape (векторный графический редактор). В программе AutoCAD (трёхмерная система автоматизированного проектирования и черчения) чертились чертежи руки - манипулятора.

Готовые детали для манипулятора.

Готовые детали основания манипулятора.

      Механическая начинка манипулятора

Для основания манипулятора использовали сервоприводы MG-995. Это цифровые сервоприводы с металлическими шестеренками и шарикоподшипниками, они обеспечивают усилие 4,8кг/см, точную отработку позиции и приемлемую скорость. Весит один сервопривод 55,0 граммов при размерах 40,7 х 19,7 х 42,9мм, напряжение питания от 4,8 до 7,2 вольт.

Для захвата и поворота кисти использовали сервоприводы MG-90S. Это тоже цифровые сервоприводы с металлическими шестеренками и шарикоподшипник на выходном валу, они обеспечивают усилие 1,8кг/см и точную отработку позиции. Весит один сервопривод 13.4 грамма при размерах 22,8 х 12,2 х 28,5мм, напряжение питания от 4,8 до 6,0 вольт.


Сервопривод MG-995 Сервопривод MG90S

Подшипник размером 30х55х13 используется для облегчения поворота основания руки – манипулятора с грузом.


Установка подшипника. Поворотное устройство в сборе.

Основание руки – манипулятора в сборе.


Детали для сборки захвата. Захват в сборе.

      Электронная начинка манипулятора

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

Для работы с манипулятором использовали плату Arduino UNO R 3 и совместимую плату расширения для подключения сервоприводов. На нем установлен стабилизатор 5 вольт, для питания сервоприводов, PLS-контакты для подключения сервоприводов и разъем для подключения переменных резисторов. Питание осуществляется от блока 9В, 3А.

Плата контроллера Arduino UNO R 3.

Принципиальная схема расширения для платы контроллера Arduino UNO R 3 разрабатывалась с учетом поставленных задач.

Принципиальная схема платы расширения для контроллера.

Плата расширения для контроллера.

Подключаем плату Arduino UNO R 3 с помощью кабеля USB A-B к компьютеру, устанавливаем необходимые настройки в среде программирования, составляем программу (скетч) для работы сервоприводов используя библиотеки Arduino. Компилируем (проверяем) скетч, затем загружаем в контроллер. С подробной информацией о работе в среде Arduino можно ознакомиться на сайте http://edurobots.ru/category/uroki/ (Arduino для начинающих. Уроки).

Окно программы со скетчем.

    Заключение

Данная модель манипулятора, отличается низкой себестоимостью, от таких как простой конструктор «Уткоробот» который выполняет 2 движения и стоит 1102 рублей, или Лего - конструктор «Полицейский участок» стоимостью 8429 рублей. Наш конструктор выполняет 5 движений и стоит 2384 рубля.

Комплектующие и материал

Количество

Сервопривод MG-995

Сервопривод MG90S

Подшипник 30х55х13

Подшипник 3х8х3

М3х27 стойка латунная мама-мама

М3х10 винт с гол. под в/ш

Композитная панель размером 0,6м 2

Плата контроллера Arduino UNO R 3

Переменные резисторы 100ком.

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

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

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

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

Управление манипулятором осуществить с помощью пантографа по радиоканалу Bluetooth.

    Источники информации

Гололобов Н. В.О проекте Arduino для школьников. Москва. 2011.

Курт Е. Д. Введение в микроконтроллеры с Перевод на русский язык Т. Волкова. 2012.

Белов А. В. Самоучитель разработчика устройств на микроконтроллерах AVR. Наука и техника, Санкт-Петербург, 2008.

http://www.customelectronics.ru/robo-ruka-sborka-mehaniki/ манипулятор на гусеничном ходу.

http://robocraft.ru/blog/electronics/660.html манипулятор по Bluetooth.

http://robocraft.ru/blog/mechanics/583.html ссылка на статью и видео.

http://edurobots.ru/category/uroki/ Arduino для начинающих.

    Приложение

Чертеж основания манипулятора

Чертеж стрелы и захвата манипулятора.

Создаем робот-манипулятор с использованием дальномера, реализуем подсветку.

Резать основание будем из акрила. В качестве двигателей используем сервопривода.

Общее описание проекта робота-манипулятора

В проекте использовано 6 серводвигателей. Для механической части использован акрил толщиной 2 миллиметра. В качестве штатива пригодилось основание от диско-шара (один из двигателей вмонтирован внутрь). Также использован ультразвуковой датчик расстояния и светодиод диаметром 10 мм.

Для управления роботом используется Arduino плата питания. Сам источник питания - блок питания компьютера.

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

Основные узлы для проекта манипулятора

Давайте начнем разработку. Вам понадобятся:

  • 6 серводвигателей (я использовал 2 модели mg946, 2 mg995 , 2 futuba s3003 (mg995/mg946 по характеристикам лучше, чем futuba s3003, но последние намного дешевле);
  • акрил толщиной 2 миллиметра (и небольшой кусок толщиной 4 мм);
  • ультразвуковой датчик расстояния hc-sr04 ;
  • светодиды 10 мм (цвет - на ваше усмотрение);
  • штатив (используется в качестве основания);
  • схват аллюминиевый (стоит около 10-15 долларов).

Для управления:

  • Плата Arduino Uno (в проекте использована самодельная плата, которая полностью аналогична Arduino);
  • плата питания (вам придется ее сделать самим, к этому вопросу мы вернемся позже, он требует отдельного внимания);
  • блок питания (в данном случае используется блок питания компьютера);
  • компьютер для программирования вашего манипулятора (если вы используете для программирования Arduino, значит, среда Arduino IDE)

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

Сборка механической части

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

Длина первой части около 19 см; второй - около 17.5; длина переднего звена около 5.5 см. Остальные габариты подбирайте в соответсвии с размерами вашего проекта. В принципе, размеры остальных узлов не так важны.

Механическая рука должна обеспечивать угол поворота 180 градусов в основании. Так что мы должны установить снизу серводвигатель. В данном случае он устанавливается в тот самый диско-шар. В вашем случае это может быть любой подходящий бокс. Робот устанавливается на этот серводвигатель. Можно, как это показано на рисунке, установить дополнительное металлическое кольцо-фланец. Можно обойтись и без него.

Для установки ультразвукового датчика, используется акрил толщиной 2 мм. Тут же снизу можно установить светодиод.

Детально объяснить как именно сконструировать подобный манипулятор сложно. Многое зависит от тех узлов и частей, которые есть у вас в наличии или вы приобретаете. Например, если габариты ваших сервоприводов отличаются, звенья арма из акрила тоже изменятся. Если изменятся габариты, калибровка манипулятора тоже будет отличаться.

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

После сборки механической части, мы можем перейти к "мозгам" нашего манипулятора.

Схват манипулятора

Для установки схвата вам понадобится серводвигатель и несколько винтов.

Итак, что именно необходимо сделать.

Берете качалку от сервы и укорачиваете, пока она не подойдет к вашему схвату. После этого закручиваете два маленьких винта.

После установки сервы, проворачиваете ее в крайнее левое положение и сжимаете губки схвата.

Теперь можно установить серву на 4 болта. При этом следите, чтобы двигатель был все так же в крайнем левом положении, а губки схвата закрыты.

Можно подключить сервопривод к плате Arduino и проверить работоспособность схвата.

Учтите, что могут возникнуть проблемы с работой схвата, если болты/винты слишком сильно затянуты.

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

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

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

Электросхема

Можно использовать вместо резистора R1 потенциометр на 100 кОм для регулировки яркости вручную. В качестве сопротивлени R2 использовались резисторы на 118 Ом.

Перечень основных узлов, которые использовались:

  • R1 - резистор на 100 кОм
  • R2 - резистор на 118 Ом
  • Транзистор bc547
  • Фоторезистор
  • 7 светодиодов
  • Переключатель
  • Подключение к плате Arduino

В качестве микроконтроллера использовалась плата Arduino. В качестве питания использовался блок питания от персонального компьютера. Подключив мультиметр к красному и черному кабелям, вы увидите 5 вольт (которые используются для серводвигателей и ультразвукового датчика расстояния). Желтый и черный дадут вам 12 вольт (для Arduino). Делаем 5 коннекторов для сервомоторов, параллельно подключаем позитивные к 5 В, а негативные - к земле. Аналогично с датчиком расстояния.

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

Кроме того, на плате питания был установлен светодиод-индикатор питания. Реализуется это несложно. Дополнительно использовался резистор на 100 Ом между 5 В и землей.

10 миллиметровый светодиод на роботе тоже подключен к Arduino. Резистор на 100 Ом идет от 13 пина к к позитивной ноге светодиода. Негативный - к земле. В программе его можно отключить.

Для 6 серводвигателей использовано 6 коннекторов, так как 2 серводвигателя снизу используют одинаковый сигнал управления. Соответствующие проводники соединяются и подключаются к одному пину.

Повторюсь, что в качестве питания используется блок питания от персонального компьютера. Либо, конечно, вы можете приобрести отдельный источник питания. Но с учетом, того, что у нас 6 приводов, каждый из которых может потреблять около 2 А, подобный мощный блок питания обойдется недешево.

Обратите внимание, что коннекторы от серв подключаются к ШИМ-выходам Arduino. Возле каждого такого пина на плате есть условное обозначение ~. Ультразвуковой датчик расттояния можно подключить к пинам 6, 7. Светодиод - к 13 пину и земле. Это все пины, которые нам понадобятся.

Теперь мы можем перейти к программированию Arduino.

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

На схеме подключения видно, что были добавлены потенциометры для управления сервами. Потенциометры не являются обязательным звеном, но приведенный код не будет работать без них. Потенциометры можно подключить к пинам 0,1,2,3 и 4.

Программирование и первый запуск

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

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

На видео сверху представлены последние модификации арма. Пришлось немного изменить конструкцию и заменить несколько деталей. Оказалось, что сервы futuba s3003 слабоваты. Их получилось использовать только для схвата или поворота руки. Так что виесто них были установлены mg995. Ну а mg946 вообще будут отличным вариантом.

Программа управления и пояснения к ней

// управляются привода с помощью переменных резисторов - потенциометров.

int potpin = 0; // аналоговый пин для подключения потенциометра

int val; // переменная для считывания данных с аналогового пина

myservo1.attach(3);

myservo2.attach(5);

myservo3.attach(9);

myservo4.attach(10);

myservo5.attach(11);

pinMode(led, OUTPUT);

{ //servo 1 analog pin 0

val = analogRead(potpin); // считывает значение потенциометра (значение между 0 и 1023)

// масштабирует полученное значение для использования с сервами (получаем значение в диапазоне от 0 до 180)

myservo1.write(val); // выводит серву в позицию в соответствии с рассчитанным значением

delay(15); // ждет, пока серводвигатель выйдет в заданное положение

val = analogRead(potpin1); // серва 2 на аналоговом пине 1

val = map(val, 0, 1023, 0, 179);

myservo2.write(val);

val = analogRead(potpin2); // серва 3 на аналоговом пине 2

val = map(val, 0, 1023, 0, 179);

myservo3.write(val);

val = analogRead(potpin3); // серва 4 на аналоговом пине 3

val = map(val, 0, 1023, 0, 179);

myservo4.write(val);

val = analogRead(potpin4); //серва 5 на аналоговом пине 4

val = map(val, 0, 1023, 0, 179);

myservo5.write(val);

Скетч с использованием ультразвукового датчика расстояния

Это, наверное, одна из самых эффектных частей проекта. На манипулятор устанавливается датчик расстояния, который реагирует на препятствия вокруг.

Основные пояснения к коду представлены ниже

#define trigPin 7

Следующий кусок кода:

Мы присвоили всем 5-ти сигналам (для 6 приводов) названия (могут быть любыми)

Следующее:

Serial.begin (9600);

pinMode(trigPin, OUTPUT);

pinMode(echoPin, INPUT);

pinMode(led, OUTPUT);

myservo1.attach(3);

myservo2.attach(5);

myservo3.attach(9);

myservo4.attach(10);

myservo5.attach(11);

Мы сообщаем плате Arduino к каким пинам подключены светодиоды, серводвигатели и датчик расстояния. Изменять здесь ничего не стоит.

void position1(){

digitalWrite(led, HIGH);

myservo2.writeMicroseconds(1300);

myservo4.writeMicroseconds(800);

myservo5.writeMicroseconds(1000);

Здесь кое-что можно менять. Я задал позицию и назвал ее position1. Она будет использована в дальнейшей программе. Если вы хотите обеспечить другое движение, измените значения в скобках в диапазоне от 0 до 3000.

После этого:

void position2(){

digitalWrite(led,LOW);

myservo2.writeMicroseconds(1200);

myservo3.writeMicroseconds(1300);

myservo4.writeMicroseconds(1400);

myservo5.writeMicroseconds(2200);

Аналогично предыдущему куску, только в данном случае это position2. По такому же принципу вы можете добавлять новые положения для перемещения.

long duration, distance;

digitalWrite(trigPin, LOW);

delayMicroseconds(2);

digitalWrite(trigPin, HIGH);

delayMicroseconds(10);

digitalWrite(trigPin, LOW);

duration = pulseIn(echoPin, HIGH);

distance = (duration/2) / 29.1;

Теперь начинает отрабатывать основной код программы. Не стоит его изменять. Основная задача приведенных выше строк - настройка датчика расстояния.

После этого:

if (distance <= 30) {

if (distance < 10) {

myservo5.writeMicroseconds(2200); //открыть схват

myservo5.writeMicroseconds(1000); //закрыть схват

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

if(distance <=30){ // данная строка обеспечивает переход в position1, если расстояние меньше 30 см.

position1(); //по сути арм отработает все, что вы зададите между скобками { }

else{ // если расстояние больше 30 см, переход в position2

position()2 // аналогично предыдущей строке

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

Последние строки кода

if (distance > 30 || distance <= 0){

Serial.println("Out of range"); //вывод в серийном монитеоре сообщения, что мы вышли за заданный диапазон

Serial.print(distance);

Serial.println(" cm"); //расстояние в сантиметрах

delay(500); //задержка в 0.5 секунды

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

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


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

Если Вы собрали детали манипулятора в соответствии с инструкцией, то можно приступить к сборке электронной схемы. Мы предлагаем подключить сервоприводы манипулятора к Arduino UNO через Trerma-Power Shield , а управлять сервоприводами используя Trema-потенциометры .

  • Поворот ручки первого Trema-потенциометра приведёт к повороту основания.
  • Поворот ручки второго Trema-потенциометра приведёт к повороту левого плеча.
  • Поворот ручки третьего Trema-потенциометра приведёт к повороту правого плеча.
  • Поворот ручки четвёртого Trema-потенциометра приведёт в движение захват.

В коде программы (скетче) предусмотрена защита сервоприводов , которая заключается в том, что диапазон их вращения ограничен интервалом (двумя углами) свободного хода. Минимальный и максимальный угол вращения указываются в качестве двух последних аргументов функции map() для каждого сервопривода . А значение этих углов определяется в процессе калибровки, которую нужно выполнить до начала работы с манипулятором.

Код программы:

Если вы подадите питание, до калибровки, манипулятор может начать двигаться неадекватно! Сначала выполните все шаги калибровки.

#include // Подключаем библиотеку Servo для работы с сервоприводами Servo servo1; // Объявляем объект servo1 для работы с сервоприводом основания Servo servo2; // Объявляем объект servo2 для работы с сервоприводом левого плеча Servo servo3; // Объявляем объект servo3 для работы с сервоприводом правого плеча Servo servo4; // Объявляем объект servo4 для работы с сервоприводом захвата int valR1, valR2, valR3, valR4; // Объявляем переменные для хранения значений потенциометров // Назначаем выводы: const uint8_t pinR1 = A2; // Определяем константу с № вывода потенциометра управл. основанием const uint8_t pinR2 = A3; // Определяем константу с № вывода потенциометра управл. левым плечом const uint8_t pinR3 = A4; // Определяем константу с № вывода потенциометра управл. правым плечом const uint8_t pinR4 = A5; // Определяем константу с № вывода потенциометра управл. захватом const uint8_t pinS1 = 10; // Определяем константу с № вывода сервопривода основания const uint8_t pinS2 = 9; // Определяем константу с № вывода сервопривода левого плеча const uint8_t pinS3 = 8; // Определяем константу с № вывода сервопривода правого плеча const uint8_t pinS4 = 7; // Определяем константу с № вывода сервопривода захвата void setup(){ // Код функции setup выполняется однократно: Serial.begin(9600); // Инициируем передачу данных в монитор последовательного порта servo1.attach(pinS1); // Назначаем объекту servo1 управление сервоприводом 1 servo2.attach(pinS2); // Назначаем объекту servo2 управление сервоприводом 2 servo3.attach(pinS3); // Назначаем объекту servo3 управление сервоприводом 3 servo4.attach(pinS4); // Назначаем объекту servo4 управление сервоприводом 4 } void loop(){ // Код функции loop выполняется постоянно: valR1=map(analogRead(pinR1), 0, 1024, 10, 170); servo1.write(valR1); // Вращаем основанием Указанные в данной строке углы: 10 и 170 возможно потребуется изменить (откалибровать) valR2=map(analogRead(pinR2), 0, 1024, 80, 170); servo2.write(valR2); // Управляем левым плечом Указанные в данной строке углы: 80 и 170 возможно потребуется изменить (откалибровать) valR3=map(analogRead(pinR3), 0, 1024, 60, 170); servo3.write(valR3); // Управляем правым плечом Указанные в данной строке углы: 60 и 170 возможно потребуется изменить (откалибровать) valR4=map(analogRead(pinR4), 0, 1024, 40, 70); servo4.write(valR4); // Управляем захватом Указанные в данной строке углы: 40 и 70 возможно потребуется изменить (откалибровать) Serial.println((String) "A1 = "+valR1+",\t A2 = "+valR2+", \t A3 = "+valR3+", \t A4 = "+valR4); // Выводим углы в монитор }

Калибровка:

Перед началом работы с манипулятором, его нужно откалибровать!

    Калибровка заключается в указании крайних значений угла поворота для каждого сервопривода, так чтобы детали не мешали их движениям.
  • Отсоедините все сервоприводы от Trema-Power Shield, загрузите скетч и подключите питание.
  • Откройте монитор последовательного порта.
  • В мониторе будут отображаться углы поворота каждого сервопривода (в градусах).
  • Подключите первый сервопривод (управляющий вращением основания) к выводу D10.
  • Поворот ручки первого Trema-потенциометра (вывод A2) приведёт к повороту первого сервопривода (вывод D10), а в мониторе изменится значение текущего угла этого сервопривода (значение: A1 = ...). Крайние положения первого сервопривода будут лежать в диапазоне, от 10 до 170 градусов (как написано в первой строке кода loop). Этот диапазон можно изменить, заменив значения последних двух аргументов функции map() в первой строке кода loop, на новые. Например, заменив 170 на 180, Вы увеличите крайнее положение сервопривода в данном направлении. А заменив 10 на 20, Вы уменьшите другое крайнее положение того же сервопривода.
  • Если Вы заменили значения, то нужно заново загрузить скетч. Теперь сервопривод будет поворачиваться в новых, заданных Вами, пределах.
  • Подключите второй сервопривод (управляющий поворотом левого плеча) к выводу D9.
  • Поворот ручки второго Trema-потенциометра (вывод A3) приведёт к повороту второго сервопривода (вывод D9), а в мониторе изменится значение текущего угла этого сервопривода (значение: A2 = ...). Крайние положения второго сервопривода будут лежать в диапазоне, от 80 до 170 градусов (как написано во второй строке кода loop скетча). Этот диапазон изменяется так же как и для первого сервопривода.
  • Если Вы заменили значения, то нужно заново загрузить скетч.
  • Подключите третий сервопривод (управляющий поворотом правого плеча) к выводу D8. и аналогичным образом осуществите его калибровку.
  • Подключите четвертый сервопривод (управляющий захватом) к выводу D7. и аналогичным образом осуществите его калибровку.

Калибровку достаточно выполнить 1 раз, после сборки манипулятора. Внесённые Вами изменения (значения предельных углов) сохранятся в файле скетча.

Эта статья — вводное руководство для новичков по созданию роботизированных рук, которые программируются при помощи Ардуино. Концепция состоит в том, что проект роборуки будет недорогим и простым в сборке. Мы соберём несложный прототип с кодом, который можно и нужно оптимизировать, это станет для вас отличным стартом в робототехнике. Робот-манипулятор на Ардуино управляется хакнутым джойстиком и может быть запрограммирован на повторение последовательности действий, которую вы зададите. Если вы не сильны в программировании, то можете заняться проектом в качестве тренировки по сборке «железа», залить в него мой код и получить на его основе базовые знания. Повторюсь, проект достаточно простой.

На видео — демка с моим роботом.

Шаг 1: Список материалов



Нам понадобится:

  1. Плата Ардуино. Я использовал Уно, но любая из разновидностей одинаково хорошо справится с задачами проекта.
  2. Сервоприводы, 4 самых дешевых, что вы найдёте.
  3. Материалы для корпуса на ваш вкус. Подойдёт дерево, пластик, метал, картон. Мой проект собран из старого блокнота.
  4. Если вы не захотите заморачиваться с печатной платой, то понадобится макетная плата. Подойдёт плата небольшого размера, поищите варианты с джамперами и блоком питания — они бывают достаточно дешевы.
  5. Что-то для основания руки — я использовал банку от кофе, это не самый лучший вариант, но это всё, что я смог найти в квартире.
  6. Тонкая нить для механизма руки и иголка для проделывания отверстий.
  7. Клей и изолента, чтобы скрепить всё воедино. Нет ничего, что нельзя было бы скрепить изолентой и горячим клеем.
  8. Три резистора на 10K. Если у вас не найдётся резисторов, то в коде на такие случаи есть обходной манёвр, однако лучшим вариантом будет купить резисторы .

Шаг 2: Как всё работает



На приложенном рисунке изображен принцип работы руки. Также я объясню всё на словах. Две части руки соединены тонкой нитью. Середина нити соединена с сервоприводом руки. Когда сервопривод тянет нить — рука сжимается. Я оснастил руку пружиной из шариковой ручки, но если у вас есть более гибкий материал, можете использовать его.

Шаг 3: Модифицируем джойстик

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

Для проекта использовался старый джойстик, но в принципе подойдёт любой устройство с кнопками. Аналоговые кнопки (грибы) используются для управления сервоприводами, так как по сути это просто потенциометры. Если у вас нет джойстика, то можете использовать три обычных потенциометра, но если вы, как и я, модифицируете старый джойстик своими руками, то вот что вам нужно сделать.

Я подключил потенциометры к макетной плате, у каждого из них есть по три клеммы. Одну из них нужно соединить с GND, вторую с +5V на Ардуино, а среднюю на вход, который мы определим позже. Мы не будем использовать ось Y на левом потенциометре, поэтому нам нужен только потенциометр над джойстиком.

Что касается переключателей, соедините +5V с одним его концом, а провод, который идёт на другой вход Ардуино со вторым концом. Мой джойстик имеет общую для всех переключателей линию на +5V. Я подключил всего 2 кнопки, но затем подключил еще одну, так как в ней появилась необходимость.

Также важно обрезать провода, которые идут к чипу (черный круг на джойстике). Когда вы завершите всё вышеописанное, можно приступить к проводке.

Шаг 4: Электропроводка нашего устройства

На фотографии изображена электропроводка устройства. Потенциометры — это рычажки на джойстике. Локоть (Elbow) — это правая ось Y, Основа (Base) — это правая ось X, Плечо (Shoulder) — это левая ось X. Если вам захочется поменять направление движения сервоприводов, просто смените положение проводов +5V и GND на соответствующем потенциометре.

Шаг 5: Загрузка кода

На этом этапе нам нужно скачать приложенный код на компьютер, а затем загрузить его на Ардуино.

Заметка: если до этого вы уже загружали код на Ардуино, то просто пропустите этот шаг — вы не узнаете ничего нового.

  1. Откройте ИДЕ Ардуино и вставьте в него код
  2. В Tools/Board выберите вашу плату
  3. В Tools/Serial Port выберите порт, к которому подключена ваша плата. Скорее всего, выбор будет состоят из одного пункта.
  4. Нажмите кнопку Upload.

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

Если вы не используете резисторы, то вам нужно будет модифицировать код в том месте, где я оставил об этом заметки.

Файлы

Шаг 6: Запуск проекта

Робот контролируется движениями на джойстике, рука сжимается и разжимается при помощи кнопки для руки. На видео показано, как все работает в реальной жизни.

Вот способ, которым можно запрограммировать руку:

  1. Откройте Serial Monitor в Ардуино ИДЕ, это позволить проще следить за процессом.
  2. Сохраните начальную позицию, кликнув Save.
  3. За один раз двигайте лишь одним сервоприводом, например, Плечо вверх, и жмите save.
  4. Активируйте руку также только на её шаге, а затем сохраняйте нажатием save. Деактивация также производится на отдельном шаге с последующим нажатием save.
  5. Когда закончите последовательность команд, нажмите кнопку play, робот перейдёт в начальное положение и затем начнёт двигаться.
  6. Если вы захотите остановить его — отсоедините кабель или нажмите кнопку reset на плате Ардуино.

Если вы всё сделали правильно, то результат будет похож на этот!

Надеюсь, урок был вам полезен!

Вид на внутреннюю часть ладони человекоподобного робота RKP-RH101-3D. Ладонь кисти человекоподобного робота зажата на 50%. (смотри Рис. 2).

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

Таково в общих чертах устройство манипулятора RKP-RH101-3D. Что касается сложности задач, которые может разрешать тот или иной робот, оборудованный различными манипуляторами, заменяющими ему руки, то они во многом зависят от сложности и совершенства управляющего устройства.
Принято говорить о трех поколениях роботов: промышленных, адаптивных и роботах с искусственным интеллектом. Но какой бы робот не проектировался ему не обойтись без рук манипуляторов для выполнения различных задач. Звенья манипулятора подвижны друг относительно друга и могут совершать вращательные и поступательные движения. Иногда вместо простого захвата предмета у промышленных роботов последним звеном манипулятора (его кистью) служит какой-нибудь рабочий инструмент, например, дрель, гаечный ключ, краскораспылитель или сварочная горелка. У человекоподобных роботов на кончиках пальцев их манипуляторов в виде кисти могут быть также расположены различные дополнительные миниатюрные приспособления, например, для сверления, гравировки или рисования.

Общий вид человекоподобного боевого робота на сервоприводах с кистями рук RKP-RH101-3D (смотри Рис. 3).

← Вернуться

×
Вступай в сообщество «page-electric.ru»!
ВКонтакте:
Я уже подписан на сообщество «page-electric.ru»