- Настольная робо-рука манипулятор из оргстекла на сервоприводах своими руками или реверс-инжиниринг uArm
- Пробы и ошибки
- Особенности манипулятора
- Механика
- Электроника
- Программирование
- Видео работы
- Воронка своими руками и подогрев еды без камина. Популярные лайфхаки в действии
- Греем, охлаждаем, открываем
- Маленькие секреты хорошего пилотажа
- Бонус: никакой пыли!
- Безопасность – это важно!
- Дешевый и полнофункциональный робот-манипулятор своими руками
- Конкурентные решения на рынке
- Что же нам нужно купить?
- Сборка
- Делаем 3D модель
- А что с реальной рукой?
- Как подвигать наш манипулятор?
Настольная робо-рука манипулятор из оргстекла на сервоприводах своими руками или реверс-инжиниринг uArm
Хочу поделиться с вами результатами реверс-инжиниринга uArm – простого настольно манипулятора из оргстекла на сервоприводах.
Проект uArm от uFactory собрал средства на кикстартере уже больше двух лет назад. Они с самого начала говорили, что это будет открытый проект, но сразу после окончания компании они не торопились выкладывать исходники. Я хотел просто порезать оргстекло по их чертежам и все, но так как исходников не было и в обозримом будущем не предвиделось, то я принялся повторять конструкцию по фотографиям.
Сейчас моя робо-рука выглядит так:
Работая не спеша за два года я успел сделать четыре версии и получил достаточно много опыта. Описание, историю проекта и все файлы проекта вы сможете найти под катом.
Пробы и ошибки
Начиная работать над чертежами, я хотел не просто повторить uArm, а улучшить его. Мне казалось, что в моих условиях вполне можно обойтись без подшипников. Так же мне не нравилось то, что электроника вращается вместе со всем манипулятором и хотелось упростить конструкцию нижней части шарнира. Плюс я начал рисовать его сразу немного меньше.
С такими входными параметрами я нарисовал первую версию. К сожалению, у меня не сохранилось фотографий той версии манипулятора (который был выполнен в желтом цвете). Ошибки в ней были просто эпичнейшие. Во-первых, ее было почти невозможно собрать. Как правило, механика которую я рисовал до манипулятора, была достаточно простая, и мне не приходилось задумываться о процессе сборки. Но все-таки я его собрал и попробовал запустить, И рука почти не двигалась! Все детли крутились вокруг винтов и, сли я затягивал их так, чтобы было меньше люфтов, она не могла двигаться. Если ослаблял так, чтобы она могла двигаться, появлялись невероятные люфты. В итоге концепт не прожил и трех дней. И приступил к работе над второй версией манипулятора.
Красный был уже вполне пригоден к работе. Он нормально собирался и со смазкой мог двигаться. На нем я смог протестировать софт, но все-таки отсутствие подшипников и большие потери на разных тягах делали его очень слабым.
Затем я забросил работу над проектом на какое-то время, но вскоре принял решении довести его до ума. Я решил использовать более мощные и популярные сервоприводы, увеличить размер и добавить подшипники. Причем я решил, что не буду пытаться сделать сразу все идеально. Я набросал чертежи на скорую руки, не вычерчивая красивых сопряжений и заказал резку из прозрачного оргстекла. На получившемся манипуляторе я смог отладить процесс сборки, выявил места, нуждающиеся в дополнительном укреплении, и научился использовать подшипники.
После того, как я вдоволь наигрался с прозрачным манипулятором, я засел за чертежи финальной белой версии. Итак, сейчас вся механика полностью отлажена, устраивает меня и готов заявить, что больше ничего не хочу менять в этой конструкции:
Меня удручает то, что я не смог привнести ничего принципиально нового в проект uArm. К тому времени, как я начал рисовать финальную версию, они уже выкатили 3D-модели на GrabCad. В итоге я только немного упростил клешню, подготовил файлы в удобном формате и применил очень простые и стандартные комплектующие.
Особенности манипулятора
Механика
Для сборки необходимо вырезать детали из оргстекла толщиной 5мм:
С меня за резку всех этих деталей взяли около $10.
Основание монтируется на большом подшипнике:
Особенно трудно было продумать основание с точки зрения процесса сборки, но я подглядывал за инженерами из uArm. Качалки сидят на штифте диаметром 6мм. Надо отметить, что тяга локтя у меня держится на П-образном держателе, а у uFactory на Г-образном. Трудно объяснить в чем разница, но я считаю у меня получилось лучше.
Захват собирается отдельно. Он может поворачиваться вокруг своей оси. Сама клешня сидит прямо на валу двигателя:
В конце статьи я дам ссылку на суперподробную инструкцию по сборке в фотографиях. За пару часов можно уверенно все это скрутить, если все необходимое есть под рукой. Также я подготовил 3D-модель в бесплатной программе SketchUp. Её можно скачать, покрутить и посмотреть что и как собрано.
Электроника
Чтобы заставить руку работать достаточно всего навсего подключить пять сервоприводов к Arduino и подать на них питание с хорошего источника. У uArm использованы какие-то двигатели с обратной связью. Я поставил три обычных двигателя MG995 и два маленьких двигателя с металлическим редуктором для управления захватом.
Тут мое повествование тесно сплетается с предыдущими проектами. С некоторых пор я начал преподавать программирование Arduino и для этих целей даже подготовил свою Arduino-совместимую плату. С другой стороны как-то раз мне подвернулась возможность дешево изготовить платы (о чем я тоже писал). В итоге все это закончилось тем, что я использовал для управления манипулятором свою собственную Arduino-совместимую плату и специализированный шилд.
Этот шилд на самом деле очень простой. На нем четыре переменных резистора, две кнопки, пять разъемов для сервопривода и разъем питания. Это очень удобно с точки зрения отладки. Можно загрузить тестовый скетч и записать какой-нибудь макрос для управления или что-нибудь вроде того. Ссылку для скачивания файла платы я тоже дам в конце статьи, но она подготовлена для изготовления с металлизацией отверстий, так что мало пригодна для домашнего производства.
Программирование
Самое интересное, это управление манипулятором с компьютера. У uArm есть удобное приложение для управления манипулятором и протокол для работы с ним. Компьютер отправляет в COM-порт 11 байт. Первый из них всегда 0xFF, второй 0xAA и некоторые из оставшихся — сигналы для сервоприводов. Далее эти данные нормализуются и отдаются на отработку двигателям. У меня сервоприводы подключены к цифровым входам/выходам 9-12, но это легко можно поменять.
Терминальная программа от uArm позволяет изменять пять параметров при управлении мышью. При движении мыши по поверхности изменяется положение манипулятора в плоскости XY. Вращение колесика — изменение высоты. ЛКМ/ПКМ — сжать/разжать клешню. ПКМ + колесико — поворот захвата. На самом деле очень удобно. При желании можно написать любой терминальный софт, который будет общаться с манипулятором по такому же протоколу.
Я не буду здесь приводить скетчи — скачать их можно будет в конце статьи.
Видео работы
И, наконец, само видео работы манипулятора. На нем показано управление мышью, резисторами и по заранее записанной программе.
Источник
Воронка своими руками и подогрев еды без камина. Популярные лайфхаки в действии
Общаешься с опытными и не очень водителями и понимаешь: многие вроде бы известные всем вещи и элементарные приемы для них оказываются в диковинку. Что же, мы решили собрать автомобильные лайфхаки и показать их на примере Kia Rio X.
Греем, охлаждаем, открываем
Допустим, вы купили шаурму – как довезти ее до дома горячей? Вы же знаете: у Rio X есть камин! Очень красивый, жаль, что не греет.
Выручит мощный подогрев сидений: включаем его, кладем шаурму, накрываем одеждой. Разогреть не разогреем, но температуру сохраним.
А как довезти холодными в жару напитки и продукты? Просто кладем пакет с продуктами под пассажирское кресло (со стороны второго ряда), включаем кондиционер и направляем воздух в ноги – там будет холодильник!
Напитки охлаждены, но как открыть стеклянную бутылку с металлической пробкой? С помощью замка на ремне безопасности. Это же два в одном: замок и «открывашка»! Говорим же: поистине универсальный автомобиль!
Маленькие секреты хорошего пилотажа
Энергоемкая подвеска и большой клиренс делают Kia Rio X малочувствительным к качеству дорог. Но есть различные приемы, которые позволяют уверенно продолжать движение в самых разных ситуациях.
Начнем с простого. Как разгрузить подвеску, чтобы автомобиль легче проскочил через «лежачего полицейского»? Подъезжая к нему, делаем короткое, но плавное торможение, а за пару метров до искусственной неровности отпускаем тормоз и нажимаем на «газ». Передние колеса сначала загружаются, затем разгружаются – и если вы все сделали своевременно, машина легко перескакивает через «полицейского».
Подобный прием может пригодиться и вне асфальта. Но там порой встречаются куда более серьезные препятствия, которые даже с большим дорожным просветом стоить преодолевать осторожно. Проезжайте их по диагонали! Так меньше риск зацепиться бампером или днищем. А еще вам в помощь ESP, которая может имитировать работу межколесных блокировок.
Допустим, хорошая дорога постепенно превратилась в плохую, вы решаете развернуться, но места для этого нет. Используя «ручник», вы можете значительно уменьшить радиус разворота и «крутануться» в один прием. Важный момент: прием специфический, для его безопасного выполнения требуется тренировка на ровной закрытой площадке.
Для разворота выбираем правильную скорость (для гравия это порядка 15 км/ч), отпускаем «газ», поворачиваем руль не более чем на пол-оборота и резким движением затягиваем «ручник» – кнопку на рычаге продолжаем держать нажатой! По мере разворота автомобиля выравниваем передние колеса (они должны «смотреть», куда нам ехать), чуть заранее опускаем рычаг (машина довернется по инерции) и плавно нажимаем на «газ», чтобы продолжить движение уже по прямой.
Бонус: никакой пыли!
Что делать, чтобы пыль не летела в салон на запыленной гравийной дороге? Включаем вентилятор системы обдува на большие обороты, создаем избыточное давление. Включаем рециркуляцию. Кстати, в Rio и Rio X климатическая система сама распознает подобные ситуации и автоматически переходит в соответствующий режим.
Безопасность – это важно!
Допустим, бабулька рванула через дорогу. Или лось. Или другой какой олень. В общем, надо экстренно тормозить. Как это сделать? БЫСТРО перебрасываем ногу с «газа» на тормоз и ЖЕСТКО по нему бьем. Не гладим, а быстро, резко ударяем по педали тормоза – так мы выиграем пару метров даже на городской скорости.
Источник
Дешевый и полнофункциональный робот-манипулятор своими руками
Сразу оговоримся, что совсем дешево делать не будем, т.к. не хочется убивать нервные клетки, делая доморощенные энкодеры для моторчиков + хочется упростить создание 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 и программировать любые крутые штуки. Но это уже рассказ для отдельной статьи (и не одной). Данное же повествование подошло к концу, спасибо за внимание!
Источник