DIY: Clearwalker - самодельный робот-паук из акрила. Обзор готовых каркасов для создания роботов на Arduino


Для тех, кто решил проверить свои силы в области роботостроения и заодно желает изучить возможности платформы Ardunio, есть отличный способ это сделать, собрав робота-паука, который будет описан в этой статье. В качестве основных силовых элементов, благодаря которым робот будет передвигаться, являются сервоприводы. Что касается мозга, то здесь в качестве него выступает Arduino , а также Fischertechnik. По словам автора, робот получился довольно интересным и перспективным.

Материалы и инструменты для изготовления:
- набор лезвий;
- термоклей;
- дремель (нужны очень тонкие сверла);
- винтоверт;
- дрель со сверлом 7/32;
- крестообразная отвертка;
- лезвие;
- отсек для батареек;
- макетная плата.


Из электроники понадобится:
- восемь микросервоприводов с кронштейнами;
- 6 батареек типа АА и прищепка;
- много перемычек и контактных разъемов.

В качестве программной части будет нужна Arduino с блоком питания.

И запчастей необходим набор Fischertechnik.

Процесс изготовления робота. :

Шаг первый. Создаем каркас робота
Чтобы изготовить каркас понадобится набор Fischertechnik. Как он должен выглядеть, можно увидеть на фото. Для создания каркаса нужны три высоких «кирпичика», между ними должно иметься четыре отверстия. Конкретно в этой самоделке будет использоваться элемент с 11-ю вырезами. Важно убедится в том, чтобы все сервоприводы были рабочими.








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

Второй сервопривод устанавливается на другой стороне вспять.








Шаг третий. Установка одного серводвигателя на другой
В первую очередь нужно разобраться с элементами крепления сервоприводов. Если двигатель вращается в противоположную сторону, его нужно повернуть до упора вправо. Как это сделать, можно увидеть на фотографии.

Конкретно в данном случае винт сервопривода должен выступать над пластиком, благодаря этому он будет подвижным. В корпусе второго сервопривода нужно проделать углубление под головку винта.
Что










Что-бы соединить два сервопривода используется горячий клей.

Шаг четвертый. Подсоединяем ноги
Как изготовить ноги, можно увидеть на фото. Всего их должно быть четыре.






После того как ноги будут собраны и подсоединены к роботу, конструкция должна выглядеть так, как на фото.


Шаг пятый. Создание диаграммы для соотношения
Диаграмма нужна для того, чтобы понять, на какой угол способен поворачиваться каждый из сервоприводов. Далее каждому сервоприводу присваивается определенный номер, и уже на основе этого номера будет создаваться прошивка для робота.


Шаг шестой. Макетная плата
Нужно вытащить все 30 перемычек. Далее все нужно соединить проводами так, как указано на схеме. На каждом сервоприводе есть три контакта, один отвечает за заземление, через один подается питание, а еще один нужен для контроля двигателя.

Контакты сервопривода Vcc и GND нужно соединить с контактами макета Vcc и GND. Также к каналам макета GND и Vcc подключается источник питания мощностью 7.5В.

Провода для управления сервоприводом окрашены в оранжевый и желтый цвет. Они подключаются к контактам 2 и 9. К примеру, контакт от первого двигателя подключается ко второму контакту на Arduino. Второй двигатель подключается уже к третьему контакту и так далее.



Шаг седьмой. Настраиваем сервоприводы.
Теперь настало время создать программный код для робота. В первую очередь на Arduino нужно создать новый проект, чтобы синхронизировать двигатели. Как должен выглядеть код, можно увидеть на фото. Благодаря этому коду происходит выравнивание ног робота.


Чтобы паук мог подняться, нужно создать еще один проект под названием Up и Down. Благодаря этому коду ноги паука смогут двигаться вверх и вниз.


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


Ну и наконец, чтобы робот пошел, нужно скомбинировать переднюю и заднюю часть. Как можно отметить, программный код робота состоит из четырех блоков.

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

Прошивка: (скачиваний: 152)

Много чего предстоит сделать, прежде чем мы дойдем до вот этой картинки:

Опуская росказни о том, как именно я пришел к мысли построить гексапода (это были тонны видео на ютубе), перейду сразу к процессу выбора деталек. Это был январь 2012-го. Я сразу знал, чего я хочу от своего робота, а чего - нет. Я хотел:

Каждая нога должна иметь 3 степени свободы - 3dof (3 dimensions of freedom). Потому что более простой вариант 2dof - не дает такого ощущения насекомого, а 4dof - излишне, 3dof и так позволяет свободно перемещать кончик ноги в 3д пространстве;
- 6 ног; снова-таки, это уже не 4 (тогда робот неуклюже скачет), но и еще и не 8, как у пауков и уже чрезмерно;
- небольшой;
- дешевый;
- минимум плат и соединений;

Пост большой.

Первой конечно нужно было выбирать motherboard для крохи. Много как хорошего так и плохого успел почитать к тому времени об Arduino. Но именно на него и смотрел, как на основной вариант. Паять контроллеры самому - времени не было, а брать более продвинутые платы с ARM cpu, например - дорого, да и разбираться, как их программить, как работать с ШИМ выводами и т.п. А ардуина: IDE запустил, код напедалил, upload нажал - и привет, оно тебе уже моргает. Красота! ;)

Сначала я начал смотреть на arduino mega и клонов, т.к. кол-во ШИМ выходов, которыми можно рулить сервами у них было предостаточно. Напомню, что для 3dof гексапода нужно 3*6 = 18 сервов, и раздельных каналов управления ими. Но потом я нашел настоящий Яззь среди arduino mega, это плата от Dagu, звать которую Red Back Spider Controller. Вот она на ebay.

Она предлагает все свои выходы в виде готовых 3-х штырьков (земля, питание, сигнал), и разввязку по питанию. Питание самого контроллера стабилизировано, а на разъемы двиглов идет как есть (UPD: не как есть, а тоже стабилизированные 5 вольт. И повидимому развязано с питанием контроллера, т.к. помех в работу контроллера 18 одновременно работающих сервов не вносят). Это позволяет просто подать на клемму питания 7-30 вольт достаточной мощности (питальника от eee pc 901 на 12В и 3А - оказалось достаточно для жужжания всеми 18 сервами) и не морочить голову с раздельным питанием логики и двиглов. Также это позволит в будущем легко посадить все это чудище на пачку Li-Po аккумуляторов на 7.4 вольт. И при всем этом, с программной точки зрения - это обычная ардуино мега, совместимая с софтом и либами, да и железом (кроме шилдов, устанавливающихся прямо на оригинальную mega - они не покатят). Правда цена еще выше чем даже оригинальная мега, но все остальные плюсы перевесили это.

Далее сервоприводы. На ebay по запросу micro servo их много разных. Я взял самые мощные из самых маленьких и дешевых, весом 9 грамм, пластмассовыми редукторами. Если брать лоты где их пачками шлют - выходит дешевле. Я брал 3 пачки по 6 кажется, и вышло меньше $2 штука. Забегая вперед, скажу, что жалею что не потратил больше и не взял сервы с металлическими шестернями и шариковыми подшипниками. У этих пластмассовых оказались довольно заметные люфты, и характерный хруст при чрезмерном усилии когда шестерни проскакивают. Из-за люфтов - кинематику довольно тяжело настроить точно (да это вообще самое тяжелое оказалось).

Вот собственно и все что я заказал, с доставкой это вышло примерно $100. Батарейки и передатчики\приемники для контроля и радиоуправляемости - оставил на потом. Потому что радиоуправляемая машинка у меня есть и не интересна, а что меня действительно интересовало - это ноги! Видео плавно ходящих гексаподов на ютубе - завораживало , я смотрел его, пересматривал, и каждый раз слезы котились по щекам, и я сдавлено хрипел «хочу!». Хочу не заказать такую готовую штуку, а хочу сделать самому что-нибудь такое!

Пока ждал заказа, читал, как же просвященные люди оживляют свои творения. Конечно сразу же всплыла инверсная кинематика (перевод). Если сказать просто и сразу про шарнитные «конечности», то прямая кинематика - это когда на вход подаются углы шарниров, а на выходе мы имеем модель конечности в пространстве, и координаты крайней точки конечности. Обратная же кинематика - очевидно работает наоборот - на вход поступают координаты крайней точки конечности, куда нам надо дотянуться, а на выходе мы получаем углы, на которые нужно повернуть шарниры, чтобы это осуществить. Сервоприводы как раз получают на вход угловое положение, в которое им нужно повернуться (по одному сигнальному проводу, закодированное ШИМ / PWM).

Начал писать. Начал с того, о чем читал: продумывать реализацию ИК по методу, описанному там . Но быстро пришло ощущение, что для моего случая он чрезмерно сложен. Причем как громоздок в реализации, так и вычислительно очень сложен - расчет идет итеративно. А у меня 6 ног, для каждой из которых нужно считать ИК, и всего 16Мгц не самой шустрой архитектуры AVR. Но и всего 3 степени свободы. И несложно догадаться, что до произвольной точки в «области дотягивания» можно дотянуться только одним способом. Решение уже созрело в голове.

Но тут пришел февраль и посылки - одна из китая, другая из UK. Первым делом я конечно просто поигрался с платой ардуино - поморгал светодиодом и попиликал в подключеный туда динамик. Потом занялся реализацией собственно ИК, уже в железе. Для чего соорудил прототип ноги из подручных материалов (довольно мягкая пластмасска, которую легко резать ножницами, шурупы и насадки - все из комплектов сервоприводов). Эту ногу терминатора закрепил прямо на плату ардуины. Можно рассмотреть, как бюджетно выполнены сочленения.

Полюбовался на это дело, и помечтал, что если я на основе этого робота в будущем спаяю терминатора, который объявит войну человечеству, то потом Джон Коннор со Шварцнеггером вернутся ко мне сюда в прошлое, и отберут этот прототип и расплавят его в Ородруине. Но никто не вернулся, ничего не отобрал, и я спокойно продолжил.

Оказалось, что ИК совсем не нужно бояться, в моем случае все свелось к банальной геометрии-тригонометрии. Чтобы проще было обращаться к суставам, обратился к википедии и почитал про насекомых. У них есть специальные названия для элементов конечности:

На русском тоже есть свои и очень интересные названия для этого, но «тазик», «вертлуг», «голень» и т.п., находясь в коде, не давали бы мне заснуть. Потому я 3-х конечностям и соответствующим сервам оставил названия Coxa, Femur, Tibia. Из прототипа ноги выше видно, что у меня для coxa даже нет отдельной детали. Это просто два серва, скрепленных резинками. Femur - реализован полоской пластика, к которой с обоих сторон крепятся рычаги сервов. Таким образом, последний оставшийся серводвижок - является началом tibia, для удлинения которой к нему прикручен еще кусок пластика.

Запустил редактор, не мудствуя создал файл Leg.h, И в нем класс Leg. Ну и кучу вспомогательной мути.) Пускай в пространстве есть точка A(ax, ay, az), к которой нужно дотянуться. Тогда вид сверху выглядит так:

На рисунке я сразу показал и способ вычисления первого угла - это угол поворота серва, управляющего Coxa, вращающего всю конечность в горизонтальной плоскости. На схеме красным сразу обозначены переменные, используемые в коде (далеко не все). Не очень математично, зато удобно. Видно, что интересующий нас угол находится элементарно. Сначала primaryCoxaAngle - находится просто углом (0;A) к оси X (что эквивалентно углу точки A в полярных координатах). Но на схеме видно, что при этом сама нога - не распаложена под этим углом. Причина в том, что ось вращения coxa не находится на «линии ноги» - не знаю как это правильно сказать. Не находится в плоскости, в которой вращаются остальные 2 сустава и находится кончик ноги, вот. Это можно легко компенсировать, посчитав additionalCoxaAngle (как его считать - даже не утруждаюсь останавливаться, ну ведь все же были в школе, правда?).

Итого, у нас есть первый кусочек кода, это внутренности метода reach(Point& dest):

Float hDist = sqrt(sqr(dest.x - _cStart.x) + sqr(dest.y - _cStart.y)); float additionalCoxaAngle = hDist == 0.0 ? DONT_MOVE: asin(_cFemurOffset / hDist); float primaryCoxaAngle = polarAngle(dest.x - _cStart.x, dest.y - _cStart.y, _thirdQuarterFix); float cAngle = hDist == 0.0 ? DONT_MOVE: primaryCoxaAngle - additionalCoxaAngle - _cStartAngle;

Здесь dest - это точка, куда нажо тянуться, _cStart - координаты точки крепления (и центра вращения) coxa, в hDist считаем расстояние от _cStart до dest в горизонтальной плоскости. DONT_MOVE - это просто флаг, означающий что coxa не нужно никуда вращать, а оставить в текущем положении (т.к. dest - где-то прямо на оси вращения coxa - редко, но бывает). Вот cAngle - это уже тот угол, на который нужно будет отклониться сервоприводу от его начального угла (который находится в середине его рабочего диапазона). Видно что также юзается _cStartAngle - это угол в пространстве, на который повернут серво по деволту, при монтаже. Про _thirdQuarterFix расскажу позже, если не забуду.

При этом, задача внезапно сведется к поиску точки пересечения 2-х окружностей. Одна - в точке, откуда «растет» наша femur, вторая - точка, куда нам надо дотянуться (с уже локальным 2d координатами). Радиусы окружностей - длины femur и tibia соответственно. Если окружности пересекаются - то в одной из 2х точек можно расположить сустав. Мы всегда выбираем верхнюю, чтобы «колени» у чудища были выгнуты вверх, а не вниз. Если не пересекаются - то мы не дотянемся до целевой точки. Еще немного кода, переход в плоскость производится элементарно, только пара подводных камней еще учтена и задокументирована в коментарии, чтобы я не ломал голову потом, разбирая код. Для простоты, в этой локальной координатной «плоскости ноги» я выбрал началом координат точку, откуда растет femur:

// Moving to local Coxa-Femur-target coordinate system // Note the case when hDist <= _cFemurOffset. This is for the blind zone. // We never can"t reach the point that is nearer to the _cStart then // femur offset (_fStartFarOffset) float localDestX = hDist <= _cFemurOffset ? - _fStartFarOffset: sqrt(sqr(hDist) - sqr(_cFemurOffset)) - _fStartFarOffset; float localDestY = dest.z - _fStartZOffset; // Check reachability float localDistSqr = sqr(localDestX) + sqr(localDestY); if (localDistSqr > sqr(_fLength + _tLenght)) { log("Can"t reach!"); return false; }

Теперь localDestX и localDestY - это координаты целевой точки. Все что осталось - найти точку пересечения окружностей с центрами в (0,0) и (localDestX, localDestY), и радиусами _fLength и _tLength (соответственно длина femur и длина tibia). С этим тоже школьник справится, но тут я допускал довольно много ошибок, потому для проверки себя и вообще чтобы любой мог проверить, что это за стремные формулы, оставил ссылки на источники, где ясно и понятно разжована эта элементарная геометрическая задача:

// Find joint as circle intersect (equations from http://e-maxx.ru/algo/circles_intersection & http://e-maxx.ru/algo/circle_line_intersection) float A = -2 * localDestX; float B = -2 * localDestY; float C = sqr(localDestX) + sqr(localDestY) + sqr(_fLength) - sqr(_tLenght); float X0 = -A * C / (sqr(A) + sqr(B)); float Y0 = -B * C / (sqr(A) + sqr(B)); float D = sqrt(sqr(_fLength) - (sqr(C) / (sqr(A) + sqr(B)))); float mult = sqrt (sqr(D) / (sqr(A) + sqr(B))); float ax, ay, bx, by; ax = X0 + B * mult; bx = X0 - B * mult; ay = Y0 - A * mult; by = Y0 + A * mult; // Select solution on top as joint float jointLocalX = (ax > bx) ? ax: bx; float jointLocalY = (ax > bx) ? ay: by;

Все, осталось еще чуть-чуть - по полученным координатам вычислить собственно углы для femur и tibia сервов:

Float primaryFemurAngle = polarAngle(jointLocalX, jointLocalY, false); float fAngle = primaryFemurAngle - _fStartAngle; float primaryTibiaAngle = polarAngle(localDestX - jointLocalX, localDestY - jointLocalY, false); float tAngle = (primaryTibiaAngle - fAngle) - _tStartAngle;

Опять элементарщина - угловые координаты и всё. Я надеюсь, именование переменных уже должно быть понятным, к примеру, _fStartAngle - это femur start angle, угол на который femur направлен по дефолту. И последняя строчка метода reach() (он сказал поехали, и махнул рукой):

Move(cAngle, fAngle, tAngle);

Метод move уже непосредственно отдает команды сервам. На самом деле, в нем еще потом пришлось добавить всякие штуки для защиты от нехороших углов (на которые серво повернуться не может, но будет пытаться), а также для других ног, которые заркально расположены и/или направлены в другие стороны. Но пока же мы работаем с одной только лапой.
Эти куски - это уже финальный код, который далек от совершенства, и наверняка его можно значительно улучшить. Но он работает! Ни разу не выйдя за школьный курс геометрии-тригонометрии, мы реализовали полнофункционалную инверсную кинематику для 3dof ноги! Да еще и получаем решение сразу, за одну итерацию. Чтобы это все работало, ногу нужно было тщательно измерить, и сконфигурировать класс полученными данными. в том числе угловыми, которые сложнее всего измерять на готовом изделии. Может если проектировать в автокаде и наделать красивых рендеров - было бы легче с измерением углов, но у меня не было ни времени, ни желания заниматься этим пафосом.

Февраль только начался, а видео с ногой было уже готово. Для проверки ИК, я заставлял ногу описывать всякие фигуры в пространстве (для этого нужно было последовательно вызывать reach, обходя точки на прямоугольнике, или окружности, код скучен и уныл, потому не привожу (а закончив эксперименты с обведением примитивов, я его вообще выпилил)):

Дальше нужно было заканчивать играться с этой поделкой, на одной ноге далеко не упрыгаешь (хотя такой робот вышел бы действительно интересным). Но мне нужен гексапод. Отправился на ближайшую барахолку искать оргстекло. Нашел 2 отличных куска - один 3 мм толщиной (как раз для туловища, подумал я), другой 2 мм и синий (отличные конечности, в тон сервоприводам). Еще через пару недель я выкроил вечер, чтобы что-нибудь сделать из этого. Сделал наброски на бумаге. примерил - вроде все ок, дальше дело за ножовкой.

И вот оно, чудище заморское, шестилапое. Когда я тестил одну ногу, я питал это дело каким-то левым питальником от внешнего винта. Хватало. Но питать 6 ног от него было уже страшновато. Потому я на некоторое время повесил руки, думая что мне нужно еще раздобыть подходящий питальник. Но оказалось все гораздо проще, я выше уже упоминал - подошел питальник от eee pc 901. Ну и отлично.

Отладить работу 6-ти ног оказалось еще сложнее, чем написать движок одной ноги. Половина ног была зеркально отражена относительно другой. Кроме того направлены все в разные стороны. Вобщем конфигурировал и настраивал я все очень долго, и это меня не очень вдохновляло, т.к. средств удобной отладки не было, максимум на что я мог расчитывать - вывод лога в Serial. И тот нормально работал из основного *.ino файла, а из подключенного Leg.h - уже не виделся нужный объект. Наворотил костылей для лога (facepalm). Со временем отрефакторю. А тут еще и весна пришла, велосезон был открыт в полную силу, и я забросил своего шестилапого питомца в шкаф. Так прошло все лето и теплая часть осени.

Но пошли дожди, стало холодно, и гексапод был извлечен. Ноги его были отлажены, в том числе был введен тот самый _thirdQuarterFix для функции расчета polarAngle. Проблема была в том, что 2 ноги (левая средняя и левая задняя) двигались так, что большую часть времени находились в III четверти:

А polarAngle у меня была наивная - она возвращала углы от -пи до пи, относительно оси X. И, если иногда одной из этих 2-х ног нужно было повернуться во II-ю четверть, то значение polarAngle прыгало от -пи до пи, что собственно негативно влияло на дальнейший расчет. Пофиксил костылем - для этих 2-х ног polarAngle считается «иначе». Стыдно, стыдно мне за код, но весь проект - это proof of concept, единственная цель которого - просто понять, могу я собрать реалистично двигающегося гексапода или нет. Потому код должен работать, и прямо сейчас. А уж потом рефакторинг - перерефакторинг.

Справившись с 3-й четвертью, начал педалить паттерны шага. Для этого ввел в класс Leg точку default, т.е. в которой нога находится, когда робот стоит смирно и ровно. Эту точку можно тюнинговать, главное чтобы все ноги были на одной z координате (чтобы при этом ноги реально физически находились на одной плоскости, у Leg есть еще самая низкоуровневая tuneRestAngles()). А в пределах одной Z координаты, их можно двигать почти как угодно. Почти - потому что диапазон движения не бесконечен, и чтобы при шаге не выходить за рамки этого диапазода - default положение ног старался разместить где-то поближе к центру этого диапазона.

Код тут в тексте уже не привожу, он слишком элементарен, и я в конце приведу ссылки на полную версию всех сорцов - заодно научусь пользоваться github.

Последовательность шага выбрал простую - 3 ноги на земле, 3 - в воздухе переставляются. Таким образом, координаты ног относительно их default положения - можно разделить на 2 группы. Для этих двух групп я и проворачивал шаг в цикле (см функцию walk() в Buggy.ino). А в итоге, каждая нога вычисляла себе свою индивидуальную координату, исходя из своей default координаты.

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

До а-пода, конечно, далеко. Но я же не закончил еще.) Попедалил еще вечер - и добавил возможность двигаться в любом направлении (но не поворачивая корпус.)). Плюс для сглаживания между движениями добавил функцию (smoothTo()), которая аккуратно перемещает ноги (поднимая вверх, опять в 2-х группах, одна из которых всегда внизу, тварь на ней стоит, пока другая поднимается и перемещается) в новое положение. Это нужно чтобы тварь не дергала резко ногами, сменяя направление движения (этой фичи ох как не хватает многим игровым персонажам прошлых лет). И он резво забегал в любом направлении - вбок, по диагонали:

Оба грандиозных файла сорцов можно смотреть

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

Почему нужны корпусы и скелеты роботов?

Создание робота — процесс многоэтапный, включающий в себя и проектирование, и сборку, и программирование. Знания робототехники граничат с физикой, механикой, алгоритмизацией. Начинающие юные робототехники по разному тяготеют к каждому из этапов создания роботов. Кому-то легче дается создание механических частей робота, но программирование вызывает сложности. Кто-то, наоборот, с легкостью программирует логику поведения робота, но процесс создания механической модели вызывает сложности.

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

Платформы на 4 колесах — основа машинки Arduino

Платформа на колесах — это, безусловно самая простая и эффективная база для построения робота. В продаже есть много различных заготовок такого типа. Некоторые из их:

Платформа для создания робота на Arduino, выполненная из алюминиевого сплава. Платформа оснащена 4 колесами, к каждому из которых подключен отдельный мотор. Моторы идут в комплекте. Платформа может использоваться как основа автомобиля или любого другого ездящего робота. Размер платформы около 20 на 20 см. Винты, гайки и провода для подключения моторов также в комплекте.

Такое основание для вашего будущего робота можно купить примерно за $75 на сайте интернет-магазина DX.com .

Еще одна четырехколесная платформа для создания робота на базе Arduino привлекает внимание своими колесами. Они имеют диаметр 80 мм, ширину 60 мм, выглядят элегантно и надежно. У этой платформы акриловое основание толщиной 1,5 мм. Корпус имеет хорошую устойчивость и подходит для создания быстро передвигающегося робота. Aliexpress продает этот робот-скелет за $60. Комплектация аналогичная предыдущей — колеса, двигатели, провода и винты уже есть в наборе.

Двух- и трехколесные шасси для создания ездящих роботов

В следующей трехколесной платформе для создания робота на базе Arduino моторы подключены только к двум колесам и это снижает стоимость. В интернет магазине DX.com такое шасси продается за $20,5. Основание выполнено из прозрачного акрила. В комплекте 2 мотора, винты, гайки, провода, батарейный блок для 4 АА батарей. Размеры примерно 20 на 10 см.

Трехколесной платформе для робота Arduino. Фото dx.com

Двухколесное основание для робота. Фото dx.com

Гусеничные шасси для танков на Arduino

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

Гусеничное шасси для создания робота-танка на базе Arduino. В комплекте 2 мотора, гусеничная передача, винты, гайки. Размеры этого шасси 18,7 см х 11,5 см х 4,3 см. В интернет-магазине DX.com такое гусеничное шасси стоит $42.

Гусеничное шасси для робота. Фото dx.com

Корпус для робота-паука на Arduino

Паук — достаточно популярная форма роботов, поэтому в продаже имеются и такие корпуса-скелеты.Конструкция паука в отличие от роботов на колесах предусматривает движение в любую сторону.

Первый паук а в нашем обзоре стоит около $100 на Aliexpress .

Корпус для робота паука. Фото: aliexpress.com

В комплекте этого корпуса нет электроники, сервоприводов, их нужно покупать отдельно. С данной моделью паука рекомендовано использовать сервопривод MG 995 Servo. Забавно, что такой привод на сайте Aliexpress можно купить как за 33 доллара, так и за за 5 долларов (правда в этом случае придется купить 10 штук). Привод нужен под каждую лапу.

Кроме того для управления большим количеством сервоприводов потребуется многоканальный контроллер управления сервоприводами . Итоговая стоимость паука может получиться достаточно высокой.

Еще один скелет шестиногого робота-паука или даже робота-таракана привлек мое внимание своей ценой в $ 42,5. Робот на шести металлических лапах должен получиться пусть и не очень маневренный, зато устойчивый. Скелет этого таракана имеет длину 24 см, ширину — 18 см, высоту — 12 см. Приобрести этого черного таракана-робота можно на сайте интернет-магазина Aliexpress.

Корпус для робота таракана. Фото: aliexpress.com

Каркасы роботов гуманоидов

Достаточно интересной кажется модель робота-гуманоида стоимостью около $ 105. Здесь также нет электроники, зато много простора для творчества. Создание робота-гуманоида и программирование человеческой походки — непростые и интересные задачи. Начать пробовать свои силы в самостоятельном создании робота-гуманоида можно с покупки такого скелета на сайте интернет-магазина Aliexpress. Если верить описанию производителя, то на основе этого карскаса можно сделать даже танцующего робота.

Оболочка для робота гуманоида. Фото: aliexpress.com

Готовый робот, готовый корпус или создание Arduino робота с нуля?

Готовые полнокомплектые роботы на базе платы Arduino подойдут и для тех, кого электрические схемы не особо привлекают. Приобретая работающую модель робота, т.е. фактически готовую высокотехнологичную игрушку, можно разбудить интерес к самостоятельному проектированию и робототехнике. Открытость платформы Arduino позволяет из одних и тех же составных частей мастерить себе новые игрушки. Цена таких роботов колеблется в районе $ 100, что в общем относительно немного.

Готовые корпуса , которые мы рассмотрели в этом обзоре, предполагают бОльшую фантазию и бОльшее разнообразие получаемых роботов. В них вы не ограничены платами Arduino, можно использовать и другие «мозги». Преимущество этого способа перед созданием робота с нуля в том, что вы можете не отвлекаться на поиск материалов и разработку конструкций. Такой робот выглядит вполне серьезно и походит на промышленного.

Самым интересным, но и самым сложным, на наш взгляд, является полностью самостоятельное создание робота . Разработка корпуса из подручных материалов, приспособление для этих целей игрушечных машинок, и другой отслужившей техники может стать не менее увлекательным, чем программирование поведения робота. Да и результат будет совершенно уникальным.

Если вы только начинаете изучение Arduino робототехники, рекомендуем наш курс

Все цены приведены по состоянию на 22.05.14.

Всем Привет!

Год назад заинтересовался микроконтроллерами "arduino" и постройкой четырехногово робота-паука на Arduino Uno R3. Интерес возник после чтения различных статей, просмотра видео на портале youtube. Больше всего впечатлили роботы "PhantomX hexapod" и муравей "A-pod", которые переработал парень под ником Zenta (Коре Халворсен) . Первый его робот создан на сервомашинках "dynamixel AX-18" от компании "Robotis", а второй на сервомашинках "Hitec". Эти сервомашинки одни из дорогих. Создавать пробную модель, которую запланировал на базе этих машинок, мне будет не по силам. В качестве сервомашинок выбор пал на "Tunigy TGY-S9010" (13 кг.), заказал шилд dfrobot i/o expansio v 5.0, в дальнейшем будет установлен модуль bluetooth xbee, батарея 7,4v 5100mah, и SBEC на 20A сила тока при ходьбе будет скорее всего превышать 12А, поэтому заказал с запасом. После просмотра множества картинок и фото, я решил создать робота по своему дизайну. Сделал эскизы. Эти рисунки перенес в чертежи, делал в компасе, что то в солидворксе.

Чертежи -

После выполнения чертежей создал примерную 3d модель. Анимация получилась корявая видео выкладывать не буду.

Все запчасти на робота заказывал на паркфлаере. Первая часть деталей пришла в течении 1,5 месяца, а последующие 2 посылки в общем пришли в течение 7-8 месяцев. Задержка в доставке была из-за сбоя в работе hobbyking и российской таможни. В углу слева на фото предварительная сборка робота.

Перечень деталей робота:

Пока ждал посылки из поднебесной, начал искать, где можно сделать лазерную резку. В качестве корпуса и соединения лапок выбрал оргстекло 4 мм, лапки акриловый лист 8 мм, так как площадь опоры будет больше. В фирме все детали обсчитали и озвучили огромную сумму. Нашел другую и заказал детали на фрезерном станке. После фрезеровки все детали обработал и отполировал в ручную.

Постепенно доделывал детали и собирал робота. Болтики имбусы м3, гайки колпачковые все нержавейка. На фото подготовка к сборке соединения сервомашинки корпуса и бедра.

Вот так выглядит в собранном виде -

Полностью лапка паука. Болтики имбусы крепления м2

Корпус, соединения бедра и лапки укреплены. Все трубки из телевизионной антенны. Контроллер установлен на нейлоновых стойках и прикручен нейлоновыми винтами. Под контроллером будет установлен аккумулятор ниже sbec 20A. Получилось все компактно и доступно. Высота от пола до нижней части 4 см.

Планировал вес до 1,5 кг, но получилось с аккумулятором 1,6 кг. На фото ниже вес без акб.

Общий вид. В ходе сборки выявились два недостатка - 1. лапы скользят, 2. соединения под сервомашинкой корпуса отгибаются. Решение второго недостатка есть. буду с другой стороны сервомашинки на станке фрезеровать планки из оргстекла, и через трубку на винты крепить. По первому сомнения либо резину на винты, либо жидкой резиной заливать кончики.

Еще фото -

Вид сверху -

После окончательной сборки осваиваю язык программирования. На сайтах много всяких готовых шаблонов и написанных программ. Я не программист и элементарные движения получается сделать например: пошевелить лапой или сдвинуть под определенный угол всю ногу, но вот не понимаю как описать цикл движения в ту или иную сторону. Более того сделать управление через блютус с компьютера.
Над программным кодом сейчас работаю.

Представляем простой мини проект на Ардуино для начинающих — Робот паук с управлением от ИК пульта. Для изготовления данного робота своими руками потребуется минимум деталей и инструментов. В статье вы сможете узнать список необходимых материалов и инструментов для его изготовления, также мы разместили подробную инструкцию со схемами сборки, чертежи деталей и готовый скетч.

Видео. Робот паук на пульте управления

Основание робота состоит из двух фанерок, склеенных термопистолетом, лапы паука выполнены из стальной проволоки диаметром 2мм. Для приема сигнала от пульта ДУ используется IR приемник, для движения используются три сервомотора. Питание осуществляется от батарейки «Крона» 9V. В данном примере используется микроконтроллер Robotdyn UNO , но можно использовать любую плату Arduino.

Робот паук на Ардуино своими руками

Для этого проекта нам потребуется:

  • плата Arduino UNO;
  • ИК приемник;
  • любой пульт ДУ;
  • фанера толщиной 3 — 4 мм;
  • проволока диаметром 1,5 — 2 мм;
  • три сервопривода;
  • батарейка на 9 В;
  • провода и изолента.

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

На следующем фото вы можете увидеть конструкцию с обратной стороны, с указанием размеров дощечек из фанеры. Для удобства подключения сервоприводов к Ардуино , все плюсовые провода (они красного цвета) мы спаяли вместе, также мы соединили и провода, идущие к GND от сервоприводов (они коричневого цвета). К проводам для управления сервомоторами (желтого цвета) мы припаяли провод с контактом.


Фото. Устройство робота паука с управлением от IR пульта

Трехпиновые разъемы от сервоприводов мы отрезали, один из них используется для подключения IR приемника к Ардуино. Дощечки из фанеры склеиваются между собой при помощи термопистолета, который обеспечивает надежное крепление, при этом не требуется долго ждать — пластмасса затвердевает в течении нескольких минут. Сервоприводы и разъем для IR приемника можно приклеить к корпусу клеем.

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

Сборка робота паука на ИК управлении

Скачать бесплатно проект

1. выпиливаем две дощечки необходимого размера

2. склеиваем дощечки между собой термопистолетом

3. срезаем с сервоприводов провода с разъемами

4. склеиваем между собой три сервопривода

5. спаиваем между собой провода от сервоприводов

6. припаиваем к одному разъему провода с контактами

5. приклеиваем сервоприводы к корпусу робота

6. приклеиваем к корпусу разъем для IR приемника

7. отрезаем стальную проволоку необходимой длины

8. загибаем проволоку для лап согласно чертежу

9. приклеиваем к лапам рычаги от сервомашинок

10. подбираем для своего пульта IR приемник

11. указываем команды от пульта в файле ir_command_codes.h

12. собираем робота паука с Arduino UNO

13. тестируем робота паука + ИК управление


Любые вопросы по изготовлению и настройке данного проекта вы можете задать в комментариях к этой записи или на нашем канале YouTube в комментариях под видеороликом к мини проекту «Arduino робот паук + ИК управление».

Также часто читают: