Платформа робот своим руками

Дешевый и полнофункциональный робот-манипулятор своими руками

Сразу оговоримся, что совсем дешево делать не будем, т.к. не хочется убивать нервные клетки, делая доморощенные энкодеры для моторчиков + хочется упростить создание 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 и программировать любые крутые штуки. Но это уже рассказ для отдельной статьи (и не одной). Данное же повествование подошло к концу, спасибо за внимание!

Источник

Строим гусеничного Bluetooth-робота с камерой. Часть 1

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

Я всегда мечтал создать робота, которым можно управлять с помощью компьютера и смотреть за его перемещениями от первого лица.
Весь процесс я условно разделил на три части:
1. Сборка робота
2. Программирование боротового микроконтроллера
3. Программирование управления с ПК

Полагаю, что наиболее интересной эта тема будет тем, кто хотел бы построить такого робота, но не хватает знаний в отдельных моментах. (Тем, кто хорошо разбирается в роботостроении, электронике и программировании, ничего нового я не открою). Поэтому рассказывать буду максимально подробно и просто.
Вообще говоря, робота можно купить и готового, но
-во-первых это не так интересно — сам процесс создания робота своими руками доставляет огромное удовольствие
-во-вторых при покупке готового робота переделать его под свои интересы часто довольно сложно, если вообще возможно
-и наконец, при грамотном подходе, самостоятельно сделать робота может оказаться дешевле.
Мы будем использовать максимально дешевые, но готовые узлы, потому что сборка с нуля не каждому интересна, более сложна и рискует надоесть затянувшемся на месяцы процессом :).
Если робота хочется не просто заполучить на поиграться, а именно сделать самому, тогда поехали!
Робот самостоятельно не принимает решений, то есть это управляемое с ПК шасси, которое выполняет команды и передает видеосигнал. Однако, доработать его до самостоятельного робота не составляет никакого труда — нужно лишь добавить сенсоры и дописать логику бортового компьютера. Платформа на это рассчитана.
Нам понадобится:
Для гусеничного шасси
1. Двухмоторная коробка с редуктором — Tamiya Twin Motor Gearbox (TAM70097)

2. Гусеницы и катки с осями — Tamiya Track and Wheel Set (TAM70100)

3. Платформы и крепеж — Tamiya Universal Plate Set (2) (TAM70157)

Читайте также:  Как сшить шторки для кухни своими руками

из этого дефицитом в России является только пункт 2.
Купить остальное можно в Терраэлектронике (70097 — 520р, 70157 — 385р)
Или в официальном магазине Tamiya. Если будете покупать в нем, то берите гусеничное шасси (630р) и коробку (390р). Вам останется про запас коробка с одним мотором.
Дело в том, что нам нужна коробока с двумя моторами, чтобы робот мог ехать не только прямо, но и поворачивать, раздельно управляя гусеницами.
Поскольку в Москве купить все в одном месте не удалось, а бегать и искать не хотелось, то я все это заказал на ebay у единственного продавца, который по нормальной цене доставляет в Россию. Обошелся комплект примерно в $37.5 с доставкой.
Также можно найти эти запчасти на pololu.com. Там подороже и не всегда в наличии.
Вместо платформы с отверстиями вполне можно использовать кусок фанеры, а для крепежа металлический конструктор, который продается в детском мире примерно за 200-400 рублей (есть несколько наборов).

В общем, самое главное — это гусеницы и мотор-редукторы.

Бортовая электроника
1. Arduino Duemillanove/ Freeduino 2009 — мозг нашего робота —

на ebay от $17.60.
Я брал на freeduino.ru, довольно давно и за 950р.
Для робота вполне достаточно на базе Atmega168 (дешевле чем Atmega328P), если вы не собираетесь писать очень навороченную логику робота или использовать Arduino как и я для других экспериментов, которым 16кБ флэш памяти может не хватить.
2. Силовой модуль Motor Shield V2 или V3 для управления моторами

На ebay от $10.5, старая версия и без гребенок для установки следующего этажа шилдов.
на Freeduino.ru от 600р в виде конструктора до 900 р в собранном виде. Советую v3 — она более гибкая.
3. Sensor shield V4 — удобный модуль для подключения сенсоров и сервоприводов. Если вас не пугает пучок проводов, то он нафиг не нужен. Я купил его для экспериментов, поэтому воткнул для удобства.

порядка $8 на ebay
4. SmartBluetooth модуль. Понадобится для связи с ПК или ноутбуком.

на ebay от $9.9. Я брал давно и мне он обошелся аж в $23
5. Bluetooth dongle — если будете управлять с ПК и Bluetooth интерфейса в нем нет, то нужно купить.
цена — $2.7
Итого $40.7 если обойтись без Sensor shield, но с bluetooth dongle для ПК.

Нам также понадобится питание для Arduino и моторов. Вы можете воспользоваться обычными АА батарейками в таком вот отсеке, купив его на рынке или в ЧипИДипе, если очень срочно.

«RPMS & AA»
или 9В батарейкой типа «Крона».
Я предпочитаю компактные и более удобные LiPoly аккумуляторы:

или 2 LiIon элемента 18650, соединенных последовательно.

Этого комплекта достаточно, чтобы сделать робота с базовым функционалом, поэтому я бы предложил в этом месте сделать паузу, выбрать где и что вы будете заказывать, сделать заказы или съездить по магазинам, а пока заказ будут доставлять, заняться видеоподсистемой.
При заказе в основном из китая все компоненты вы получите примерно через 2-3 недели и обойдется все в $80-100, в зависимости от выбранного продавца или вашего желания поторговаться и сэкономить, может быть и дешевле. Если покупаете несколько товаров у одного продавца, просите комбинировать доставку, на этом можно сэкономить. Так называемая «бесплатная доставка» (free shipping) просто включена в стоимость и хороша, если покупаете один предмет.

Собираем шасси
Комплект Tamiya 70100 идет с подробной инструкцией. Аккуратно вырезаем кусачками или канцелярским ножом резиновые гусеницы и катки, отделяя от литников, собираем и крепим с помощью винтиков М3х10 к фанерной площадке или если купили Tamiya universal plate set, то комплектными клинышками, они многоразовые, так что ничего страшного, если сначала что-то не туда воткнете.
Затем собираем коробку моторов с редукторами TAM70097. У нее есть 2 варианта передаточных чисел. 58:1 ездит очень и очень шустро, но моторчики на малых оборотах не тянут и жалобно стонут, а после того, как нагрузим платформу, могут вообще еле ворочаться. Рекомендую собирать в варианте 201:1, так наш «танк» не будет убегать из поля зрения и будет двигаться более плавно. Правда шуму от бешено вращающихся шестерней будет побольше. Ведущие шестерни шасси насаживаем на шестигранные оси коробки.
Для проверки работоспособности достаточно подать питание от 2 батареек на моторчики просто конснувшись проводками контактов мотора. Теперь нужно подпаять по паре проводков к моторчикам. Сантиметров по 10-15 будет достаточно.
Затем с помощью деталей от конструктора я закрепил вторую площадку для крепления электроники. В принципе, можно и в один этаж делать, просто там места маловато и работать не очень удобно, но вполне возможно.
На второй этаж винтиками М3х10 крепим Arduino/Freeduino (она не совсем совпадает по отверстиям и становится чуть-чуть по диагонали). Вторым этажом вставляем MotorShield. Через отверстия в площадке пропускаем провода от моторчиков и крепим провода в порт М3 и М4 — крайние винтики, средний остается неиспользованным (он для шаговых двигателей). Полярность подключения моторов значения пока не имеет, ее потом можно поменять или задать программно, так что не бойтесь перепутать.
Bluetooth модуль пока просто прикиньте куда воткнуть или прикрепите к верхнему этажу канцелярской резинкой. Я его даже распаковывать не стал — вспененная упаковка послужит ему механической защитой, а заодно и не позволит замкнуть контакты случайно.

Читайте также:  Мишень для тепловизионного прицела своими руками

Получится примерно вот такой бутерброд:

«RC Tank chassis»
Откройте полноразмерную картинку, чтобы рассмотреть получше что и как соединено, если возникли трудности со сборкой и подключением. Arduino крепите USB портом к краю платформы, чтобы удобнее потом было подключать кабель и программировать не снимая с робота.
Работы всего на пару часов, если делать не торопясь.

Видеоподсистема
Чтобы покататься с изображением от первого лица нам понадобится миниатюрная видеокамера, радиопередатчик (трансмиттер) и приемник (ресивер).
Вариантов огромное множество. В том числе дойти до рынка и купить в магазине шпионских штучек или аппаратуры видеонаблюдения китайскую радиокамеру. Обойдется скорее всего в 2-4 тыр вместе с ресивером.
Но гораздо дешевле заказать из Китая.
Рекомендую брать на 1.2 ГГц, а не 2.4ГГц, чтобы избежать помех bluetooth модулю и WiFi, работающим на 2.4ГГц
Например вот такой комплект:

обойдется чуть больше $30. Есть и дешевле, в зависимости от камеры в комплекте.
На ebay можно купить точно такое же или с камерой в металлическом корпусе как на картинке с коробки.
Качество изображения у всех этих CMOS камер весьма так себе (380ТВЛ и те довольно мыльные и с низким динамическим диапазоном и высокими шумами при слабом освещении). Поэтому я заказал на hobbyking.com камеру на ПЗС матрице Sony с разрешением 420ТВЛ и чувствительностью получше, что позволяет даже под столом без дополнительной подсветки видеть что проиходит.

А также крепление для нее с поворотом и наклоном:

Как гласит надпись на картинке — сервоприводы в комплект не входят, поэтому заказываем недорогие 9граммовые сервы. Нам понадобится 2 штуки, 3я останется про запас, если сломаем.
У меня камера от 9В работать не хочет, поэтому приходится питать ее от отдельного аккумулятора на 11.1В.
Приемник и передатчик использовал из недорогого комплекта, показанного выше. (Передатчик пробовал более мощный — на 800мВт, но он прилично греется, громоздкий с радиатором и мощность такая, что вызывает наводки на сервоприводах камеры).
Можно подключить ресивер к телевизору, но управлять с компьютера, а смотреть в телевизор не слишком удобно (разве что купить портативный). Поэтому нам понадобится устройство видеозахвата.
Благо стоит оно недорого, очень компактное, питается от USB порта, все кабели и софт в комплекте:

Из мелочей полезно иметь выключатель, чтобы не мучаться с выключением, выдергивая коннектор питания и комплект коннекторов male и female
Вот собственно и все, что нам понадобится.
Вариантов где купить и как сэкономить предостаточно, есть и другие, но статья получится бесконечной, если пытаться перечислить все.
Собирать все это довольно увлекательно и совсем не так сложно, как может показаться на первый взгляд.
Но окончательной сборкой и настройкой мы займемся в следующей части, а пока нужно купить все необходимое и собрать шасси. 🙂
Удачных покупок!

UPD Ко мне не раз обращались по поводу стоимости.
Чтобы не было недоразумений, сведу воедино:
1. Шасси — я купил на ebay за $37.5с доставкой. В Москве все компоненты есть в Terraelectronica:
70097 (мотор-редукторная коробка) — 514р
70157 (2 платформы+крепеж) — 381р
70100 (гусеницы и колеса) — 571р
Итого шасси в Москве 1466 р (

2. Электроника — $40.7 если обойтись без Sensor shield, но с bluetooth dongle для ПК. Все из Китая.
3. Видеоподсистема — от $27 на DealExtreme.

Источник

Оцените статью
Своими руками