Робот манипулятор
Все мы давно знаем промышленных роботов манипуляторов. Но теперь их легко можно сделать своими руками! Робот манипулятор на ардуино не только легко собирается из 3D печатных деталей, но и достаточно просто управляется! 3D модель робота манипулятора скачать без регистрации и совершенно бесплатно всегда можно на нашем сайте!
Наглядная схема робота манипулятора, или так называемой Роборуки, изображена на картинках. Скачать 3D модели можно одним архивом. Далее, для просмотра и печати 3D деталей на принтере, Вам понадобиться программа Repetier Host, о которой мы неоднократно писали в наших статьях.
Из особенностей данного робота на платформе Arduino можно отметить сложность его конструкции. Роборука состоит из множества рычагов, которые позволяют ей двигаться по всем осям, хватать и перемещать различные вещи, используя всего 4 серво-мотора. Собрав собственными руками такого робота, Вы точно сможете удивить своих друзей и близких возможностями и приятным видом данного устройства! Помните, что для программирования Вы всегда сможете воспользоваться нашей графической средой RobotON Studio!
Если у Вас появятся вопросы или замечания, мы всегда на связи! Создавайте и выкладывайте свои результаты!
Особенности:
Чтобы собрать робота манипулятора своими руками, вам понадобится довольно много компонентов. Основную часть занимают 3D печатные детали, их около 18 штук (печатать горку необязательно).Если вы скачали и распечатали все необходимое, то вам потребуются болты, гайки и электроника:
- 5 болтов М4 20мм, 1 на 40 мм и соответствующие гайки с защитой от раскрутки
- 6 болтов М3 10мм, 1 на 20 мм и соответствующие гайки
- Макетка с соединительными проводами или шилд
- Arduino Nano
- 4 серво мотора SG 90
После сборки корпуса ВАЖНО убедиться в его свободной подвижности. Если ключевые узлы Роборуки двигаются с трудом, серво-моторы могут не справиться с нагрузкой. Собирая электронику, необходимо помнить, что подключать цепь к питанию лучше после полной проверки соединений. Чтобы избежать поломки серво-приводов SG 90, не нужно крутить руками сам мотор, если нет необходимости. В случае, если нужно разработать SG 90, нужно плавно подвигать вал мотора в разные стороны.
Характеристики:
- Простое программирование ввиду наличия малого количества моторов, причем одного типа
- Наличие мертвых зон для некоторых серво-приводах
- Широкая применимость робота в повседневной жизни
- Интерсная инженерная работа
- Необходимость использования 3D принтера
Манипулятор своими руками из фанеры
Как вы знаете сделал я самодельный ЧПУ фрезерный станок. Входе обучения работы на нем я делаю различные поделки и механизмы. Нашел в интернете исходные файлы (MeArmV03.svg) для манипулятора и решил вырезать его на ЧПУ станке.
Я думал что с первого раза у меня ни чего не получиться. Так как это достаточно сложная работа для ЧПУ и очень много мелких деталей.
ЧПУ резал больше часа и вырезал все детали. Провел небольшую доработку с помощью надфиля. Собрал на винтики манипулятор. Кстати в интернете много инструкций, от текстовых до видео по сборке манипулятора.
И Вот что у меня получилось. Достаточно не плохо на мой взгляд.
Серо-приводы установлены, Манипулятор собран. Но как проверить его работоспособность. Поискал в интернете примеров не дал результатов и тогда я решил набросать небольшой пример кода для NodeMCU. Тем более у меня лежал без дела шилд для данной отладочной платы.
Код получился не очень красивый но для проверки достаточно.
// определение режима соединения и подключение библиотеки RemoteXY #define REMOTEXY_MODE__ESP8266WIFI_LIB_POINT #include #include // настройки соединения #define REMOTEXY_WIFI_SSID "portalpk" #define REMOTEXY_WIFI_PASSWORD "" #define REMOTEXY_SERVER_PORT 6377 // конфигурация интерфейса #pragma pack(push, 1) uint8_t RemoteXY_CONF[] = < 255,4,0,0,0,31,0,6,5,0, 4,128,48,50,42,9,4,4,0,6, 12,9,36,2,4,0,85,11,9,37, 2,4,128,8,4,42,9,4 >; // структура определяет все переменные вашего интерфейса управления struct < // input variable int8_t slider_1; // =0..100 положение слайдера int8_t slider_2; // =0..100 положение слайдера int8_t slider_3; // =0..100 положение слайдера int8_t slider_4; // =0..100 положение слайдера // other variable uint8_t connect_flag; // =1 if wire connected, else =0 >RemoteXY; #pragma pack(pop) ///////////////////////////////////////////// // END RemoteXY include // ///////////////////////////////////////////// #include #define PIN_SERVO1 D1 #define PIN_SERVO2 D2 #define PIN_SERVO3 D3 #define PIN_SERVO4 D4 Servo servo1; Servo servo2; Servo servo3; Servo servo4; void setup() < RemoteXY_Init (); // TODO you setup code RemoteXY.slider_1 = 50; RemoteXY.slider_2 = 50; RemoteXY.slider_3 = 50; RemoteXY.slider_4 = 50; servo1.attach(PIN_SERVO1); servo2.attach(PIN_SERVO2); servo3.attach(PIN_SERVO3); servo4.attach(PIN_SERVO4); >void loop() < RemoteXY_Handler (); // TODO you loop code // используйте структуру RemoteXY для передачи данных int ms = RemoteXY.slider_1*20+500; servo1.writeMicroseconds(ms); int ms2 = RemoteXY.slider_2*10+500; servo2.writeMicroseconds(ms2); int ms3 = RemoteXY.slider_3*10+500; servo3.writeMicroseconds(ms3); int ms4 = RemoteXY.slider_4*10+500; servo4.writeMicroseconds(ms4); >
Вам скорее всего нужно будет изменить начальные угол для серо-приводов.
Тестирования самодельного манипулятора показал , что все работает но скорее всего не достаточно питания от одного аккумулятора 18650. И происходить перезагрузка NodeMCU .
Запланировал доработку кода для руки-манипулятора и переделать источник питания. Но как скоро будет продолжение зависит от вас и от свободного времени.
Понравилась статья? Поделитесь ею с друзьями:
Как сделать манипулятор на 3D-принтере: пошаговая инструкция
Роботы-манипуляторы представляют собой обширный класс высокотехнологичных приборов, предназначенных для воздействия на объект методом перемещения, вращения или других манипуляций. Развитие робототехники привело к набору популярности этих устройств и существенному расширению модельного ряда, предлагаемого производителями. Однако собрать робота можно и в домашних условиях, особенно при наличии 3D-принтера.
- Что такое робот-манипулятор?
- Как сделать манипулятор на 3D-принтере: пошаговая инструкция
- Какие материалы и инструменты нужны?
- Как собрать манипулятор на принтере своими руками?
- Настройка робота
- Как двигать манипулятором?
Что такое робот-манипулятор?
Робот-манипулятор – устройство, которое используется в производстве для воздействия на объект. В большинстве случаев манипуляторы имеют параметры, схожие с способностями человеческих рук. Они могут быть как полностью автономными, так и входить в состав сложных роботизированных комплексов. Их фрагменты могут отличаться присутствием тех или иных механических узлов, которые ответственны за осуществление вращательных или поступательных движений.
Применение роботов-манипуляторов в производстве позволяет существенно оптимизировать процессы, сократив затраты и повысив качество произведенной продукции за счет сокращения числа ошибок, допускаемых на линии из-за человеческого фактора. Еще одним неоспоримым плюсом применения роботизированной техники на производстве является снижение нецелесообразной потери сырья и количества травм среди наемного персонала.
Применение манипуляторов позволяет не только поднять уровень производства, но и повысить доходность предприятия за счет снижения издержек и объема некачественной продукции.
Независимо от предназначения робота, конструкция манипуляторов является схожей и напоминает строением руку человека.
- плечо, представляющее собой статичную основу, на которую прикрепляются прочие детали и узлы;
- запястье;
- локоть;
- кисть.
Яркими представителями класса являются:
- LEGO Mindstorms. Представляет собой серию учебной техники, предназначенную для понимания принципов роботостроения в полном объеме – от этапа сборки, до программирования и последующего тестирования.
- Роботизированная система Vegebot, предназначенная для автоматизированного сбора урожая в сельскохозяйственной деятельности. Робот может самостоятельно убрать урожай с поля, подстроившись под тип овощей.
- KUKA LBR Med – робот-манипулятор, предназначенный для работы в медицинской отрасли. В его основу лег предельно чувствительный робот модели LBR iiwa. Предназначение этого робота – помощь в операционной.
Стоимость промышленных роботов-манипуляторов зависит от их предназначения, но крайне редко опускается ниже 150 000 рублей.
Как сделать манипулятор на 3D-принтере: пошаговая инструкция
Какие материалы и инструменты нужны?
Для самостоятельной сборки робота-манипулятора с помощью 3D-принтера понадобятся:
- Серво-моторы, например DYNAMIXEL AX-12A или SG 90 или 3 995(946). Количество зависит от планируемой мощности и предназначения робота. Их стоимость – от 6500 рублей за 1 штуку.
- 3D-принтер и пластиковая нить к нему.
- Плата Arduino Uno.
- Плата расширения Arduino Power Shield (цена – от 4000 рублей).
- Лабораторный источник питания (от 3500 рублей).
Также для сборки манипулятора потребуются:
- болты М6 25 мм и гайки с прорезиненной подставкой соответствующего размера;
- болты М4 40 мм;
- болты М4 30 мм;
- болты М4 20 мм;
- гайки М4 (с защитой от раскрутки);
- болты М3 20 мм и гайки с прорезиненной подставкой соответствующего размера;
- болты М3 10 мм;
- болты М4 20 мм;
- ось М4 60 мм с нарезкой;
- ось 32 мм с нерезкой;
- подшипник 606zz;
- шилд или макетка с соединительными проводами.
Как собрать манипулятор на принтере своими руками?
Сборку робота-манипулятора следует начать с распечатки деталей руки на 3D-принтере. Для этого потребуется разработать соответствующие 3D-модели или скачать готовые файлы в формате STL. Далее напечатанные части необходимо собрать и установить серво-моторы.
Когда рука будет собрана, необходимо установить управляющий модуль. Для этого потребуется:
- Установить Robot Operating System (ROS) – программу с открытым кодом, которая представляет собой совокупность инструментов и библиотек, позволяющих создавать приложения для управления роботизированной техникой.
- Для эффективной работы с ROS необходимо создать URDF-модель. Она нужна для полноценного управления рукой-манипулятором с использованием пакета MoveIT. Построение модели – ответственная задача, которая требует сосредоточенности и серьезных временных затрат. Все созданные ранее STL-файлы необходимо собрать в единый файл формата XML, опытным путем подобрав подходящие коэффициенты смещения деталей относительно друг друга. Когда процесс будет завершен, из URDF-файла будет создана конфигурация для работы с модулем MoveIT, которая позволит программировать движения робота и управлять устройством.
Настройка робота
Для настройки пользователю потребуется наличие ПК или ноутбука. При использовании ПК необходимо дополнительно установить плату для беспроводного подключения. Если соответствующий модуль не будет установлен, точка доступа не будет найдена.
Далее необходимо приступить к предварительной настройке серводвигателей. Сделать это необходимо до того, как они будут зафиксированы на робо-руке. Это обусловлено тем, что конструкция устройств предполагает наличие мертвых зон. Поэтому прежде чем они будут закреплены, их нужно запрограммировать на угол в 90 градусов для того, чтобы кран мог двигаться и вправо, и влево. После этого сервомотор захватывающей клешни следует выставить на нулевое значение, сомкнуть ее лопасти, а затем закрепить.
Как двигать манипулятором?
Движение робота-манипулятора обеспечивается платами Arduino UNO и Power Shield.
Один из моторов робота необходимо подключить к Power Shield и блоку питания, соединив data pin двигателя с 3 и 4 выводами платы. Именно data pin сервомотора используется одновременно для получения команд и ответа от устройства (связь мотора организована по протоколу Half Duplex Asynchronous Serial Communication).Использование этого режима и объясняет подключение мотора к 3 и 4 выходам шилда одномоментно.
Для того чтобы двигать манипулятором, потребуется:
- Скачать библиотеку arduino (через специальную программу Arduino Library Manager).
- Установить значение baud rate, равное 57 600. Скорость, заданная сервомоторами по умолчанию – 1 000 000, слишком высока для Software Serial Interface.
- Все моторы робота соединены между собой последовательно, поэтому для обращения к каждому из них необходимо знать их персональный адрес (ID). ID адрес будет персональным для каждого двигателя, interface – одинаков для всех. ID каждому двигателю пользователь должен задать в ручном режиме. Для этого каждый из моторов следует отдельно подключить к плате Arduino (отсоединив от остальных) и присвоить каждому мотору значение NEW_ID. После этого манипулятором можно будет управлять с помощью приложения ROS.
Преимущества
Манипулятор, созданный самостоятельно на 3D-принтере, обладает рядом достоинств в сравнении с готовыми моделями. К основным преимуществам относятся:
- Существенная экономия. Самостоятельная сборка робо-руки обойдется в 2–3 раза дешевле, чем покупка аналогичного устройства от производителя.
- 3D-принтер позволит максимально быстро создать компоненты для сборки манипулятора. Скорость трехмерной печати даже на самых простых устройствах, предназначенных для домашнего использования, достаточно высока. Пользователю не придется покупать запчасти у производителей и ждать доставку.
- Возможность напечатать детали сложной формы с учетом будущей функциональности робота.
- Самостоятельная сборка манипулятора с помощью 3D-принтера позволяет разработать модель устройства таким образом, чтобы она максимально точно отвечала поставленным требованиям.
Роботы-манипуляторы представляют собой технически сложные устройства, широко распространенные практически во всех сферах деятельности человека. Технология современной 3D-печати позволяет собрать подобный манипулятор в домашних условиях, напечатав детали для робо-руки на 3D-принтере. Самостоятельная сборка позволит не только существенно сэкономить, но и разработать модель робота, максимально отвечающую запросам пользователя.
Дешевый и полнофункциональный робот-манипулятор своими руками
Сразу оговоримся, что совсем дешево делать не будем, т.к. не хочется убивать нервные клетки, делая доморощенные энкодеры для моторчиков + хочется упростить создание 3D модели, которая нужна для управления через ROS (ссылка на готовую модель – ниже в статье).
На момент написания статьи ориентировочная конечная стоимость изделия составляет ~70 000 руб. Если у вас есть 3D принтер, то можно смело вычесть из нее 20 000 руб. Если принтера нет, то его появление станет приятным бонусом. Все расходы я буду описывать исходя из того, что у нас нет ничего, кроме денег.
Как выглядит результат:
Также нужно отметить, что для программирования руки нам понадобится компьютер с установленными ОС Linux (я использую Ubuntu 18.04) и фреймворком ROS (я использую Melodic).
Может возникнуть вопрос «почему 70К рублей – это дешево?»
Отвечаю. Изначально я не хотел заморачиваться с созданием роборуки и думал просто купить что-нибудь простенькое, но достаточно функциональное в сборе.
Что являлось для меня критериями функциональности и минимальной допустимой простотой (т.е. почему НЕ подойдут манипуляторы с алиэкспресса) – можно обсудить в комментариях, чтобы не грузить тех, кому это очевидно и/или не интересно.
Конкурентные решения на рынке
Опишу, однако, кратко примеры того, что я рассматривал на рынке:
1) top3dshop.ru/robots/manipulators/dobot-magician-basic.html
176 000 руб. DOBOT можно купить не только в этом магазине, но обычно он стоит еще больше. Наверняка есть шанс найти его где-нибудь дешевле, но все равно это будет сильно дороже, чем 70 000 руб.2) robotbaza.ru/product/robot-manipulyator-widowx-robotic-arm-mark-ii
280 000 руб. Еще дороже. Вообще, манипуляторы от TossenRobotics прямо у производителя стоят супервменяемых денег. Вот только доставку в Россию (а я-то именно тут) из их магазина не заказать.Забегая немного вперед скажу, что делать мы будем копию робо-руки PhantomX Pincher Robot Arm Kit Mark II, которая производится именно компанией TossenRobotics.
Итого, видим, что 70 000 руб – это совсем не так дорого.
Что же нам нужно купить?
Все цены привожу на момент написания статьи (июль 2020 года):
1) 6 моторчиков DYNAMIXEL AX-12A
Я покупал по цене 7200 руб за 1 штуку, но, кажется, можно найти и за 6000 при большом желании. Будем считать, что вам не повезет и вы тоже купите за 7200.
Суммарная стоимость: 43 200 рубПодойдет любой простенький, можно уложиться в 20 000 руб.
3) Arduino Uno + Power Shield
Стоимость: ~4 000 руб
4) Опционально (но я очень рекомендую): Лабораторный источник питания
Стоимость: ~3 500 руб
Сборка
Отлично! Мы закупили все, что нам нужно (вероятно, дольше всего ждали доставки моторчиков, мне их везли больше месяца).
1) Напечатаем детали для манипулятора на 3D принтере.
Качаем STL файлы отсюда
2) Собираем воедино с моторчиками. Проблем со сборкой быть не должно, но если они вдруг появятся, можно воспользоваться вот этой инструкцией
Делаем 3D модель
Класс! Рука у нас есть, но ведь ей же нужно как-то управлять. Хочется максимально использовать достижения человечества, поэтому установим себе ROS.
Для того, чтобы полноценно работать с манипулятором в ROS – нужно сделать его URDF модель. Она будет нам необходима для того, чтобы управлять робо-рукой с помощью пакета MoveIT!
На момент написания статьи последняя стабильная сборка доступна для Melodic/Ubuntu 18.04, чем и объясняется мой выбор версии системы и фреймворка в начале статьи.Построение URDF модели – довольно трудоемкая (и, на мой взгляд, самая скучная) часть данного проекта. Нужно немного допилить напильником stl модели компонентов и соединить их воедино в XML-образном файле, вручную подбирая правильные коэффициенты смещения деталей друг относительно друга.
Кто хочет – может проделать работу самостоятельно, всем остальным поберегу нервы и просто дам ссылку на свой готовый файл:
В данной модели пока нет захватывающего устройства, однако, до того момента, чтобы захватывать предметы в реальном мире нам еще далеко. Для остальных задач этой модели более чем достаточно.
Выглядит модель вот так:
Из полученного URDF файла мы сделаем конфиг MoveIT!, который позволит нам моделировать движения манипулятора и отправлять управляющие команды на реальную робо-руку.
Для создания конфига есть отличный туториал (ссылка)
Тут я могу опять сэкономить время и предоставить свой конфиг. Лежит он вот тут:
Можно скачать конфиг с гитхаба и запустить следующей командой:
roslaunch armbot_moveit_config demo.launch
Примерно так можно будет управлять нашей реальной робо-рукой через rviz, когда мы подключим ее к ROS:
А что с реальной рукой?
Переместимся из мира 3D моделей в суровую реальность. У нас есть собранный ранее манипулятор. Хотелось бы его как-то подвигать. Сделаем это с помощью Arduino UNO и Power Shield.
Подключим первый моторчик манипулятора (который снизу) к Power Shield’у и блоку питания следующим образом:
Да, data pin моторчика мы соединим сразу с 3 и 4 выводом Arduino. Пытливый читатель мануала Dynamixel (вот он) сразу заметит, что связь с внешним миром у моторчика организована по Half Duplex Asynchronous Serial Communication, а это означает, что data pin используется сразу и для получения команд и для ответа.
По умолчанию, на аппаратном уровне Arduino умеет работать только с Full Duplex UART. Эту проблему можно обойти, используя Soft Serial библиотеку, что мы и сделаем. Именно использование Half Duplex режима объясняет подключение data pin мотора к 3 и 4 выводам шилда одновременно.
Помимо полудуплексного обмена работа с Dynamixel через Arduino имеет еще пару занимательных моментов, которые могут быть не совсем очевидны с самого начала. Сведем их все воедино.
Как подвигать наш манипулятор?
1) Сначала скачаем нужную библиотеку. Она называется ardyno и ее можно получить через Arduino Library Manager, либо тут (ссылка)
2) По умолчанию Dynamixel AX-12A хотят работать с baud rate = 1000000. Однако Software Serial Interface не потянет такую скорость, поэтому baud rate стоит снизить до 57600. Таким образом, начало файла с вашей программой будет выглядеть примерно вот так:
#include "DynamixelMotor.h" // communication baudrate const long unsigned int baudrate = 57600; SoftwareDynamixelInterface interface(3, 4);
3) Все наши моторчики соединены друг с другом последовательно. Значит, чтобы обращаться к каждому из них — нужно знать его ID? Это действительно так, объект DynamixelMotor при инициализации получает два параметра: interface (одинаков для всех, его мы задали в предыдущем пункте) и id (должен быть у всех разный, иначе поведение будет у манипулятора весьма странное)
DynamixelMotor motor(interface, id);
Id каждому моторчику придется задать вручную. Кажется, что будучи соединенными последовательно, они могли бы и сами рассчитаться по номерам от 1 до 6, но этого не предусмотрено. Поэтому нужно каждый моторчик отдельно подключить к Arduino (отключив от остальных) и выполнить следующую программу:
#include "DynamixelMotor.h" // communication baudrate const long unsigned int baudrate = 57600; // id of the motor const uint8_t interface(3, 4); DynamixelMotor motor(interface, id); void setup() < interface.begin(baudrate); delay(100); // check if we can communicate with the motor // if not, we turn the led on and stop here uint8_t status=motor.init(); if(status!=DYN_STATUS_OK) < pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, HIGH); while(1); >motor.changeId(NEW_ID); > void loop() <>
Изначально все моторчики имеют именно поэтому мы и указываем вверху
const uint8_t > NEW_ID для каждого моторчика нужно заменить на число от 1 до 6 (да, ок, первый моторчик можно не трогать). Нумеруем их в порядке от нижнего к верхнему.
Ура! у нас есть полноценный манипулятор, который мы можем двигать, а также имеется 3D модель к нему. Можно брать ROS и программировать любые крутые штуки. Но это уже рассказ для отдельной статьи (и не одной). Данное же повествование подошло к концу, спасибо за внимание!
- Разработка робототехники
- Робототехника