- Дешевый и полнофункциональный робот-манипулятор своими руками
- Конкурентные решения на рынке
- Что же нам нужно купить?
- Сборка
- Делаем 3D модель
- А что с реальной рукой?
- Как подвигать наш манипулятор?
- Как собрать робота своими руками за 6 часов и стать душой компании
- Сначала была паранойя
- Важно! О мелких деталях
- Процесс сборки
- Как стать душой компании при помощи робота
- Troubleshooting
- Что можно воспитать благодаря данному набору?
- Итоги
Дешевый и полнофункциональный робот-манипулятор своими руками
Сразу оговоримся, что совсем дешево делать не будем, т.к. не хочется убивать нервные клетки, делая доморощенные энкодеры для моторчиков + хочется упростить создание 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) Опционально (но я очень рекомендую): Лабораторный источник питания
Сборка
Отлично! Мы закупили все, что нам нужно (вероятно, дольше всего ждали доставки моторчиков, мне их везли больше месяца).
1) Напечатаем детали для манипулятора на 3D принтере.
Качаем STL файлы отсюда
2) Собираем воедино с моторчиками. Проблем со сборкой быть не должно, но если они вдруг появятся, можно воспользоваться вот этой инструкцией
Делаем 3D модель
Класс! Рука у нас есть, но ведь ей же нужно как-то управлять. Хочется максимально использовать достижения человечества, поэтому установим себе ROS.
Для того, чтобы полноценно работать с манипулятором в ROS – нужно сделать его URDF модель. Она будет нам необходима для того, чтобы управлять робо-рукой с помощью пакета MoveIT!
На момент написания статьи последняя стабильная сборка доступна для Melodic/Ubuntu 18.04, чем и объясняется мой выбор версии системы и фреймворка в начале статьи.
Построение URDF модели – довольно трудоемкая (и, на мой взгляд, самая скучная) часть данного проекта. Нужно немного допилить напильником stl модели компонентов и соединить их воедино в XML-образном файле, вручную подбирая правильные коэффициенты смещения деталей друг относительно друга.
Кто хочет – может проделать работу самостоятельно, всем остальным поберегу нервы и просто дам ссылку на свой готовый файл:
В данной модели пока нет захватывающего устройства, однако, до того момента, чтобы захватывать предметы в реальном мире нам еще далеко. Для остальных задач этой модели более чем достаточно.
Выглядит модель вот так:
Из полученного URDF файла мы сделаем конфиг MoveIT!, который позволит нам моделировать движения манипулятора и отправлять управляющие команды на реальную робо-руку.
Для создания конфига есть отличный туториал (ссылка)
Тут я могу опять сэкономить время и предоставить свой конфиг. Лежит он вот тут:
Можно скачать конфиг с гитхаба и запустить следующей командой:
Примерно так можно будет управлять нашей реальной робо-рукой через 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. Таким образом, начало файла с вашей программой будет выглядеть примерно вот так:
3) Все наши моторчики соединены друг с другом последовательно. Значит, чтобы обращаться к каждому из них — нужно знать его ID? Это действительно так, объект DynamixelMotor при инициализации получает два параметра: interface (одинаков для всех, его мы задали в предыдущем пункте) и id (должен быть у всех разный, иначе поведение будет у манипулятора весьма странное)
Id каждому моторчику придется задать вручную. Кажется, что будучи соединенными последовательно, они могли бы и сами рассчитаться по номерам от 1 до 6, но этого не предусмотрено. Поэтому нужно каждый моторчик отдельно подключить к Arduino (отключив от остальных) и выполнить следующую программу:
Изначально все моторчики имеют именно поэтому мы и указываем вверху
NEW_ID для каждого моторчика нужно заменить на число от 1 до 6 (да, ок, первый моторчик можно не трогать). Нумеруем их в порядке от нижнего к верхнему.
Ура! у нас есть полноценный манипулятор, который мы можем двигать, а также имеется 3D модель к нему. Можно брать ROS и программировать любые крутые штуки. Но это уже рассказ для отдельной статьи (и не одной). Данное же повествование подошло к концу, спасибо за внимание!
Источник
Как собрать робота своими руками за 6 часов и стать душой компании
Сейчас уже мало кто помнит, к сожалению, что в 2005 году были Chemical Brothers и у них был замечательный клип — Believe, где роботизированная рука гонялась по городу за героем видео.
Тогда у меня появилась мечта. Несбыточная на тот момент, т. к. ни малейшего понятия об электронике у меня не было. Но мне хотелось верить — believe. Прошло 10 лет, и буквально вчера мне удалось впервые собрать своего собственного робота-манипулятора, запустить его в работу, затем сломать, починить, и снова запустить в работу, а попутно найти друзей и обрести уверенность в собственных силах.
Внимание, под катом спойлеры!
Всё началось с этого набора (привет, Мастер Кит, и спасибо, что разрешили написать в вашем блоге!), который был почти сразу найден и выбран после этой статьи на Хабре. На сайте говорится, что собрать робота — под силу даже 8-летнему ребёнку — чем я хуже? Я точно так же только пробую свои силы.
Сначала была паранойя
Как истинный параноик, сразу выскажу опасения, которые у меня изначально были относительно конструктора. В моём детстве сперва были добротные советские конструкторы, потом рассыпающиеся в руках китайские игрушки… а потом детство кончилось:(
Поэтому из того, что осталось в памяти об игрушках, было:
- Пластмасса будет ломаться и крошиться в руках?
- Детали будут неплотно подходить друг к другу?
- В наборе будут не все детали?
- Собранная конструкция будет непрочной и недолговечной?
И, наконец, урок, который был вынесен из советских конструкторов:
- Часть деталей придётся допиливать напильником
- А части деталей просто не будет в наборе
- И ещё часть будет изначально не работать, её придётся менять
Что я могу сказать сейчас: не зря в моем любимом клипе Believe главный герой видит страхи там, где их нет. Ни одно из опасений не оправдалось: деталей было ровно столько, сколько нужно, все они подходили друг к другу, на мой взгляд — идеально, что очень сильно поднимало настроение по ходу работы.
Детали конструктора не только отлично подходят друг к другу, но также продуман тот момент, что детали почти что невозможно перепутать. Правда, с немецкой педантичностью создатели отложили винтиков ровно столько сколько нужно, поэтому терять винтики по полу или путать «какой куда» при сборке робота нежелательно.
Длина: 228 мм
Высота: 380 мм
Ширина: 160 мм
Вес в сборке: 658 гр.
Питание: 4 батарейки типа D
Вес поднимаемых предметов: до 100 гр
Подсветка: 1 светодиод
Тип управления: проводной дистанционный пульт
Примерное время сборки: 6 часов
Движение: 5 коллекторных моторов
Защита конструкции при движении: храповик
Подвижность:
Механизм захвата: 0-1,77»
Движение запястья: в пределах 120 градусов
Движение локтя: в пределах 300 градусов
Движение плеча: в пределах 180 градусов
Вращение на платформе: в пределах 270 градусов
Вам понадобятся:
- удлинённые плоскогубцы (не получится обойтись без них)
- боковые кусачки (можно заменить на нож для бумаги, ножницы)
- крестовая отвёртка
- 4 батарейки типа D
Важно! О мелких деталях
Кстати о «винтиках». Если вы сталкивались с подобной проблемой, и знаете, как сделать сборку ещё удобнее — добро пожаловать в комментарии. Пока что поделюсь своим опытом.
Одинаковые по функции, но разные по длине болты и шурупы достаточно чётко прописаны в инструкции, например, на средней фото внизу мы видим болты P11 и P13. А может P14 — ну, то есть, вот опять, я снова их путаю. =)
Различить их можно: в инструкции прописано, какой из них сколько миллиметров. Но, во-первых, не будешь же сидеть со штангенциркулем (особенно если тебе 8 лет и\или у тебя его попросту нет), а, во-вторых, различить их в итоге можно только, если положить рядом, что может не сразу прийти на ум (мне не пришло, хе-хе).
Поэтому заранее предупрежу, если надумаете собирать этого или похожего робота сами, вот вам подсказка:
- либо заранее присмотритесь к крепёжным элементам;
- либо купите себе побольше мелких винтов, саморезов и болтов, чтобы не париться.
Также, ни в коем случае не выбрасывайте ничего, пока не закончите сборку. На нижней фотографии в середине, между двумя деталями от корпуса «головы» робота — небольшое кольцо, которое чуть не полетело в мусор вместе с прочими «обрезками». А это, между прочим, держатель для светодиодного фонарика в «голове» механизма захвата.
Процесс сборки
К роботу прилагается инструкция без лишних слов — только изображения и чётко каталогизированные и промаркированные детали.
Детали достаточно удобно откусываются и зачистки не требуют, но мне понравилась идея каждую деталь обработать ножом для картона и ножницами, хотя это и не обязательно.
Сборка начинается с четырёх из пяти входящих в конструкцию моторов, собирать которые настоящее удовольствие: я просто обожаю шестерёночные механизмы.
Моторчики мы обнаружили аккуратно упакованными и «прилипшими» друг к другу — готовьтесь ответить на вопрос ребёнка, почему коллекторные моторчики магнитятся (можно сразу в комментариях! 🙂
Важно: в 3 из 5 корпусов моторчиков нужно утопить гайки по бокам — на них в дальнейшем мы посадим корпуса при сборке руки. Боковые гайки не нужны только в моторчике, который пойдёт в основу платформы, но чтобы потом не вспоминать, какой корпус куда, лучше утопите гайки в каждом из четырёх жёлтых корпусов сразу. Только для этой операции будут нужны плоскогубцы, в дальнейшем они не понадобятся.
Примерно через 30-40 минут каждый из 4х моторов оказался снабжён своим шестереночным механизмом и корпусом. Собирается всё не сложнее, чем в детстве собирался «Киндер-сюрприз», только гораздо интереснее. Вопрос на внимательность по фото выше: три из четырёх выходных шестерёнок черные, а где белая? Из её корпуса должны выходить синий и чёрный провод. В инструкции это всё есть, но, думаю, обратить на это внимание ещё раз стоит.
После того, как у вас на руках оказались все моторы, кроме «головного», вы приступите к сборке платформы, на которой будет стоять наш робот. Именно на этом этапе ко мне пришло понимание, что с шурупами и винтами надо было поступать более вдумчиво: как видно на фото выше, двух винтов для скрепления моторчиков вместе за счет боковых гаек мне не хватило — они уже были где-то мною же вкручены в глубине уже собранной платформы. Пришлось импровизировать.
Когда платформа и основная часть руки собраны, инструкция предложит вам перейти к сбору механизма захвата, где полно мелких деталей и подвижных частей — самое интересное!
Но, надо сказать, что на этом спойлеры закончатся и начнутся видео, так как мне нужно было ехать на встречу с подругой и робота, которого не удалось успеть закончить, пришлось захватить с собой.
Как стать душой компании при помощи робота
Легко! Когда мы продолжили сборку вместе, стало понятно: собирать робота самостоятельно — очень приятно. Работать над конструкцией вместе — приятно вдвойне. Поэтому смело могу рекомендовать этот набор для тех, кто не хочет сидеть в кафе за скучными разговорами, но хочет повидаться с друзьями и хорошо провести время. Более того, мне кажется, и тимбилдинг с таким набором — например, сборка двумя командами, на скорость — практически беспроигрышный вариант.
Робот ожил в наших руках сразу, как только мы закончили сборку. Передать вам наш восторг, я, к сожалению, не могу словами, но, думаю, многие меня здесь поймут. Когда конструкция, которую ты сам собрал вдруг начинает жить полноценной жизнью — это кайф!
Мы поняли, что жутко проголодались и пошли поесть. Идти было недалеко, поэтому робота мы донесли в руках. И тут нас ждал ещё один приятный сюрприз: робототехника не только увлекательна. Она ещё и сближает. Как только мы сели за столик, нас окружили люди, которые хотели познакомиться с роботом и собрать себе такого же. Больше всего ребятам понравилось здороваться с роботом «за щупальца», потому что ведёт он себя действительно как живой, да и в первую очередь это же рука! Словом, основные принципы аниматроники были освоены пользователями интуитивно. Вот как это выглядело:
Troubleshooting
По возвращении домой меня ждал неприятный сюрприз, и хорошо, что он случился до публикации этого обзора, потому что теперь мы сразу обговорим troubleshooting.
Решив попробовать подвигать рукой по максимальной амплитуде, удалось добиться характерного треска и отказа функциональности механизма мотора в локте. Сначала это меня огорчило: ну вот, новая игрушка, только собрана — и уже больше не работает.
Но потом меня осенило: если ты сам её только что собрал, за чем же дело стало? =) Я же прекрасно знаю набор шестерёнок внутри корпуса, а чтобы понять, сломался ли сам мотор, или просто недостаточно хорошо был закреплён корпус, можно не вынимая моторчика из платы дать ему нагрузку и посмотреть, продолжатся ли щелчки.
Вот тут-то мне и удалось почувствовать себя настоящим робо-мастером!
Аккуратно разобрав «локтевой сустав», удалось определить, что без нагрузки моторчик работает бесперебойно. Разошёлся корпус, внутрь выпал один из шурупов (потому что его примагнитил моторчик), и если бы мы продолжили эксплуатацию, то шестерёнки были бы повреждены — в разобранном виде на них была обнаружена характерная «пудра» из стёршейся пластмассы.
Очень удобно, что робота не пришлось разбирать целиком. И классно на самом деле, что поломка произошла из-за не совсем аккуратной сборки в этом месте, а не из-за каких-то заводских трудностей: их в моём наборе вообще обнаружено не было.
Совет: первое время после сборки держите отвёртку и плоскогубцы под рукой — могут пригодиться.
Что можно воспитать благодаря данному набору?
Уверенность в себе!
Мало того, что у меня нашлись общие темы для общения с совершенно незнакомыми людьми, но мне также удалось самостоятельно не только собрать, но и починить игрушку! А значит, я могу не сомневаться: с моим роботом всегда всё будет ок. И это очень приятное чувство, когда речь идёт о любимых вещах.
Мы живём в мире, где мы страшно зависим от продавцов, поставщиков, сотрудников сервиса и наличия свободного времени и денег. Если ты почти ничего не умеешь делать, тебе за всё придётся платить, и скорее всего — переплачивать. Возможность починить игрушку самому, потому что ты знаешь, как у неё устроен каждый узел — это бесценно. Пусть у ребёнка такая уверенность в себе будет.
Итоги
Что понравилось:
- Собранный по инструкции робот не потребовал отладки, запустился сразу
- Детали почти невозможно перепутать
- Строгая каталогизация и наличие деталей
- Инструкция, которую не надо читать (только изображения)
- Отсутствие значимых люфтов и зазоров в конструкциях
- Лёгкость сборки
- Лёгкость профилактики и починки
- Last but not least: свою игрушку собираешь сам, за тебя не трудятся филиппинские дети
Что нужно ещё:
- Ещё крепёжных элементов, прозапас
- Детали и запчасти к нему, чтобы можно было заменить при необходимости
- Ещё роботов, разных и сложных
- Идеи, что можно улучшить\приделать\убрать — словом, на сборке игра не заканчивается! Очень хочется, чтобы она продолжалась!
Вердикт:
Собирать робота из этого конструктора — не сложнее, чем паззл или «Киндер-сюрприз», только результат гораздо масштабнее и вызываЛ бурю эмоций у нас и окружающих. Отличный набор, спасибо, Даджет!
В заключение, Хабр, у меня к тебе несколько вопросов:
- Как бы ты использовал собственный манипулятор?
- Как думаешь, можно ли что-то поменять или добавить в конструкции самого робота, чтобы не останавливаться и продолжать играть?
- Что, возможно, не было мною учтено в процессе сборки?
- Да и вообще, как тебе обзор? =)
Источник