Собираем робота-художника на Arduino
Процесс изготовления робота:
Шаг первый. Разработка механических элементов робота
Механическая часть собирается очень просто, это делается из конструктора. С такой задачей справится и пятилетний ребенок.
1. В качалках от серводвигателя нужно просверлить два отверстия. Отверстия должны находиться на определенном расстоянии, каком именно, видно на фото.
2. Теперь нужно сделать крепеж для основания с приводом. Нужно просверлить четыре отверстия для крепления привода и затем зафиксировать его с помощью винтов. Привод будет использоваться в качестве неподвижного основания для робота-руки.
3. Алюминиевые звенья конструктора нужно прикрутить к качалкам приводов. Желательно, чтобы расстояние между качалками составляло 20 см.
4. Одну качалку нужно прикрепить к неподвижному основанию, а вторую ко второму двигателю. Перед тем как качалки будут зафиксированы, сервоприводы нужно откалибровать. Их нужно установить таким образом, чтобы вал находился под углом 90 градусов. Серводвигатель у основания должен располагаться параллельно звеньям, а привод на свободном конце должен быть размещен перпендикулярно.
5. Далее берутся звенья конструктора и крепятся параллельно к свободному концу и серводвигателю.
6. К нижней части конструкции нужно прикрепить колеса, они нужны для балансировки робота и его поддержки.
7. Последний мотор должен быть подключен к окончанию второго звена из пятого пункта.
Для крепления карандаша используется прищепка, также можно использовать и любой другой подходящий схват. Ее нужно прикрепить к серводвигателю таким образом, чтобы расстояние между ним и рабочим инструментом было около 20 см.
В процессе сборки важно придерживаться указанных расстояний, а также постоянно проводить калибровку двигателей по мере сборки. Несомненно, робота можно усовершенствовать, но тут уже все зависит от того, какие узлы имеются в наличии. Если так вышло, что нет конструктора, то можно использовать линейки, куски пластика и другие подходящие предметы.
Шаг второй. Электрическая схема робота
На рисунке можно увидеть, как подключается контроллер Arduino. Для подключения можно использовать макетную плату или же можно спаять шилд.
Сначала нужно найти пиксель, который соответствует цифре 1, поскольку рисунок теперь выглядит в виде нулей и единичек. В процессе происходит проверка, есть ли рядом пиксели с единицей, после этого ручка перемещается на следующую единицу, а предыдущую удаляет. Функция замкнута по кругу, что позволяет рисовать плавные линии.
На втором этапе происходит решение обратной задачи кинематики. При этом учитываются координаты пикселей и затем на основе этих данных выбираются углы поворота серводвигателя. Что же именно при этом происходит, можно увидеть на рисунке.
Теперь можно переходить к настройке Matlab и Arduino для того чтобы код отрабатывал. Сперва в Matlab нужно установить плагин Arduino IO. Далее файл под названием arduino.m нужно заменить тем, который прикреплен проекту под точно таким названием.
Файлы finaldraw.m и draw.m нужно сохранить в директорию с Matlab. Файл под названием adioes.ino загружается на плату.
На следующем этапе нужно проверить, к какому порту подключена плата Arduino, открыть файл finaldraw.m и заменить порт COM3 на нужный.
Расширение рисунка, который требуется нарисовать, нужно изменить на тип .png. Это делается очень просто, можно использовать графический редактор, к примеру, стандартный Paint. Файл сохраняется в директорию Matlab.
Затем нужно открыть файл finaldraw.m и заменить там emma.png на название рисунка, который нужно нарисовать.
Как видно на картинке, в качестве теста используется фотография Эммы Уотсон.
Вот и все, робот готов к использованию, можно приступать к тестированию. Плата Arduino подключается к персональному компьютеру, а в командной строке Matlab затем прописывается команда finaldraw. Система элементарно настраивается под нужные габариты конструкции.
Источник
Делаем простого робота-художника
Всего несколько лет назад роботы считались чем-то фантастическим. О них писали фантасты, они появлялись в голливудских фильмах. Сегодня, однако, слово робот никого не шокирует так, как это было в прошлом столетии. Сегодня роботы умеют видеть, говорить, строить, играть в футбол и присматривать за детьми. В данном материале мы рассмотрим способ изготовления простого робота-художника, который хоть не повторит творческий путь Леонардо да-Винчи, но удивит своими оригинальными абстрактными рисунками.
Как всегда первым делом представляем вашему вниманию видеоролик по изготовлению самодельного робота-художника.
Итак, что нам понадобится:
— кулер;
— аккумуляторная батарейка;
— несколько маркеров;
— резинки для купюр.
Теперь подсоединяем провода, идущие от вентилятора к аккумуляторной батарейке. Следует уточнить, что красный провод является плюсовых, а черный – минусовым.
Так как в первом шаге мы отломали три лопасти кулера, то он потерял равновесие. Таким образом, при подключении кулера к источнику питания, которым в нашем случае является аккумуляторная батарейка, он начинает раскачиваться. Маркеры, прикрепленные к кулеру, начинают рисовать узоры, а когда узоры начинают выходить за рамки, нам нужно всего лишь повернуть кулер в нужном направлении.
Таким несложным образом всего за несколько минут можно получить примитивную конструкцию робота-художника, произведения которого хоть и не уйдут с молотка за несколько миллионов долларов, однако точно развеселят членов семьи, друзей и родственников, дав им массу приятных впечатлений.
Источник
Рисующий робот
Данный проект главным образом предназначен для начинающих радиолюбителей и позволяет использовать микроконтроллер arduino, средство создания кода matlab и механические компоненты, а также небольшое количество электронных элементов. Робот имеет механическую руку с 2 степенями свободы и манипулятором ручкой. В проекте используется приложение инверсной кинематики и эффективное средство обнаружения контуров изображения.
Шаг 1: Используемые компоненты, инструменты и программное обеспечение
1. Механические компоненты
- Набор Mechanix kit
- Гайка и винты
- Держатель ручки (прищепка)
- 2X колесика
2. Электронные компоненты
- Модуль Arduino uno
- Печатная плата или макетная плата
- Источник питания (адаптер напряжением 5В и током 2А)
- USB кабель
- Паяльник
- Проволочный припой
- Отвертка
- Дрель
5. Программное обеспечение
- Среда разработки Arduino IDE
- Matlab (совместно с Arduino IO)
Все вышеуказанные компоненты легко найти в местном магазине радиокомпонентов.
Для проекта требуется использовать сервомоторы с крутящим моментом 7кг/см. В случае использования макетной платы нам не потребуется паяльник и припой.
Шаг 2: Механическая конструкция
На рисунке выше показана приблизительная конструкция данного робота и этапы ее сборки. Это похоже на игру с конструктором, когда вам было 5-6 лет. Теперь более подробно рассмотрим пошаговую инструкцию сборки робота.
- Просверлите два отверстия в каждой плоской шайбе так, чтобы расстояние между этими отверстиями было одинаковым для всех шайб, как показано на рисунке выше.
- Теперь мы должны изготовить жесткую опору для одного конца. Просверлите четыре отверстия на соответствующем расстоянии для винтов сервомотора и прикрепите сервомотор к квадратной стойке. Мы используем данную конструкцию для создания жесткой опоры, необходимой в процессе настройки.
- Подсоедините две алюминиевые пластины из конструктора к двум любым шайбам, как показано на рисунке так, чтобы расстояние между двумя шайбами составляло около 20 см.
- Теперь прикрепите одну шайбу к сервомотору с жесткой опорой, и вторую к другому сервомотору. Далее перед окончательным закреплением шайб откалибруйте сервомоторы на угол поворота 90 градусов так, чтобы сервомотор с жесткой опорой располагался параллельно к пластинам и свободный конец сервомотора находился перпендикулярно к нему.
- Теперь возьмите самые длинные пластины (длиной 15 см) из конструктора и прикрепите их к нижнему концу свободного конца сервомотора параллельно ему.
- Затем прикрепите колесики к нижней части механической руки с ручкой, которую мы создали на 5 шаге, для создания надежного равновесия и опоры.
- Последний сервомотор необходимо прикрепить к концевой точке шага 5 с помощью клея feviquick или пистолета для склеивания, чтобы создать жесткую конструкцию.
- Вместе с пластиной соответствующей длины и прищепкой прикрепите ручку к сервомотору так, чтобы расстояние от свободного конца плоской шайбы и кончика ручки составляло около 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 на ваш порт.
Измените расширение изображения, которое вы хотите нарисовать, на *.png. Это можно сделать в любом редакторе изображений. Далее сохраните изображение в директории matlab. Откройте файл finaldraw.m и замените файл emma.png на ваше изображение с расширением .png. Сохраните файл finaldraw.m.
В качестве примера было загружено изображение Эммы Уотсон, поэтому вы можете его использовать в процессе тестирования. Также вы можете изменить параметры функции обнаружения контуров изображения в соответствии со своими требованиями.
Теперь подключите arduino к вашему ПК, включите источник питания и введите finaldraw в командной строке matlab. Наслаждайтесь процессом рисования изображения.
Если у вас возникли какие-либо проблемы, тогда ознакомитесь с шагом 5.
Шаг 5: Описание программного кода
Ниже описывается алгоритм рисования изображения.
Сначала я преобразовал изображение, которое необходимо нарисовать, в формат png, используя редактор изображений, далее я сохранил изображение в директории matlab. После этого наш алгоритм преобразует данное изображение, используя функцию обнаружения контуров изображения, как было показано на изображении выше. Самая загадочная часть проекта – это процесс рисования данного изображения.
Принцип работы алгоритма следующий: сначала начинается проверка пикселей отконвертированного изображения и когда находится единица (1), которая обозначается как белый пиксель на изображении выше, то кончик ручки достигает этой точки (процесс достижения этой точки писан ранее) и опускается вниз, далее проверяются соседние 8 пикселей, и если обнаруживается единица, то ручка достигает этой точки без поднятия кончика вверх и удаляет предыдущий пиксель, чтобы избежать повторений. Этот процесс продолжается, пока в окружении уже не обнаруживается логическая единица (это рекурсивная функция), поэтому ручка рисует плавную линию и удаляет ее «логическую составляющую» одновременно. Далее происходит отрисовка других ответвлений линий, которые появляются из нарисованной линии, поскольку идет проверка каждого соседнего пикселя. Данный алгоритм создает полное изображение.
Источник