Доброго времени суток! Перед вами, дорогие , арт-робот, который может разрисовывать различные сферические или яйцевидные предметы размером от 4 до 9 см.
Для его изготовления понадобится 3D-принтер, набор стандартных инструментов + Arduino.
Примечание: Не стоит ставить крест на проектах, в которых используются 3D-принтер. При желании всегда можно найти место или способ, где можно заказать печать необходимых для проекта деталей.
Арт-робот — двухосевая самоделка , которая может наносить рисунок на большинстве сферических поверхностей. Робот настраивается под определённый тип предмета (шары для пинг-понга, рождественские украшения, лампочки и яйца (утиные, гусиные, куриные …).
Для вращения сферического предмета и перемещения манипулятора используются высокоточные шаговые двигатели с высоким крутящим моментом, а для подъёма механизма ручки — тихий и надежный сервопривод SG90.
Для того, чтобы сделать поделку своими руками нам понадобится:
В качестве «шпаргалки» можете воспользоваться данной схемой.
Робот двигает манипулятором, с закрепленным на нём маркером, что приводится в действие шаговым двигателем. Другой шаговый двигатель отвечает за поворот объекта, на который наносится рисунок (яйцо, шарик …). Для удерживания предмета на месте используются две присоски: одна, прикрепленная к шаговому двигателю, а другая на противоположной стороне предмета. Маленькая пружина будет давить на присоску, помогая ей удерживать предмет. Для поднятия/опускания маркера используется сервопривод SG90.
Установим гайку в отверстие, подготовленное для неё и закрутим 16 мм винт. Сделаем то же самое для держателя предметов (справа на изображении выше). При создании шарнира для манипулятора использовались 2 16 мм винта. Этот шарнир должен свободно вращаться после закручивания винтов.
Установим одну из присосок внутрь отверстия в держателе предметов.
Закрепим оба шаговых двигателя к основной раме с помощью 8-ми винтов.
Разместим все элементы, как показано на изображении выше.
Вставим собранный манипулятор на ось шагового двигателя.
Установим левую опору на ось шагового двигателя.
Маркер и яйцо установлены в качестве примера (сейчас размещать их не нужно).
ПРИМЕЧАНИЕ: Сервопривод потребует корректировок. Нужно будет повторно установить его угол во время процесса калибровки.
Закрепим электронику на тыльной стороне основной рамы с помощью винтов (2-х будет достаточно).
Подключим кабеля.
Если вы перепутаете полярности при подключении шаговых двигателей, то они будут просто вращаться в противоположном направлении, но с сервоприводом ситуация будет не такой уж и безобидной! Поэтому дважды проверяйте полярность перед подключением!
Запрограммируем Arduino Leonardo с помощью программной среды Arduino IDE (v 1.8.1).
Программное обеспечение Inkscape. Загрузим и установим программное обеспечение Inkscape (рекомендую стабильную версию 0.91).
Загрузим и установим расширение EggBot Control (версия 2.4.0 была полностью протестирована).
Расширение EggBot Control для Inkscape — это инструмент, который необходимо использовать при тестировании и калибровке EggBot, а также перенесении рисунки на яйцо. Сначала нужно запустить Inkscape. После запуска Inkscape появится меню «Расширения», а в нём уже нужно выбрать подменю «Eggbot». Если не видите подменю Eggbot, то вы неправильно установили расширения. Выполните резервное копирование и внимательно следуйте инструкциям по установке расширений.
На этом всё, спасибо за внимание!)
Данный проект рассчитан на начинающих ардуинщиков и даст хорошую базу для дальнейшего освоения Arduino, Matlab, программирования и механики.
Электроники в проекте немного. Робот представляет из себя манипулятор с 2-мя степенями свободы, в качестве рабочего органа у которого используется карандаш. В проекте решена обратная задача кинематики и задача определение положения рабочего органа в плоскости в зависимости от углов поворота сервоприводов.
Подберите подходящую прищепку (или другой схват) и прикрепите ее к серве так, чтобы расстояние от второй сервы до рабочего органа составляло около 20 сантиметров.
При разработке механической части важно выдерживать указанные расстояния - 20, 15 сантиметров и правильно проводить калибровку двигателей. Естественно, доработка конструкции возможна и зависит того, какие именно узлы у вас еще есть в наличии. Например, вместо алюминиевых звеньев из набора конструктора можно использовать обычные линейки, куски пластика и т.п.
На рисунке сверху приведена схема подключения платы 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. После этого, рабочий орган перемещается в новое положение проверяет новый массив пикселей. Данный алгоритм позволяет постепенно воспроизвести весь рисунок.
Результат всех приведенных выше пунктов приведен на видео ниже:
Муниципальное бюджетное общеобразовательное учреждение
«Гимназия №16 «Французская»
Робот «Рисовальщик»
Шульженко Александра,
учащиеся инженерного 7 «В» класса
Руководители проекта:
Бублик Анна Николаевна,
Краскова Мария Ивановна,
учителя информатики
г. Новосибирск 2016
Задачи:
Составить план сбор автономного робота «Рисовальщик»;
Осуществить сборку робота, который способен рисовать на плоскости геометрические фигуры при помощи зерна;
Составить программу для корректной работы робота;
Провести апробацию робота «Рисовальщика».
Тип проекта
Творческий проект.
Используемые технологии
3D принтер , ПО LEGO Mindstorms EV3 Home Edition, набор LEGO Mindstorms education.
Форма продукта проекта
Робот «Рисовальщик».
Результативность
Участие в турнире юный инженер-исследователь.
С недавнего времени в школах появились инженерные классы, в том числе и в нашей гимназии.
Инженер-конструктор - инженерная специальность , чья деятельность необходима для разработки и создания конечного продукта из продуктов и ресурсов существующего материального производства. Например, инженер-конструктор деревообрабатывающего и мебельного производства, инженер-конструктор стальных конструкций и т. д. Под созданием конечного продукта при этом понимают объединение продуктов, например, сборка, монтаж, сварка, бетонирование и т. д.
Инженер - специалист, осуществляющий . Инженеры вовлечены, как правило, во все процессы жизненного цикла , являющихся предметом инженерного дела, включая , планирование, разработку технологии изготовления, подготовку технической документации, производство, наладку, испытание, эксплуатацию, техническое обслуживание, ремонт и утилизацию устройства, и . В своей деятельности инженер опирается на и . В список должностных обязанностей инженера входит разработка технической документации, а также предложения и мероприятия по осуществлению разработанных проектов и программ, участие в работах по исследованию, разработке проектов и программ предприятия, в проведении мероприятий, связанных с испытаниями оборудования и внедрением его в эксплуатацию, а также выполнении работ по стандартизации технических средств, систем, процессов, оборудования и материалов, в рассмотрении технической документации и подготовке необходимых обзоров, отзывов, заключений по вопросам выполняемой работы и многое другое. Для формирования этих навыков в нашем «Робототехника», «инженерном классе ведется много интересных предметов, например, Программирование», «Проектная деятельность» и другие.
В 5 классе на уроках робототехники мы впервые попробовали собрать и запрограммировать робота. В декабре 2014г. мы приняли участие в городском конкурсе по робототехнике, попробовав свои силы в «Сумо», «Линия». В декабре 2015г. мы приняли участие в городском конкурсе по робототехнике в категориях: «Сумо. Перетягивание каната», «Линия. Доставка грузов».
В начале 2016 года по муниципальным образовательным учреждениям были отправлены задачи на турнир юных инженеров – исследователей. И мы подумали: «А действительно, можно ли сделать робота, который рисует зерном?», как было сказано в одной из задач.
Мы обозначили следующую гипотезу: может ли робот рисовать геометрические фигуры при помощи пшена?
Цель нашего проекта: на основе микрокомпьютера EV3, деталей конструкторов ЛЕГО и различных дополнительных материалов сделать робота, способного «нарисовать» на плоскости заданную фигуру (круг, квадрат, треугольник) при помощи пшена.
Для достижения цели были решены следующие задачи:
составить план сбор автономного робота «Рисовальщик»;
осуществить сборку робота, который способен рисовать на плоскости геометрические фигуры при помощи зерна;
составить программу для корректной работы робота;
провести апробацию робота «Рисовальщика».
Основные методы создания – это моделирование, конструирование и программирование нашей модели с помощью конструктора LEGO Mindstorms .
В ходе выполнения проекта нами был создан робот «Рисовальщик», который способен нарисовать геометрические фигуры при помощи пшена.
На первом этапе осуществлялся поиск необходимой информации, знакомство с 3D принтером и его программным обеспечением. Мы просмотрели в интернете множество моделей роботов «Рисовальщик», все они, безусловно, интересные, но нам хотелось создать робота с крепкой и устойчиво конструкцией.
Проанализировав всю информацию, мы поняли, что основой нашего робота будет трёхколёсный бот с тележкой, в которой находится емкость для хранения и подачи зерна.
На втором этапе мы определились с тем, как будет выглядеть робот «Рисовальщик», какое количество моторов, деталей нам нужно будет использовать, как, каких и сколько нужно использовать микропроцессоров.
Для создания модели робота мы использовали:
3 D принтер;
набор LEGO Mindstorms education ;
программное обеспечением LEGO Mindstorms EV3 Home edition.
В таблице приведены основные блоки и их использование в проекте.
ИзображениеНазвание
Для чего используется
Микропроцессор EV3 .
Управляют движением сервомоторов NXT
2 Сервомоторов EV3
Электромоторы управляют движением робота
Средний сервомотор EV3
Электромотор управляет функцией подачи пшена
Воронка
Для хранения и подачи зерна
Продумав все конструкционные элементы, мы приступили к конструированию нашей модели. Модель робота состоит из двух частей трехколесного бота и тележки с воронкой. В основу трехколесного бота входит микропроцессор EV 3 и 2 сервомоторов EV3, отвечающих за движения робота.
Тележка состоит из деталей лего, а вот воронку нам пришлось моделировать и создавать с помощью 3 D принтера. За подачу пшена в воронке отвечает средний сервомотор EV3.
Как и у всех конструкций есть плюсы и минусы, наш робот не исключение. Преимущество конструкции: Крепкая, легкая, устойчивая конструкция. Работает быстро и манёвренно. Может помогать людям (в рассортировки зерна, посадки культур).
Сложность возникла при сборке устройства выдачи робота «Рисовальщик». Первоначально конструкция робота задумывалась таким образом, чтобы зерно высыпалось только тогда, когда робот движется по заданной траектории. Для этого был создан клапан, который задерживал зерно внутри устройства. Но мы столкнулись с тем, что пшено просто не высыпалось из устройства. Поэтому нам пришлось переделать клапан на лапку, которая периодически ударяет по носику, тем самым помогает зерну высыпаться. Вот плюсы и минусы нашего робота:
Плюсы данной конструкцииМинусы данной конструкции
Крепкая, легкая, компактна, устойчивая конструкция.
Неудобно расположен аккумулятор робота.
Работает быстро и манёвренно.
Сложность при сборке (конструкция выдачи).
Может помогать людям в посадке полевых культуры в удобрении почвы.
Этапы сборки:
Выявление функций, необходимых роботу;
Создание конструкции робота, отвечающей этим функциям;
Создание программы, испытание;
Устранение дефектов;
Показ робота.
На третьем этапе мы создавали программу движения робота в среде программирования LEGO MINDSTORMS EV 3 Home Edition . В ходе работы над программой нами был составлен алгоритм движения робота по траектории: квадрат, круг, треугольник с заданными сторонами и углами.
3)
4) Овсяницкая, Л.Ю. Курс программирования робота Lego Mindstorms EV3 в среде EV3: основные подходы, практические примеры, секреты мастерства / Л.Ю. Овсяницкая, Д.Н. Овсяницкий, А.Д. Овсяницкий. – Челябинск: ИП Мякотин И.В., 2014. – 204 с.
Где учат делать роботов своими руками шаг-за-шагом. Это команда специалистов из области автоматизации, занимающаяся популяризацией робототехники среди детей, школьников и студентов.
Робот выполнен по технологии "распечатал и вперёд" (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.
Данный проект главным образом предназначен для начинающих радиолюбителей и позволяет использовать микроконтроллер arduino, средство создания кода matlab и механические компоненты, а также небольшое количество электронных элементов. Робот имеет механическую руку с 2 степенями свободы и манипулятором ручкой. В проекте используется приложение инверсной кинематики и эффективное средство обнаружения контуров изображения.
1. Механические компоненты
2. Электронные компоненты
3. Сервомоторы
4. Инструменты
5. Программное обеспечение
Все вышеуказанные компоненты легко найти в местном магазине радиокомпонентов.
Для проекта требуется использовать сервомоторы с крутящим моментом 7кг/см. В случае использования макетной платы нам не потребуется паяльник и припой.
На рисунке выше показана приблизительная конструкция данного робота и этапы ее сборки. Это похоже на игру с конструктором, когда вам было 5-6 лет. Теперь более подробно рассмотрим пошаговую инструкцию сборки робота.
При конструировании робота необходимо учитывать вышеуказанное расстояние величиной 20 см и правильность проведения калибровки. Оставшаяся часть конструкции зависит от доступности других компонентов и вашего желания. Например, вместо алюминиевых пластин из конструктора можно использовать линейки для создания механической руки и т.д.
На фото выше показана схема подключения используемых компонентов, которые можно подключить как шилд для arduino или использовать для их соединения макетную плату.
Это наиболее интересная и важная часть данного проекта.
Для начала нам потребуется изображение, в котором нужно определить контуры с помощью эффективного средства обнаружения контуров изображения. Далее мы будем рисовать это изображение. Рисование изображения состоит из двух этапов.
Этап 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 пикселей, и если обнаруживается единица, то ручка достигает этой точки без поднятия кончика вверх и удаляет предыдущий пиксель, чтобы избежать повторений. Этот процесс продолжается, пока в окружении уже не обнаруживается логическая единица (это рекурсивная функция), поэтому ручка рисует плавную линию и удаляет ее «логическую составляющую» одновременно. Далее происходит отрисовка других ответвлений линий, которые появляются из нарисованной линии, поскольку идет проверка каждого соседнего пикселя. Данный алгоритм создает полное изображение.