domvpavlino.ru

Робот для рисования своими руками. Робот рисовальщик от центра SERVODROID. Настройка и включение робота

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

Электроники в проекте немного. Робот представляет из себя манипулятор с 2-мя степенями свободы, в качестве рабочего органа у которого используется карандаш. В проекте решена обратная задача кинематики и задача определение положения рабочего органа в плоскости в зависимости от углов поворота сервоприводов.

Необходимые элементы

  1. Механика
  • Mechanix kit - железный конструктор
  • Болты и гайки
  • Держатель для карандаша (в данном случае - прищепка)
  • 2 колеса для опор
  1. Электроника
  • Плата Arduino uno
  • Макетная плата
  • Источник питания (адаптер на 5 вольт 2 ампера)
  • USB Кабель
  • 3 серводвигателя
  1. Инструменты
  • Отвертка
  • Дрель
  1. Программное обеспечение
  • Arduino IDE
  • Matlab (с установленным Arduino IO)
  • Половина из перечисленного выше у вас вполне может найтись дома. Остальное можно приобрести за небольшие деньги.
  • Можно использовать любые серводвигатели с крутящим моментом более 7 кг*см (например, дешевый и сердитый вариант вроде MG995). Да, кстати, для любителей макеток - вам, конечно же пригодятся коннекторы.

Разработка механической части




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

Подберите подходящую прищепку (или другой схват) и прикрепите ее к серве так, чтобы расстояние от второй сервы до рабочего органа составляло около 20 сантиметров.

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

Электрическая часть проекта


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

Программирование платы Arduino для манипулятора


Эта часть проекта самая интересная и, наверное, самая важная.

Давайте вкратце разберемся, что именно происходит в программной части.

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

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

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

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

Для начала установите Arduino IO плагин в Matlab.

После этого замените файл arduino.m тем, что прикреплен к проекту под тем же именем.

Скачайте и сохраните finaldraw.m и draw.m в директорию с матлабом.

Загрузите файл adioes.ino на плату Arduino.

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

Измените расширение рисунка, который вы хотите нарисовать на.png. Это можно сделать с посощью большинстве графических редакторов. Сохраните полученный файл в директорию с Matlab. Откройте finaldraw.m и измените emma.png на название вашего рисунка с рисширением.png. Схраните файл emma.png.

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

На этом все. Подключите вашу плату Arduino к персональному компьютеру, пропишите в командной строке Matlab слово finaldraw и играйтесь.

Программирование продолжается

Алгоритм работы нашего манипулятора достаточно простой. Давайте немного разберемся в этом вопросе.

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

Начинается проверка пикселей конвертированного рисунка. Когда находится 1, которая соответствует белому пикселю на рисунке, рабочий орган перемещается в это положение и опускает ручку. После этого проверяются ближайшие 8 пикселей и, если находится хоть один, ручка перемещается на него, не отрываясь от плоскости. При этом предыдущий пиксель заменяется на 0, чтобы избежать повторов. Таким образом продолжается работа, пока не исчезнут все 1. После этого, рабочий орган перемещается в новое положение проверяет новый массив пикселей. Данный алгоритм позволяет постепенно воспроизвести весь рисунок.

Результат всех приведенных выше пунктов приведен на видео ниже:

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

Робот выполнен по технологии "распечатал и вперёд" (unpack and forward). При изготовлении его корпус распечатывается на принтере. Технология сборки полностью ориентирована на начинающих роботостроителей.

Плюсы данной разработки:

  • Корпус распечатывается на принтере.
  • Для сборки паяльник не требуется.
  • Нет необходимости изготавливать печатную плату.
  • Для сборки используется всего два радиокомпонента: мотор и батарейка.

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

Видеотесты

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

Характеристики робота

На фото робот рисовальщик в сборке.

  • Корпус робота полностью выполнен из тонкого картона с декоративным отпечатанным на принтере рисунком. Использованные способы сгибов придают форме жёсткость в точках напряжений. Сегменты (части) корпуса могут сгибаться и менять угол наклона двигателя, а также изменять позицию установки батарейки. Для стабилизации(устойчивость) корпуса во время вращения в конструкции предусмотрены опоры.
  • Радиокомпоненты используемые для сборки: мотор и батарейка. Мотор приводит в движение всю конструкцию относительно центра масс. Кроме прямого назначения мотор и батарейка образуют центр масс, что и позволяет прорисовать круг с помощью фломастера.
  • Регулировки, подстройка рисунка. Предусмотрена возможность быстрой замены (на другой цвет) пишущего узла (фломастера). Изменение диаметра прорисовываемого круга с помощью изменения положения батарейки, перемещение которой смещает центр масс. Фиксированное включение и выключение робота с помощью задания положений клипсы-разъёма на батарейке. Изменение угла положения мотора, которое позволяет использовать моторы с любым типом корпуса.


1.Пишущий элемент (фломастер)
2.Источник питания (батарея напряжением 9 вольт)
3.Клипса-разъём (для подключения к батареи 9 вольт).
4.Подвижная часть (регулировка диаметра круга).
5.Мотор с рабочим напряжением 5,9 вольт.
6.Корпус из тонкого картона.

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

Детали и материалы

Корпус выполнен из тонкого картона с наклеенной распечатанной на струйном принтере декоративной поверхностью (скины). Ссылка на архив со скинами размещена в конце статьи. Все чертежи в точных размерах, не редактировать! Фотографии используемых компонентов приведены далее.

Компоненты конструкции робота
1.Фломастеры цветные.
2.Скотч прозрачный односторонний.
3.Степлер.
4.Стержень гелиевый (цвет любой)-1шт
5.Мотор низковольтный с рабочим напряжением 5,9В тип RF-300F -1шт.
6.Скотч двусторонний строительный
7.Клипса-разъём для подключения 9в батареи.

Примечание.1. На фото не показана батарея напряжением 9 вольт. Рекомендуется устанавливать алкалиновую напряжением 9 вольт, с ней робот будет работать дольше.

Примечание.2. Двусторонний скот обладает клейким покрытием с двух сторон. С одной стороны закрыт защитной бумажной плёнкой для предотвращения склеивания.

Примечание.3. Мотор должен иметь рабочее напряжение не ниже 5,9 вольта, в противном случае велика вероятность пожига обмотки, так как используется напряжением питания 9 вольт! Мотор можно снять со старого CD или DVD-проигрывателя.

Инструкция по сборке

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

Изготовление и сборка корпуса

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

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

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

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

На фото показан вид конструкции сбоку. Чёрная стрелка указывает направление свёртки передних поверхностей обозначенных буквами A и B.

Сверните переднюю часть корпуса разместив их как на фото. Обратите внимание на расстояние помеченной красными линиями и стрелками, обозначенное буквой "S". Это расстояние должно быть минимальным! Зафиксируйте область помеченную буквой "A" степлером. Жёлтые стрелки указывают на правильную фиксацию (расположение) скрепками степлера.

На поверхность подписанную "MOTOR" приклейте двусторонний скоч (на позицию указывает чёрная стрелка). На фото вид сбоку область установки мотора обозначена стрелкой с буквой "M".

Внимание! Защитную бумажную ленту с двустороннего скотча на этом этапе не снимать!

Корпус в сборке (вид сверху в перспективе) с фиксированными степлером поверхностями показан на фото.

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

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

Изготовление и установка подвижной рамы

Чтобы регулировать диаметр прорисовываемого круга необходимо изготовить подвижную раму. Чертёж подвижной рамы находится в архиве. Чертёж выполнен в точных размерах. Его можно не переводить, а вырезать по контуру и наклеить на тонкий картон. Затем вырезать по контуру и подвижная рама готова. Области сгиба поверхностей показаны на чертеже пунктиром. Установите подвижную раму ориентируясь на фото.

С тыльной стороны поверхность подвижной рамы скрепите прозрачным скотчем (показано чёрным стрелками). Проверьте, подвижная рама должна легко перемещаться занимая крайние позиции.

На поверхность подвижной рамы приклейте двусторонний скотч.

Монтаж и подключение мотора, батареи.

Установите мотор на обозначенную позицию предварительно сняв защитную бумажную ленту с двустороннего скотча. Возьмите гелиевый стрежень (1) снимите защитный колпачок (2). Оденьте колпачок на вал мотора (3) как показано на фото. Колпачок будет выполнять роль протектора и обеспечит лучшее сцепление с поверхностью.

Возьмите клипсу-разъём и скрутите её красный провод с красным проводом мотора. Чёрный провод клипсы-разъёма скрутите с чёрным проводом мотора. Загните место скрутки в сторону более толстого провода. Изолируйте соединения изоляционной лентой.


Установите батарейку на позицию подвижной рамы и сильно прижмите к двустороннему скотчу. Батарея должна быть установлена так, чтобы не закрывать отверстия для установки фломастера. Когда батарея будет закреплена установите клипсу-разъём как показано на фото. Клипса-разъём используется в конструкции робота рисовальщика как выключатель питания. Простой поворот относительно одного контакта батареи 9 вольт включит или выключит мотор (показано чёрной стрелкой на фото).

Установка пишущего узла (фломастера)

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

Настройка и включение робота

После сборки конструкции робота, может потребоваться простая настройка для получения фигур. Регулировкой уровня положения фломастера можно установить чёткость, непрерывность или прерывистость прорисовываемого круга. Регулировкой позиции подвижной рамы можно установить диаметр прорисовываемого круга. Сборка окончена!

Архив к роботу рисовальщику с чертежами можно скачать , пароль не требуется. Размер архива 3,26Mb.

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

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

Сегодня знакомимся с роботами, которые уже вошли в историю современного искусства.

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


Oliver Deussen and Thomas Lindemeier/Univ. of Konstanz

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


Oliver Deussen and Thomas Lindemeier/Univ. of Konstanz
Oliver Deussen and Thomas Lindemeier/Univ. of Konstanz
Oliver Deussen and Thomas Lindemeier/Univ. of Konstanz

Талантливый робот Пиндара Ван Армана

Некоторые свои картины робот Пиндара Ван Армана пишет в полностью автоматическом режиме. Сначала он фотографирует то, что хотел бы изобразить - например, вида на Нью-Йорк, - а затем переносит изображение на холст в «авторской» интерпретации.


Pindar Van Arman

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


Pindar Van Arman
Pindar Van Arman

The Painting Fool

«Рисующий дурак» - это детище Саймона Колтона, профессора лондонского колледжа Goldsmith. В июле 2013 года у робота-художника прошла полноценная выставка в парижской галерее Oberkampf. С тех пор его работы не раз выставлялись онлайн и оффлайн.

Коллаж, созданный на основе новостных сводок из Афганистана http://www.thepaintingfool.com/

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

http://www.thepaintingfool.com/

Picassnake

Робот, созданный командой разработчиков из Манитобского университета, выглядит, как плюшевая зелёная змея. Змеебот рисует под музыку, из которой и черпает вдохновение. Это значит, что он танцует под модненький инди-рок и наносит на полотно мазки, которые постепенно превращаются в произведение импровизированного абстрактного искусства.


Картина, написанная роботом Picassnake под композицию These Demons группы Greek Riots

Робот Пол

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


http://patricktresset.com/new/

AARON

Удивительно, но художники экспериментируют с искусственным разумом уже довольно давно. В 1973 году Гарольд Коэн, профессор Калифорнийского университета, создавал произведения искусства совместно с программой AARON. Десятилетиями AARON была способна автономно производить творческие работы. В конце 80-х Коэн уже шутил, что станет единственным художником, чья посмертная выставка будет целиком и полностью состоять из картин, написанных после его смерти.


Harold Cohen and AARON
Harold Cohen and AARON
Hank Morgan | Getty

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

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

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

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

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

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

3. Сервомоторы

  • Сервомоторы

4. Инструменты

  • Паяльник
  • Проволочный припой
  • Отвертка
  • Дрель

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

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

Для проекта требуется использовать сервомоторы с крутящим моментом 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 (все инструкции указаны вместе с пакетом программ).

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

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

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

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

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

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

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

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

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

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

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

Загрузка...