В данном уроке, двигаясь по шагам, мы соберём робот «Манипулятор».
Видео:
Шаг 2
Список деталей к Шагу 2
1 | 2 | М3 гайка |
2 | 1 | Крепление |
3 | 1 | Сервопривод |
4 | 2 | М3х8 винт |
5 | 1 | Основа левой руки |
6 | 1 | Параллельное крепление |
7 | 1 | Рычаг руки |
8 | 1 | М3×6мм винт |
9 | 1 | Серво рычаг |
10 | 2 | М3х12мм винт |
11 | 1 | Осевой серверный винт |
12 | 1 | Фиксирующий серверный винт |
Шаг 3
Рука манипулятор — Инструкция по сборке
Собираем Руку Робот — Манипулятор
Список деталей к Шагу 3
1 | 2 | М3 гайка |
2 | 1 | Крепление |
3 | 1 | Сервопривод |
4 | 2 | М3х8 винт |
5 | 1 | Параллельное крепление |
6 | 1 | М3х6мм винт |
7 | 1 | Серво рычаг |
8 | 2 | М3×6мм винт |
9 | 1 | Рычаг правой руки |
10 | 1 | Основание правой руки |
11 | 1 | Осевой серверный винт |
12 | 1 | Фиксирующий серверный винт |
Шаг 4
Список деталей к Шагу 4
1 | 1 | Крепление вкладки левой руки |
2 | 1 | М3х6мм винт |
3 | 1 | Балка левой руки |
4 | 1 | Верхняя крышка |
5 | 1 | Двойной серво рычаг |
6 | 2 | Фиксирующий серверный винт. |

Шаг 5
Список деталей к Шагу 5
1 | 2 | М3 гайка |
2 | 2 | М3х12мм винт |
3 | 1 | Траверса основания манипулятора |
4 | 1 | Соединительное ребро жесткости |
Шаг 6
Список деталей к Шагу 6
1 | 2 | М3×6мм винт |
2 | 1 | Фиксирующий серверный винт |
3 | 1 | Балка левого запястья |
Шаг 7
Рука манипулятор — Инструкция по сборке
Список деталей к Шагу 7
1 | 1 | Параллельная балка |
2 | 1 | М3х6мм винт |
3 | 1 | Коннектор |
4 | 1 | Балка правого запястья |
5 | 1 | Прокладка |
6 | 2 | M3x10 винт |
Шаг 8
Список деталей к Шагу 8
1 | 1 | Левый захват |
2 | 1 | Правый захват |
3 | 1 | Приводной рычаг |
4 | 1 | Левое крепление запястья |
5 | 1 | Правое крепление запястья |
6 | 1 | Нижнее крепление сервопривода |
7 | 1 | Верхнее крепление сервопривода. |
8 | 1 | Приводной рычаг |
9 | 1 | Осевой серверный винт. |
10 | 1 | Серво рычаг |
11 | 1 | Сервопривод |
12 | 4 | М3х8мм |
13 | 3 | М3х6мм |
14 | 1 | Фиксирующий серверный винт |
15 | 1 | М3х12мм винт |
16 | 2 | Прокладка |

Шаг 9
Список деталей к Шагу 9
1 | 1 | Прокладка |
2 | 3 | М3х10мм винт |
Вы можете скачать данную инструкцию по ссылке: Сборка робота-манипулятора. Часть 1
Источник: lesson.iarduino.ru
Миниатюрный манипулятор
Необходимые материалы и подробная инструкция по сборке очень простого и функционального манипулятора на базе дешевых китайских сервоприводов .
Миниатюрный манипулятор Общий вид
Описание конструкции
Автором этой разработки является deGHIZmo, пользователь сайта Thingiverse. Вот сама страница проекта. Также он подготовил достаточно подробную инструкцию по сборке.
Со своей стороны мы отметили высокую заинтересованность аудитории нашего сайта к нашему проекту большого манипулятора из оргстекла (часть 1, часть 2, часть 3) и решили адаптировать материалы по миниатюрного манипулятора для пользователей нашего ресурса.
В частности, в этой статье вы сможете найти список необходимых материалов для сборки, файлы для скачивания и подробную инструкцию.
Миниатюрный манипулятор Общий вид
Список комплектующих
Для сборки потребуется:
- Детали, напечатанные на 3D-принтере (файлы можно скачать по ссылкам в конце статьи)
- Сервоприводы. Достаточно четырех штук, но лучше сразу иметь запасной
- Винт М4х30 с широкой шляпкой, 1шт
- Винт М4х20 с широкой шляпкой, 7шт
- Винт М3х20 с шестигранной головой, 1шт
- Винт М3х14 с шестигранной головой, 7шт
- Штифт диаметром 4мм и длинной 20мм, 1шт
- Гайка М4 шестигранная с нейлоновым стопорным кольцом, 8шт
- Гайка М3 шестигранная с нейлоновым стопорным кольцом, 8шт
- Гайка М3 шестигранная, 4шт
- Шайба М4, 8шт
Порядок сборки
Желательно иметь под рукой какое-либо устройство, позволяющее электрически управлять устройством. Это может быть Arduino, хоббийный пульт управления или что-то еще на ваше усмотрение. Мы, конечно, рекомендуем наш специализированный тестер.
Все отверстия напечатанных деталей предварительно необходимо дополнительно рассверлить сверлом соответствующего диаметра.
В первую очередь необходимо собрать механический захват из деталей, показанных на рисунке.
Предварительно установите двигатель приблизительно в среднее положение. Рычаг из комплекта сервопривода придется укоротить. Затем соберите детали вместе также, как показано на рисунке в том же положении что и на рисунке.
Не следует при этом туго затягивать гайки. Клешни должны свободно двигаться друг относительно друга.

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

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

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

Винты устанавливаются с внутренней стороны П-образного основания и прикручиваются гайками. Затем устанавливается сервопривод и прижимаются планкой.

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

Далее устанавливаем основное плечо.

Сначала необходимо установить сам рычаг и вставить штифт в основание в качестве оси. Далее установить в паз качалку сервопривода и сам двигатель при помощи планки.

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

Затем, используя детали показанные на рисунке, требуется собрать систему тяг.

Винт М4х30 устанавливается в верхней части плеча.

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

Затем остается только установить захват и тягу, удерживающую его параллельно земле.

Сначала проще установить сам захват.

Далее требуется закрепить тягу в верхней части.

Если все собрано верно, то полностью собранное устройство будет выглядеть следующим образом:
Миниатюрный манипулятор. Вид слева
Миниатюрный манипулятор. Вид справа
Обратите внимание, что на фото все валы двигателей находятся приблизительно в среднем положении.
Файлы для скачивания
Мы будем очень рады, если вы поддержите наш ресурс и посетите магазин наших товаров shop.customelectronics.ru.
Вы можете сделать этот манипулятор самостоятельно, а можете приобрести его как набор.
Источник: www.customelectronics.ru
Дешевый и полнофункциональный робот-манипулятор своими руками
Сразу оговоримся, что совсем дешево делать не будем, т.к. не хочется убивать нервные клетки, делая доморощенные энкодеры для моторчиков + хочется упростить создание 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 и программировать любые крутые штуки. Но это уже рассказ для отдельной статьи (и не одной). Данное же повествование подошло к концу, спасибо за внимание!
- Разработка робототехники
- Робототехника
Источник: habr.com