Меню

Программируемые роботы своими руками

Как собрать робота своими руками за 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: свою игрушку собираешь сам, за тебя не трудятся филиппинские дети

Что нужно ещё:

  • Ещё крепёжных элементов, прозапас
  • Детали и запчасти к нему, чтобы можно было заменить при необходимости
  • Ещё роботов, разных и сложных
  • Идеи, что можно улучшить\приделать\убрать — словом, на сборке игра не заканчивается! Очень хочется, чтобы она продолжалась!
Читайте также:  Реставрация уплотнителя холодильника своими руками

Вердикт:

Собирать робота из этого конструктора — не сложнее, чем паззл или «Киндер-сюрприз», только результат гораздо масштабнее и вызываЛ бурю эмоций у нас и окружающих. Отличный набор, спасибо, Даджет!

В заключение, Хабр, у меня к тебе несколько вопросов:

  1. Как бы ты использовал собственный манипулятор?
  2. Как думаешь, можно ли что-то поменять или добавить в конструкции самого робота, чтобы не останавливаться и продолжать играть?
  3. Что, возможно, не было мною учтено в процессе сборки?
  4. Да и вообще, как тебе обзор? =)

Источник

Опыт создания первого робота на Ардуино (робот-«охотник»)

В данной статье я хочу описать процесс сборки своего первого робота на ардуино. Материал будет полезен другим таким же новичкам, как и я, которые захотят изготовить какую-нибудь «самобеглую тележку». Статья представляет собой описание этапов работы с моими дополнениями по различным нюансам. Ссылка на итоговый код (скорее всего, не самый идеальный) дана в конце статьи.

По мере возможности я привлекал к участию своего сына (8 лет). Что именно с ним получалось, а что нет — на это я выделил часть статьи, возможно, кому-то пригодится.

Общее описание робота

Вначале несколько слов о самом роботе (идея). Собирать что-то типовое на старте не очень хотелось. В то же время, набор компонентов был довольно стандартным — шасси, двигатели, ультразвуковой датчик, датчик линии, светодиоды, пищалка. Вначале из этого «супового набора» был придуман робот, который охраняет свою территорию. Он едет на нарушителя, который пересек линию круга, а потом возвращается в центр. Однако в этом варианте была нужна прочерченная линия, плюс лишняя математика, чтобы постоянно оставаться в круге.

Поэтому после некоторых обдумываний я несколько изменил идею и решил делать робота-«охотника». На старте он поворачивается вокруг своей оси, выбирая поблизости цель (человека). Если «жертва» обнаружена, «охотник» включает мигалку и сирену, и начинает ехать на нее. Когда человек отходит/отбегает, робот выбирает новую цель и преследует ее, и так далее. Такому роботу не нужен ограниченный круг, и он может работать на открытой территории.

Как видите, это во многом напоминает игру «догонялки». Хотя в итоге робот и не получился достаточно резвым, но он честно взаимодействует с окружающими его людьми. Особенно это нравится детям (иногда, правда, кажется, что они вот-вот растопчут его, аж сердце ёкает. ). Думаю, для популяризации технического конструирования это хорошее решение.

Структура робота

Итак, мы определились с идеей, перейдем к компоновке. Список элементов формируется из того, что должен уметь робот. Тут всё вполне очевидно, поэтому сразу посмотрим на нумерацию:

«Мозги» робота — плата arduino uno (1); была в заказанном из Китая наборе. Для наших целей ее вполне хватает (ориентируемся на количество используемых пинов). Из этого же набора мы взяли готовое шасси (2), на которое крепятся два ведущих колеса (3) и одно заднее (свободно вращающееся) (4). Также в наборе был готовый батарейный отсек (5). Спереди у робота стоит ультразвуковой датчик (HC-SR04) (6), сзади — драйвер двигателей (L298N) (7), по центру — светодиод-мигалка (8), и чуть в стороне — пищалка (9).

На этапе компоновки мы смотрим:

— чтобы все влезло
— чтобы было сбалансировано
— чтобы было рационально размещено

Частично это уже сделали за нас китайские коллеги. Так, тяжелый батарейный отсек поставлен в центр, и примерно под ним стоят ведущие колеса. Все остальные платы легкие, их можно размещать по периферии.

  1. В шасси из набора есть много заводских отверстий, но какая в них логика — я так и не разобрался. Двигатели и аккумуляторный блок закрепились без проблем, дальше началась «подгонка» со сверлением новых отверстий, чтобы закрепить ту или иную плату.
  2. Весьма выручили латунные стойки и прочий крепеж из запасников (иногда приходилось выкручиваться).
  3. Шины от каждой платы пропускал через зажимы (опять же нашел в запасниках). Весьма удобно, все провода лежат красиво и не болтаются.

Отдельные блоки

Теперь пройдусь по блокам и расскажу персонально про каждый.

Понятно, что робот должен иметь хороший источник энергии. Варианты могут быть разные, я выбрал вариант с 4 аккумуляторами АА. В сумме они дают примерно 5 В, и такое напряжение можно прямо подать на пин 5V платы arduino (минуя стабилизатор).

Некоторая настороженность, конечно, у меня была, но это решение вполне работоспособно.

Так как питание нужно везде, то для удобства я сделал по центру робота два разъема: один «раздает» землю (справа), а второй — 5 В (слева).

Двигатели и драйвер

Сначала про крепление двигателей. Крепление заводское, но сделано с большими допусками. Другими словами, двигатели могут «вихлять» на пару миллиметров влево-вправо. Для нашей задачи это не критично, а вот где-то может и влиять (робота начнет уводить в сторону). На всякий случай я выставил двигатели строго параллельно и зафиксировал клеем.

Для управления двигателями, как я писал выше, используется драйвер L298N. По документации у него три пина на каждый двигатель: один для изменения скорости и пара пинов для направления вращения. Тут есть один важный момент. Оказывается, если напряжение питания 5 В, то регулировка скорости просто не работает! То есть либо совсем не крутит, либо крутит по максимуму. Вот такая особенность, из-за которой я «убил» пару вечеров. В конце концов, нашел упоминание где-то на одном из форумов.

Вообще говоря, низкая скорость вращения мне требовалась при развороте робота — чтобы он имел запас времени просканировать пространство. Но, так как с такой задумкой ничего не вышло, пришлось делать по другому: небольшой поворот — остановка — поворот — остановка и т. д. Опять же, не столь изящно, но работоспособно.

Читайте также:  Рамка для картины плинтуса потолочного своими руками

Еще здесь добавлю, что после каждого преследования робот выбирает случайное направление нового поворота (по или против часовой стрелки).

Еще одна железяка, где пришлось искать компромиссное решение. Ультразвуковой датчик на реальных препятствиях дает нестабильные цифры. Собственно, это было ожидаемо. Идеально он работает где-нибудь на соревнованиях, где есть гладкие, ровные и перпендикулярные поверхности, а вот если перед ним «мелькают» чьи-то ноги — тут нужно вводить дополнительную обработку.

В качестве такой обработки я поставил медианный фильтр на три отсчета. Исходя из тестов на реальных детях (во время тестов ни один ребенок не пострадал!), его оказалось вполне достаточно для нормализации данных. Физика здесь простая: у нас есть сигналы, отраженные от нужных объектов (дающие требуемое расстояние) и отраженные от более далеких, например, стен. Вторые представляют собой случайные выбросы в измерениях вида 45, 46, 230, 46, 46, 45, 45, 310, 46… Именно их медианный фильтр и отсекает.

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

Мигалка и сирена

Пожалуй, самые простые элементы из всего перечисленного. Их видно на фотографиях выше. По железу здесь писать нечего, поэтому теперь перейдем к коду.

Программа управления

Расписывать детально код я смысла не вижу, кому нужно — ссылка в конце статьи, там всё достаточно читабельно. А вот общую структуру было бы неплохо объяснить.

Первое, что пришлось осмыслить: робот — это устройство реального времени. Точнее, вспомнить, потому что и раньше, и сейчас все равно занимаюсь электроникой. Значит, сразу забываем про вызов delay(), который очень любят использовать в скетчах-примерах, и который просто «замораживает» программу на указанный промежуток времени. Вместо этого, как советуют опытные люди, вводим таймеры на каждый блок. Прошел требуемый промежуток — выполнили действие (увеличили яркость светодиода, включили двигатель и так далее).

Таймеры могут быть взаимосвязаны. Так, например, пищалка работает синхронно с мигалкой. Это чуть упрощает программу.

Естественно, всё разбиваем на отдельные функции (мигалка, звук, поворот, движение вперед и так далее). Если так не делать, то потом уже не разобраться, что откуда и куда.

Нюансы педагогики

Все, что было описано выше, я делал в свободное время по вечерам. В неспешном режиме я потратил на робота где-то недели три. На этом можно было бы и завершиться, но я еще обещал вам рассказать о работе с ребенком. Что выполнимо в таком возрасте?

Работа по инструкции

Каждую деталь мы сначала проверяли отдельно — светодиоды, пищалка, моторы, датчики и т. д. Есть большое количество готовых примеров — какие-то прямо в среде разработки, другие можно найти в интернете. Это, несомненно, радует. Берем код, подключаем деталь, убеждаемся, что работает, далее уже начинаем изменять под свою задачу. Подключения по схеме и под некоторым моим контролем ребенок делает сам. Это хорошо. Работать четко по инструкции тоже надо уметь.

Порядок работы («от частного к общему»)

Вот это сложный пункт. Нужно приучать, что большой проект («сделать робота») состоит из мелких задач («подключить датчик», «подключить моторы». ), а те, в свою очередь, из еще более мелких шагов («найти программу», «подключить плату», «загрузить прошивку». ). Выполняя более-менее понятные задачи нижнего уровня, мы «закрываем» задачи среднего уровня, а из них уже складывается общий результат. Объяснял, но, думаю, осознание придет еще не скоро. Где-то, наверное, к подростковому возрасту.

Сверление, резьбы, винты, гайки, пайка и запах канифоли — куда же без этого. Ребенок получил базовый скилл «Работа с паяльником» — удалось спаять несколько соединений (я чуть-чуть помогал, не скрою). Не забывайте про объяснение техники безопасности.

Работа на компьютере

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

Первое: английский. В школе его только-только начали, поэтому мы «со скрипом» разбирали, что такое pishalka, migalka, yarkost и прочий транслит. Поняли хотя бы это. Я осознанно не стал использовать родные английские слова, так как до этого уровня мы еще не дошли.

Второе: эффективная работа. Учили горячие комбинации клавиш, как быстро выполнять типовые операции. Периодически, когда писали программу, мы менялись с сыном местами, и я говорил, что нужно сделать (замену, поиск и т.д.). Приходилось повторять снова и снова: «выдели двойным кликом», «зажми Shift», «зажми Ctrl» и так далее. Процесс обучения здесь не быстрый, но, я думаю, навыки постепенно отложатся «в подкорку».

Третье: слепая печать. Комментарии в коде я доверил печатать ребенку (пусть тренируется). Сразу поставили правильно руки, чтобы пальцы постепенно запоминали расположение клавиш.

Как видите, у нас все еще только-только начинается. Навыки и знания будем оттачивать и дальше, в жизни пригодятся.

Кстати, про перспективу…

Дальнейшее развитие

Робот сделан, ездит, мигает и пищит. Что же теперь? Воодушевившись достигнутым, мы планируем дорабатывать его дальше. Есть задумка сделать дистанционное управление — по типу лунохода. Было бы интересно, сидя за условным пультом, контролировать движение робота, который ездит совсем в другом месте. Но это уже будет отдельная история…

И в конце, собственно, герои этой статьи (видео по клику):

Источник