Как нарисовать робота на компьютере

Обновлено: 06.07.2024

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

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

Музыка

Немецкая рок-группа Compressorhead исполняет каверы на хиты Red Hot Chili Peppers, Led Zeppelin, Metallica, а также играет собственную музыку. Изюминка бойсбенда в том, что он состоит из четырех роботов: гитариста Фингерса с 78 пальцами, бас-гитариста на гусеничной платформе по кличке Боунс, четырехрукого барабанщика Стикбоя и его помощника Стикбоя-младшего. И хотя музыка пишется не участниками механического квартета, а группой германских инженеров-робототехников, Compressorhead популярны по всему земного шару и много гастролируют .

Робот-композитор Iamus не только исполняет, но и самостоятельно сочиняет музыку. Алгоритм, созданный Франсиско Виго из Университета Малаги, слушает несколько музыкальных композиций и выявляет закономерности в их построении. Затем он разбивает мелодию на логические отрывки, составляет из них произведение и сверяет результат с критериями красоты и гармоничности звучания, которые самостоятельно определяет для себя. И даже самый придирчивый меломан не догадается, что получившаяся композиция – результат работы ИИ .

Поэзия

Нейросеть научилась писать стихи, подражая стилю Егора Летова. Сотрудники компании «Яндекс» в 2016 году создали алгоритм, который обработал тексты песен группы «Гражданская оборона» и сгенерировал лирику собственного сочинения. Разработчики положили стихи на музыку и записали целый альбом под названием «Нейронная оборона».

Созданные компьютером тексты очень похожи по стилю на настоящие, но все же имеют еле уловимое отличие – если вслушаться внимательнее, есть шанс заметить искусственность.

Живопись

Благодаря обучению с помощью нейронных сетей роботы научились рисовать картины. В Вашингтоне в 2016 году робот тайваньского производства TAIDA мастерски набросал изображение Альберта Эйнштейна в стиле импрессионизма.

Судьба механизма по имени E-David, сконструированного на факультете информатики Констанцкого университета в Германии, приняла неожиданный оборот: изначально робот создавался для более приземленных целей – сварки деталей автомобилей. Но как это часто случается с одаренными творцами, что-то пошло не так, и теперь искусственный интеллект пишет картины.

E-David не копирует заложенный в памяти образ, а переносит на бумагу то, что видит.

Разработчики Томас Линдемайер и Оливер Дойссен снабдили конструкцию сенсорами, камерой и ПО, с помощью которых удается запечатлеть в различных художественных стилях что угодно – от портрета до окружающего пейзажа. Рисунки ИИ всегда уникальны – даже изображения одного и того же предмета будут отличаться , поскольку машина сама вычисляет и определяет, под каким углом сделать очередной мазок. Правда, сложно сказать, можно ли считать этот процесс актом искусства – по сути E-David перерисовывает образ, который фиксируют сенсоры.

Есть и роботы, пишущие абстрактные картины – проект Action Jackson, созданный студентом Университета Вашингтона Тофером Макфэрлендом, наносит на бумагу узоры, напоминающие картины художника Дж. Поллока.

Кинематограф

Робот Geminoid F , собранный профессором Университета Осаки Хироси Исигуро, снялся в драме под названием Sayonara. Несмотря на атропоморфность и удивительную реалистичность механизма, неестественность его движений и мимики, конечно, бросается в глаза, особенно на фоне игры живых актеров. Но все же тандем человека и робота придает кинокартине некий шарм.

А в 2016 году режиссер Оскар Шарп и исследователь ИИ Росс Гудвин сняли экспериментальную научную короткометражку Sunspring по сценарию, написанному нейронной сетью по имени Бенджамин. Машина сгенерировала подробную историю, в которой прописаны движения и диалоги актеров, обозначены декорации и музыкальное сопровождение. Сюжет фильма Бенджамина – о будущем, в котором люди, обеспокоенные проблемой массовой безработицы , вынуждены продавать собственную кровь, чтобы выживать.

В ходе работы над проектом ИИ обработал множество сценариев фантастических фильмов, выпущенных в период с восьмидесятых до нулевых годов. Нейросеть быстро усвоила, что в картине должно быть три акта, а с именами персонажей все прошло не так гладко, и в итоге электронный мозг назвал их буквами – H, H2 и C.

Одну из ролей в фильме сыграл Томас Миддлдитч, прославившийся благодаря юмористическому сериалу «Кремниевая долина» от канала HBO.

Картина Sunspring участвовала в конкурсе фантастических короткометражек в Лондоне , где была оценена выше многих работ, созданных человеком. Несмотря на то, что фильм имеет структуру и своеобразный сюжет, смысл и логика в нем хромает – в целом проект напоминает дикую фантасмагорию. Впрочем, многие современные произведения в стиле артхаус порой еще менее понятны зрителям, поэтому строго судить творение Бенджамина не стоит.

Архитектура

Geometric Death Frequency-141 – уникальная скульптура, созданная механическими руками роботов с помощью CAD-программы. Проект размерами 6 м в высоту и 15 м в длину состоит из более 400 000 склеенных друг с другом шариков-пикселей черного цвета. Над скульптурой, представляющей собой морскую волну, разбивающуюся о скалы, несколько дней трудились два робота .

Для человека работа над Geometric Death Frequency-141 оказалась бы неподъемной из-за огромного количества мелких деталей и нестандартной формы объекта.

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


В этой статье я расскажу, как мне удалось создать собственный "художественный" робот. Главный посыл статьи заключается в том, чтобы продемонстрировать, как мы, люди, в стремлении создавать что-то новое обращаемся за помощью к машинам и роботам и что из этого может получиться. Как художественный стиль, так и весь дух проекта были вдохновлены великим мастером поп-арта Энди Уорхолом.

В своём творчестве Энди Уорхол часто вдохновлялся такими понятиями, как коммодитизация (переход продукта из марочной категории в категорию рядовых продуктов) и массовое производство. Это вдохновило его на создание художественных полотен, на которых изображены отдельные предметы или объекты, например бутылки с кока-колой, Мэрилин Монро или банки с супом Кэмпбелл. Кроме того, при создании своих картин он использовал особый метод – шелкотрафаретную печать. Это дало ему возможность поставить на поток изготовление картин и художественных работ в собственной студии The Factory.Возможно, я несколько преувеличиваю, но мне кажется, что Энди по достоинству оценил бы искусство моего робота, создающего художественные произведения в его неповторимом стиле. В конце концов, он сам заявил когда-то: "Я хочу стать машиной".

Использованная мною техника рисования линий давно известна, имеется множество её вариантов, и многие из них наверняка намного эффективнее той, которую я реализовал. Однако я намеренно не стал использовать в своей работе подобные техники, так как целью данного проекта было не просто достижение конечного результата, а изучение и разрешение многих иногда ожидаемых, а иногда неожиданных проблем, которые могли возникать на этом пути. Если бы я воспользовался уже имеющимися проектами и кодами, я бы, наверное, смог закончить собственный проект гораздо быстрее. Но я не ставил своей целью изготовить робота как можно быстрее. Повторю ещё раз – целью данного проекта было не просто достижение конечного результата, а изучение и разрешение многих иногда ожидаемых, а иногда неожиданных проблем, которые могли возникать на этом пути. Работа над проектом стала для меня сплошным удовольствием!

Какие компоненты потребуются

Для выполнения данного проекта потребуется множество различных файлов, например файлы для 3D-печати, код микроконтроллера, схема разводки печатной платы и компьютерная программа с графическим интерфейсом. Все необходимые файлы, разработанные и подготовленные мной для данного проекта, я поместил в репозиторий Github, версии этих файлов я постоянно обновляю.

Двигатели и кинематические устройства

Серводвигатель с металлическим приводом. Datan B2122.

2 шаговых двигателя Nema 17. Модель 17HS4401N.

2 зубчатых шкива 2GT 20. Просверленное отверстие 5 мм. Для приводного ремня шириной 6 мм.

2 зубчатых ремня 2GT 20. Ширина 6 мм. Длина 2 м.

7 шариковых подшипников 623ZZ. 3x10x4 мм.

Рама робота

V-образная направляющая 20x20 мм. Длина 1500 мм.

Как минимум 4 зажима с храповым механизмом или винтовых.

Доступ к 3D-принтеру.

Гайки, болты и шайбы М3 в ассортименте. В принципе, подойдёт размер M3x10 мм (конические).

Печатная плата и электронные элементы

Программируемый контроллер Arduino Nano.

2 бесшумных шаговых двигателя TMC2130.

4 цилиндрических алюминиевых конденсатора на 10 мкФ.

1 конденсатор 1206 на 330 мкФ.

1 конденсатор 1206 на 100 мкФ.

1 линейный регулятор напряжения LM7805 TO-252.

2 диода Шоттки MDD SS14, DO-214.

Нажимная кнопка 6,0x3,5 мм. Сейчас эта кнопка не задействована, я просто добавил её в конструкцию, так как она может понадобиться позже.

2 четырёхштырьковые гнездовые колодки с JST.

1 трёхштырьковая гнездовая колодка с JST.

Источник питания: 7–35 В, мин. ток 1,5 A.

Шаг 1. Как создаётся художественная работа



Вначале я рекомендую посмотреть видео – вы поймёте, как ведёт себя робот в действии и как его настраивать для создания художественной работы. Говорят, изображение заменяет тысячу слов, и теперь представьте, сколько слов заменит видео, в котором изображения сменяют друг друга 30 раз в секунду!

Чтобы использовать робот для рисования, зажимами я закрепил на его раме чистый холст. Затем я подвесил рисующую головку и перебросил ремни через шаговые двигатели, расположенные на углах рамы робота, и отцентрировал рисующую головку (перевел её в домашнее положение). В рисующую головку вставил перманентный маркер. Затем подключил робот по USB-кабелю к компьютеру, на котором запустил управляющее программное обеспечение. В компьютер я загрузил чёрно-белое изображение, созданное в программе Photoshop, а затем разместил рисующую головку в том месте холста, откуда должна начаться прорисовка. Чтобы рисующая головка попала в нужное положение, я отправлял на робот команды перемещения в пределах ограничительной рамки и подгонял расположение изображения до тех пор, пока оно не оказалось именно там, где нужно. Затем я дал команду отправки изображения на робот.

Наконец, робот завершил свою работу – на холсте появилось чёрно-белое изображение. И вот настал момент, когда я смог почувствовать себя настоящим художником. Я взял обычную акриловую краску, разбавленную двумя частями клея для декупажа Mod Podge. В итоге я получил акриловую глазурь, которую нанес поверх чёрных деталей. Холст окрасился красивыми цветами, при этом все чёрные детали сохранились и благодаря глазури приобрели особый блеск.И вы можете создать нечто такое же, это потрясающе!

Шаг 2. Сборка рамы робота



На этом шаге выполняются все действия по креплению компонентов на раму робота. Главная часть рамы – V-образная направляющая 20x20 мм. При проектировании робота я взял за основу направляющую длиной 100 см, так как её было легче разместить на рабочем столе, но по зрелом размышлении я решил увеличить её длину до 150 см. В принципе, длина направляющей может быть любой, желаемую длину можно указать в соответствующей переменной в коде Arduino, мы остановимся на этом чуть позже.Вначале нужно распечатать все 3D-файлы, о которых я говорил на первом шаге. Довольно быстро это делается с разрешением 0,3 мм без заполнения.Взгляните на первый рисунок для данного этапа. Во все 3D-отпечатки, имеющие шестигранное углубление с внутренней стороны, нажатием вставляется гайка M3. С другой стороны в гайку закручивается винт M3 произвольной длины. Нажатие вдавливает винт в металлическую направляющую и создаёт прочное механическое соединение (которое при необходимости может быть ослаблено).

Ключ перевода в домашнее положение

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

Держатель платы

Распечатайте два держателя платы и задвиньте их в направляющую. Я предусмотрел возможность крепления держателей винтами, но сейчас в этом нет необходимости. После того как печатная плата будет зажата держателями, натяжение надёжно удержит их на месте.

Держатели двигателя

Вначале с помощью винтов M3x10 мм прикрутите к держателям двигатель Nema 17 (по шайбе на каждый винт). Затем вставьте держатели двигателей в направляющую робота и снова закрепите их винтами, следя, чтобы двигатели оставались на краях направляющей. Теперь на валы двигателей можно накинуть ремённые шкивы.

Сборка рамы робота

Чтобы собранная конструкция робота никому в доме не мешала, но при этом в любое время была готова к использованию, я разместил всю конструкцию на шкафу в гостиной. Для этого я взял старую полку и скрепил робот с этой полкой с помощью винтовых зажимов. Затем я прижал полученную конструкцию зажимами к верхней части шкафа и закрепил универсальными креплениями Command с задней стороны полки. Полоски Command обеспечивают дополнительное крепление, предотвращающее поворот полки, расположенной поверх шкафа, а также обеспечивают возможность определённой регулировки – я могу легко двигать полку вперёд или назад. Другими словами, я могу размещать холст на разной глубине.

Шаг 3. Рисующая головка робота


Левый и правый кронштейны

Первым делом необходимо отрезать остатки суппорта и отшлифовать поверхность, которая соприкасалась с опорами – так мы получим поверхность без неровностей и шероховатостей. Вставьте два 10-миллиметровых шариковых подшипника в левый и правый кронштейны.

Для крепления двух кронштейнов на рисующей головке мы используем винт М3х20 мм и стопорную гайку М3 с обеих сторон среднего контейнера. Всё это собирается вместе в следующую уровневую конструкцию:

Правый кронштейн с шариковым подшипником.

Левый кронштейн с шариковым подшипником.

Правый кронштейн с шариковым подшипником.

Стопорная гайка M3.

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

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

Манипулятор робота

Теперь необходимо установить другой шарикоподшипник со стороны рисующей головки. Вставьте сервопривод под держатель пера, при этом ротор должен находиться ближе к передней части рисующей головки. Вставьте винт со стороны сервопривода, чтобы он вышел через подшипник. Насадите распечатанный на 3D-принтере манипулятор робота на винт, проходящий через подшипник, и на сервопривод с другой стороны. Затяните гайку М3 с левой стороны рисующей головки, другую сторону манипулятора пока не фиксируйте. Перед закручиванием винта сервопривода для крепления правой стороны манипулятора робота необходимо включить сервопривод и установить его в положение 100. Если под рукой нет контроллера Arduino, придётся подождать, пока будет установлена печатная плата и загружен код, и тогда сервопривод можно перевести в положение "no-draw".

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

Шаг 4. Весовые нагрузки



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

Опытным путём я узнал, что оптимальный вес боковых весовых нагрузок составил около 300 г, а средней – около 530 г. Эти значения отлично подошли для размеров создаваемого мною робота. После того как мне стал известен вес, мне нужно было понять, какому объёму гипса он соответствует. Я провел ряд экспериментов с гипсом и рассчитал значение плотности: Rho = 1,435 кг/л.

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

При расчёте объёма, необходимого для печати пластиковых оболочек, я применил расчётное значение плотности, после чего запустил 3D-печать оболочек соответствующего объёма.Теперь ценный совет: для распечатки весовых нагрузок я использовал полилактидный пластик. Это не водонепроницаемый материал, поэтому незатвердевший гипс может просачиваться через трещины в 3D-печати. Чтобы избавиться от этой проблемы, я с помощью кисти нанёс слой воска (для этого пришлось зажечь восковую свечу) на внутреннюю поверхность 3D-отпечатка. Теперь оболочка стала водонепроницаемой, и гипс будет надёжно удерживаться внутри неё вплоть до затвердевания.

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

Шаг 5: Программа управления роботом




Главной программой, управляющей роботом, является программное обеспечение контроллера Arduino Nano. Контроллер обрабатывает входные команды, передаваемые через USB, осуществляет точные расчёты движения, посылает импульсные команды шаговым двигателям, а также перемещает манипулятор робота вверх и вниз либо для рисования линии, либо для простого перемещения по прямой.

Программируемый контроллер Arduino Nano.

2 бесшумных шаговых двигателя TMC2130.

4 цилиндрических алюминиевых конденсатора по 10 мкФ.

1 конденсатор 1206 на 330 мкФ.

1 конденсатор 1206 на 100 мкФ.

1 линейный регулятор напряжения LM7805 TO-252.

2 диода Шоттки MDD SS14, DO-214.

Нажимная кнопка 6,0x3,5 мм. Сейчас эта кнопка не задействована, я просто добавил её в конструкцию, так как она может понадобиться позже.

2 четырёхштырьковые гнездовые головки JST.

1 трёхштырьковая гнездовая головка JST.

Для подачи питания на электронные компоненты я использовал зарядное устройство для ноутбука, выдающее напряжение 19,5 В, но вполне можно использовать любой имеющийся блок питания, при условии, что он выдаёт от 7 до 35 В и не менее 1,5 А.

После завершения пайки загрузите в Arduino код (см. первый шаг).

Важное замечание: не забудьте подключить мою библиотеку fork of the stepper, которую можно загрузить из моего хранилища github. Мне пришлось исключить ненужную функцию, вызывавшую ошибку – линии рисовались не прямо, а с точкой перелома. Если бы вы знали, сколько времени у меня ушло на поиск этой неисправности и отладку!

Шаг 6. Управление роботом


Рабочая нагрузка разделяется между самим роботом и компьютером. По аналогичной схеме работает большинство 3D-принтеров. Я написал интерпретатор GCODE для Arduino, обрабатывающий входящие команды, вычисляющий направления перемещения и рассчитывающий последовательность подачи импульсов на два шаговых двигателя.

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

Я также добавил функцию рисования/перемещения только в пределах ограничительной рамки. Эта функция мне очень помогла при позиционировании, когда картина рисуется на закреплённом холсте.

На сегодня управляющая программа обеспечивает отрисовку полных изображений в формате BMP. Все цвета темнее RGB (60, 60, 60) будут отрисовываться роботом как чёрные. Сейчас я также занимаюсь реализацией поддержки векторных изображений для рисования плавных линий и красивых кривых Безье.

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


Добрый робот

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


Для занятия надо приготовить:

  • альбом,
  • цветные карандаши или фломастеры.


  1. В верхней части будущего рисунка необходимо провести два вертикальных отрезка на небольшом расстоянии друг от друга, затем соединить их параллелями. Это голова.
  2. Ниже этого элемента надо начертить туловище в виде квадрата, его с головой соединяют парой небольших вертикалей.
  3. Внутри большого квадрата надо вычертить квадрат меньшего размера.
  4. Над головой рисуют пару небольших отрезков под углом и соединяют их фигурой в виде эллипса.
  5. Проработать "лицо" персонажа, обозначить уши.
  6. Руки-манипуляторы присоединяют к туловищу небольшими дугами, захваты на конечностях можно оформить в виде стилизованных подков.
  7. Корпус и остальные детали конструкции можно детализировать, добавив винтики, прорисовав места соединений.
  8. Выполнить ноги-опоры в деталях.
  9. Цветными карандашами или фломастерами раскрасить героя. Это можно сделать в произвольной форме.


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


Веселый робот

Более сложным в исполнении будет следующий робот, для изображения которого применяются иные принципы.


Для работы надо запастись:

  • альбомом,
  • карандашами или фломастерами.


  1. Найти центр листа, в верхней части обозначить окружность среднего размера. Чуть ниже продублировать элемент подобным полуовалом, соединить части. Получится цилиндр-голова. Рисунок детализировать, оформив лицо, уши, антенну на макушке. На лице показать широкую улыбку.
  2. Ниже начертить прямоугольный корпус-тело, придав ему с помощью дополнительных отрезков объем.
  3. Добавить шею, соединив части корпуса.
  4. Руки можно оформить в разных положениях: одну опустить вниз, другую приподнять и согнуть в "локте".
  5. Захваты-манипуляторы несложно изобразить в виде рукавиц.
  6. Детализировать элементы корпуса, нарисовав болты, клепки, панель управления.
  7. Нижние конечности при помощи овальных линий можно изобразить круглыми, детализировать их.
  8. Раскрасить робота фломастерами или карандашами.


Робот Валл-И

Поэтапное освоение техники рисования позволит приобрести хороший опыт и перейти к более сложным творческим задачам.


Для занятия понадобится:

  • альбом,
  • простой карандаш,
  • коробка цветных карандашей.


  • Разметить лист, определив середину.
  • В верхней части наметить две фигуры каплевидной формы, соединив их перемычкой. Продублировать элементы, придав им объем. Это оптика-глаза робота.
  • Ниже изобразить прямоугольник.
  • Соединить оптику машины с прямоугольным корпусом, изобразив рейку с шарнирным соединением при помощи прямых линий.
  • Прямоугольный корпус сделать объемным при помощи дополнительных прямых отрезков.
  • Сбоку на корпусе изобразить руку-манипулятор. Детализировать ее и нарисовать лапу-захват.
  • Начертить вторую конечность-захват.
  • В нижней части корпуса нарисовать треугольники, округлив их вершины. Это траки для перемещения персонажа.
  • Прорисовать элементы гусениц и ролики.
  • Дополнить тело прямыми линиями для детализации изображения.
  • Раскрасить детали.



Беймакс в броне

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


Для работы необходимы:

  • альбомный лист,
  • простой карандаш и ластик,
  • фломастеры иди цветные карандаши.

Робота, имеющего минимум мелких деталей, можно и красками раскрасить.


  1. Определить середину листа и в верхней части нарисовать голову. Сразу изобразить очки на лице робота.
  2. Прямая линия плеч немного загибается под прямым углом.
  3. Овальными линиями обозначить предплечья мощного боевого робота. Дорисовать и детализировать верхние конечности.
  4. Изобразить объемный торс.
  5. Нарисовать ноги персонажа, показав его силу.
  6. Рисунок раскрасить.


Блектоп

Потренировавшись на не очень сложных изображениях, пора взяться за воплощение в жизнь более серьезных задач.

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


  1. Рисунок начинается с изображения морды-маски при помощи небольших вертикальных отрезков и уголков.
  2. Прорисовав маску, ее дополняют шлемом и шеей.
  3. С помощью угловых ломаных линий изобразить торс персонажа, снабдив его всеми необходимыми мелкими деталями.
  4. Особой тщательности требует изображение конечностей. Требуется детально перенести на бумагу все детали, соблюдая пропорции.
  5. Детали и элементы соединений изображают при помощи прямых и овальных линий.
  6. В нижней части тела изобразить треугольную защиту с зауженным низом. По возможности перенести на рисунок все детали и соединения на теле робота.
  7. Нижнюю часть каски персонажа заштриховать черным, обвести контуры робота и раскрасить его.


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


Рисовать роботов можно простым карандашом, ручкой, фломастерами. Рисунок можно раскрасить или оформить при помощи штриховки.

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

Шаг 1: Используемые компоненты, инструменты и программное обеспечение




1. Механические компоненты

  • Набор Mechanix kit
  • Гайка и винты
  • Держатель ручки (прищепка)
  • 2X колесика

2. Электронные компоненты

  • Модуль Arduino uno
  • Печатная плата или макетная плата
  • Источник питания (адаптер напряжением 5В и током 2А)
  • USB кабель
  • Паяльник
  • Проволочный припой
  • Отвертка
  • Дрель

5. Программное обеспечение

  • Среда разработки Arduino IDE
  • Matlab (совместно с Arduino IO)

Все вышеуказанные компоненты легко найти в местном магазине радиокомпонентов.

Для проекта требуется использовать сервомоторы с крутящим моментом 7кг/см. В случае использования макетной платы нам не потребуется паяльник и припой.

Шаг 2: Механическая конструкция




На рисунке выше показана приблизительная конструкция данного робота и этапы ее сборки. Это похоже на игру с конструктором, когда вам было 5-6 лет. Теперь более подробно рассмотрим пошаговую инструкцию сборки робота.

  1. Просверлите два отверстия в каждой плоской шайбе так, чтобы расстояние между этими отверстиями было одинаковым для всех шайб, как показано на рисунке выше.
  2. Теперь мы должны изготовить жесткую опору для одного конца. Просверлите четыре отверстия на соответствующем расстоянии для винтов сервомотора и прикрепите сервомотор к квадратной стойке. Мы используем данную конструкцию для создания жесткой опоры, необходимой в процессе настройки.
  3. Подсоедините две алюминиевые пластины из конструктора к двум любым шайбам, как показано на рисунке так, чтобы расстояние между двумя шайбами составляло около 20 см.
  4. Теперь прикрепите одну шайбу к сервомотору с жесткой опорой, и вторую к другому сервомотору. Далее перед окончательным закреплением шайб откалибруйте сервомоторы на угол поворота 90 градусов так, чтобы сервомотор с жесткой опорой располагался параллельно к пластинам и свободный конец сервомотора находился перпендикулярно к нему.
  5. Теперь возьмите самые длинные пластины (длиной 15 см) из конструктора и прикрепите их к нижнему концу свободного конца сервомотора параллельно ему.
  6. Затем прикрепите колесики к нижней части механической руки с ручкой, которую мы создали на 5 шаге, для создания надежного равновесия и опоры.
  7. Последний сервомотор необходимо прикрепить к концевой точке шага 5 с помощью клея feviquick или пистолета для склеивания, чтобы создать жесткую конструкцию.
  8. Вместе с пластиной соответствующей длины и прищепкой прикрепите ручку к сервомотору так, чтобы расстояние от свободного конца плоской шайбы и кончика ручки составляло около 20 см.

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

Шаг 3: Электронные компоненты


На фото выше показана схема подключения используемых компонентов, которые можно подключить как шилд для arduino или использовать для их соединения макетную плату.

Шаг 4: Программный код



Это наиболее интересная и важная часть данного проекта.

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

Этап 1: С начала мы находим пиксель, обозначенный как логическая единица, поскольку теперь наше изображение состоит из логических нулей и единиц, и далее проверяем окружающие его локальные пиксели, является ли какой-либо из них также логической единицей. Затем ручка достигает этот пиксель и предыдущая логическая единица удаляется. Функция повторяется рекурсивно и создает плавные линии.

Этап 2: На втором этапе используется инверсная кинематика для достижения требуемого конкретного пикселя. Нам нужно знать координаты пикселя и вычислить соответствующие углы для осей вращения; формулы расчета показаны на рисунке выше.

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

Теперь потребуется настройка Matlab и arduino для выполнения программного кода.

Сначала установите пакет arduino IO package для matlab (все инструкции указаны вместе с пакетом программ).

Далее замените файл arduino.m на загруженный файл с этим же именем.

Загрузите и сохраните finaldraw.m и draw.m в директории matlab.

Загрузите файл adioes.ino, который был загружен ранее, в модуль arduino.

Посмотрите, какой из портов вашего arduino подключен, далее перейдите к файлу finaldraw.m и измените COM3 на ваш порт.

Измените расширение изображения, которое вы хотите нарисовать, на *.jpg. Это можно сделать в любом редакторе изображений. Далее сохраните изображение в директории matlab. Откройте файл finaldraw.m и замените файл emma.jpg на ваше изображение с расширением .jpg. Сохраните файл finaldraw.m.

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

Теперь подключите arduino к вашему ПК, включите источник питания и введите finaldraw в командной строке matlab. Наслаждайтесь процессом рисования изображения.

Если у вас возникли какие-либо проблемы, тогда ознакомитесь с шагом 5.

Шаг 5: Описание программного кода


Ниже описывается алгоритм рисования изображения.

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

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

Читайте также: