Введение:
В данном уроке, двигаясь по шагам, мы соберём робот «Манипулятор».
Видео:
Для сборки нам понадобится крепеж:
| Наименование | Количество, шт. | |
|---|---|---|
| 1 | Гайка М3 | 10 |
| 2 | Винт М3х6 | 9 |
| 3 | Винт М3х8 | 10 |
| 4 | Винт М3х10 | 5 |
| 5 | Винт М3х12 | 7 |
| 6 | Винт М3х20 | 4 |
Шаг 1
Список деталей к Шагу 1
Если Вы используете для сборки Микросервопривод MG90S, необходимо отклеить с него наклейки!!! в противном случае он будет очень туго устанавливаться, в результате чего можете поломать крепеж!
| Номер позиции | Количество | Название |
|---|---|---|
| 1 | 1 | Основание |
| 3 | 4 | М3х20мм винт |
| 4 | 4 | М3 гайка |
| 5 | 1 | Опорная пластина |
| 6 | 1 | Крепление |
| 7 | 1 | Сервопривод |
| 8 | 2 | М3×8мм винт |
Шаг 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
В собранном виде:
Сборка механики
- Комментарии
Перед началом сборки необходимо установить сервомоторы в центральное положение. Это можно сделать тремя способами.
Настройка вручную
Для такой настройки нужно надеть на шестерню сервомотора пластиковое плечо. Повернуть до упора в одну сторону, затем в другую. Понять, где ориентировочно находится центр и повернуть в это положение.
Важно. Большой минус этого способа — высокая вероятность сломать редуктор сервомотора!
Настройка с помощью тестера
Тестер сервомотора — это такой прибор для проверки работоспособности. Подойдет вариант из нашего интернет-магазина:
https://shop.robotclass.ru/item/869
У тестера есть три режима которые меняются по нажатию кнопки:
- Manual — устанавливает положение вала соответственно положению ручки;
- Neutral — поворачивает вал в среднюю (нейтральную) позицию;
- Auto — полностью поворачивает вал сервомотора сначала в одну сторону, а потом в другую.
Выбираем режим Neutral и подключаем тестер к сервомотору. Вал мотора автоматически поворачивается в центральное положение. После этого отключаем мотор и ставим его на место.
Настройка с помощью Arduino Uno
Здесь нам потребуется написать простую программу, которая будет выполнять всего одно действие при запуске — устанавливать положение вала сервомотора в центральное положение:
#include <Servo.h>Servo servo;
void setup() {
myservo.attach(11);
myservo.write(90);
}
void loop() {
}
Загружаем программу на Arduino. Подключаем сервомотор к контакту D11 на модуле джойстиков (см. главу Сборка электроники). После подачи питания на Arduino, мотор повернется в центральное положение. Отключаем мотор и ставим его на место.
Сборка основания
Необходимые детали: сервомотор с планкой крепления, площадку основания (самая большая деталь) и опору двигателя.
Устанавливаем сервомотор на опору.
Сверху надеваем планку крепления. Вставляем винты в отверстия по бокам планки и закручиваем гайки. Слишком сильно гайки не следует закручивать, иначе детали могут лопнуть.
Устанавливаем латунные стойки, с нижней стороны вкручиваем винты М3*6.
Сверху ставим опору с сервомотором и закручиваем винты.
Левая половина корпуса
К каждому сервоприводу идет маленький пакетик с набором крепежа для него. Достаем из него маленькое пластиковое плечо, винтик и саморез.
Вставляем пластиковое плечо в фанерную деталь ТЛ1 системы тяг.
Через отверстие в фанерной детали видны отверстия в пластиковом плече. Саморез нужно вкрутить в одно из этих отверстий.
Берем из набора следующую деталь тяги — ТЛ2 и соединяем их вместе при помощи винта и самоконтрящейся гайки. После затягивания гайки, детали должны свободно вращаться относительно друг друга.
Теперь берем детали боковой панели, изображенные на фото: сервомотор с планкой крепления, левая панель корпуса КЛ, два винта и две гайки.
Ставим сервомотор на боковую панель по знакомой нам схеме.
Убедимся, что вы сервомотор установлен так, что его шестерня находится ближе к правому краю детали.
Насаживаем конструкцию из двух тяг так, чтобы деталь ТЛ1 оказалась параллельной основанию робота.
Левая половина манипулятора собрана.
Правая половина корпуса
Подготавливаем необходимые элементы: сервомотор с планкой крепления, правая панель корпуса КП (самая большая деталь), тяга правая ТП1 и правая же часть первого плеча — П1П.
Устанавливаем элемент тяги ТП1. Не забываем, что затягивать «на смерть» не нужно.
Устанавливаем сервомотор. С обратной стороны это должно выглядеть так.
Закрепляем плечо сервомотора на детали П1П.
Насаживаем деталь на шестерню двигателя так, чтобы деталь встала строго вертикально, под 90 градусов к детали ТЛ1.
Центральная часть корпуса
В нижнюю панель корпуса КН устанавливаем плечо сервомотора.
Далее, нам нужно будет соединить левую и правую половину корпуса с помощью ребер жесткости КЖ. А в центре корпуса установим переборку КР, к которой будет крепиться левая часть первого плеча П1Л.
Собираем из указанных деталей корпус манипулятора.
Поворачиваем получающуюся коробочку на бок и вставляем снизу панель КН.
Должно получиться так:
Аналогичным образом устанавливаем правую панель корпуса КП. Стягиваем половинки и центральную переборку с помощью гаек которые располагаются в углублениях в стенках и винтов которые вставляются через боковые стороны манипулятора.
Сборка плечей
Поворачиваем элементы первого плеча так, чтобы они оказались параллельными друг другу, затем соединяем их ребром жесткости. Фиксируем на винты также, как и половинки манипулятора.
Собираем второе плечо робота и соединяем его с первым. При этом используем детали: левая часть второго плеча П2Л (самая длинная деталь), шарнирный узел тяг второго плеча ШУ (треугольник), правая часть второго плеча П2П и вторая правая тяга ТП2.
Сборка схвата
В одну из рамок механизма схвата, в два крайних отверстия вставляем два винта М3*12. Надеваем на них «клешни» и затягиваем гайки. Туго затягивать не нужно, клешни должны свободно вращаться.
В одной из клешней есть отверстие. Вставляем в него винт, устанавливаем шайбу и штангу. Затягиваем гайку. Затем, устанавливаем плечо сервомотора.
Берем вторую рамку схвата, сервомотор и детали через которые схват будет закреплен на манипуляторе.
Собираем как на фото ниже:
Вид с другой стороны.
Соединяем обе рамки винтами, закрепляем плечо на сервомоторе.
Вид снизу.
Вид сверху.
Можно проверить работу клешни тестером.
Остается только установить схват на манипулятор и сборка механической части завершена!
Проект SD1-4 представляет собой сборку робота-манипулятора, способного выполнять различные задачи в автоматизированных процессах. Робот состоит из четырех сегментов, каждый из которых оснащен моторами и сенсорами для точного управления и взаимодействия с окружающей средой. SD1-4 обладает гибкостью и точностью в выполнении задач, таких как сборка деталей, перемещение объектов и выполнение промышленных операций. Робот может быть программирован для выполнения различных задач с использованием специализированного программного обеспечения. Проект SD1-4 представляет собой инновационное решение для автоматизации производственных процессов и повышения эффективности работы.
Название: «Сборка робота-манипулятора SD1-4»
Тип: Научный проект
Объект исследования: Робот-манипулятор SD1-4
Предмет исследования: Технологии сборки роботов-манипуляторов
Методы исследования: Экспериментальные исследования, анализ данных, моделирование
Научная новизна: Разработка нового метода сборки робота-манипулятора SD1-4, оптимизация процесса сборки, улучшение характеристик робота
Цель проекта: Исследовать процесс сборки робота-манипулятора SD1-4 и оптимизировать его для повышения эффективности и качества производства
Проблема: Недостаточная эффективность и точность сборки роботов-манипуляторов, что приводит к увеличению времени производства и снижению качества продукции
Целевая аудитория: Инженеры, специалисты по робототехнике, студенты и преподаватели технических вузов
Задачи проекта:
1. Изучить существующие методы сборки роботов-манипуляторов
2. Разработать новый метод сборки робота-манипулятора SD1-4
3. Провести эксперименты для проверки эффективности нового метода
4. Оценить результаты и предложить рекомендации для улучшения процесса сборки
Добавить иллюстрации (beta)
Вы можете добавить изображения к проекту. Оплатите проект, дождитесь окончания генерации проекта, после чего выберите изображения.
Содержание
Введение
Изучение существующих методов сборки
- Анализ методов сборки роботов-манипуляторов
- Описание особенностей сборки робота-манипулятора SD1-4
Разработка нового метода сборки
- Определение основных этапов нового метода
- Проектирование процесса сборки робота-манипулятора SD1-4
Эксперименты и исследования
- Проведение экспериментов по сборке робота-манипулятора SD1-4
- Анализ результатов экспериментов
Оценка эффективности нового метода
- Сравнение нового метода с существующими
- Оценка преимуществ и недостатков нового метода
Заключение
Список литературы
План проекта готов, осталось его оплатить, чтобы сгенерировать файл. Объем проекта ~17 листов. Чтобы изменить объем, отредактируйте содержание. Время генерации 5-10 минут!
Оплатить 298 Р
Документация для модели RM001
Документация:
|
Инструкция по сборке модели робота-манипулятора RM001 М03 |
Скачать |
|
Лист комплектации конструктора для сборки робота-манипулятора модели RM001 М03 |
Скачать |
|
Инструкция по сборке модели робота-манипулятора RM001 М02 |
Скачать |
|
Лист комплектации конструктора для сборки робота-манипулятора модели RM001 М02 |
Скачать |
|
Устройство, управление, программирование робота-манипулятора «РобоИнтеллект» модели RM 001. Руководство пользователя и общая информация об устройстве |
Скачать |
|
Начало обучения программированию с RoboIntellect. Программируем робота на Python. |
Скачать |
|
Часто задаваемые вопросы при сборке учебного робота-манипулятора модели RM001, его настройке и подключению к компьютеру |
Открыть |
Пульт управления РТУ
| Windows | Linux | |
|---|---|---|
|
Скачать для amd64 Внимание: Пульт управления роботом совместим только с 64-разрядными версиями операционных систем |
Скачать deb-пакет для amd64 Внимание: если у вас был установлен deb-пакет rrc, то перед установкой нового deb-пакета robohand-remote-control необходимо удалить предыдущий — это можно сделать с помощью команды: sudo dpkg —remove rrc Внимание: Пульт управления роботом совместим только с 64-разрядными версиями операционных Linux систем основанных на Debian с архитектурой amd64. В данный момент корректно работает на версии Ubuntu 22.04 и выше |
Скачать deb-пакет для arm64 Внимание: если у вас был установлен deb-пакет rrc, то перед установкой нового deb-пакета robohand-remote-control необходимо удалить предыдущий — это можно сделать с помощью команды: sudo dpkg —remove rrc Внимание: Пульт управления роботом совместим только с 64-разрядными версиями операционных Linux систем основанных на Debian с архитектурой arm64 |
|
Если пульт управления не устанавливается на Linux см. ЧаВо пункт 20 |
||
| Инструкция по установке, обновлению и удалению ПО на Windows | Инструкция по установке, обновлению и удалению ПО на Linux |
Программирование:
-
Сервис блочного программирования RI Blockly
Открыть
-
Документация к библиотеке управления робототехникой RISDK
Открыть
Видеоинструкции:
Документация для модели RoboIntellect controller 001
Документация:
-
Руководство пользователя (datasheet)
Скачать
Видеоинструкции:
-
Видеоинструкция
Смотреть
-
Пример использования в проекте управления реле
Смотреть
Дешевый и полнофункциональный робот-манипулятор своими руками
Время на прочтение5 мин
Количество просмотров39K
Сразу оговоримся, что совсем дешево делать не будем, т.к. не хочется убивать нервные клетки, делая доморощенные энкодеры для моторчиков + хочется упростить создание 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 руб
2) 3D принтер
Подойдет любой простенький, можно уложиться в 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-образном файле, вручную подбирая правильные коэффициенты смещения деталей друг относительно друга.
Кто хочет – может проделать работу самостоятельно, всем остальным поберегу нервы и просто дам ссылку на свой готовый файл:
github.com/vladmiron85/armbot/blob/master/catkin_ws/src/armbot_description/urdf/base.urdf
В данной модели пока нет захватывающего устройства, однако, до того момента, чтобы захватывать предметы в реальном мире нам еще далеко. Для остальных задач этой модели более чем достаточно.
Выглядит модель вот так:
Из полученного URDF файла мы сделаем конфиг MoveIT!, который позволит нам моделировать движения манипулятора и отправлять управляющие команды на реальную робо-руку.
Для создания конфига есть отличный туториал (ссылка)
Тут я могу опять сэкономить время и предоставить свой конфиг. Лежит он вот тут:
github.com/vladmiron85/armbot/tree/master/catkin_ws/src/armbot_moveit_config
Можно скачать конфиг с гитхаба и запустить следующей командой:
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 id=1;
SoftwareDynamixelInterface 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()
{}
Изначально все моторчики имеют id=1, именно поэтому мы и указываем вверху
const uint8_t id=1;
NEW_ID для каждого моторчика нужно заменить на число от 1 до 6 (да, ок, первый моторчик можно не трогать). Нумеруем их в порядке от нижнего к верхнему.
Ура! у нас есть полноценный манипулятор, который мы можем двигать, а также имеется 3D модель к нему. Можно брать ROS и программировать любые крутые штуки. Но это уже рассказ для отдельной статьи (и не одной). Данное же повествование подошло к концу, спасибо за внимание!
