|
Цветочувствительный робот с MATLAB
Статьи публикуются по мере поступления. Для упорядоченного тематического
поиска воспользуйтесь блоком "Карта сайта"
Камера - один из самых мощных и точных датчиков, если вы знаете, как обрабатывать сделанные ею изображения для получения нужной вам информации. Вы можете обрабатывать последующие изображения и извлекать различную информацию, используя методы обработки изображений. MATLAB - очень мощный инструмент, играющий важную роль в обработке изображений. Обработка изображений - это преобразование изображения в цифровую форму и выполнение над ним некоторых математических операций, чтобы получить улучшенное изображение или извлечь из него некоторую полезную информацию. Большинство методов обработки изображений включают обработку изображения как двумерного сигнала и применение к нему стандартных методов обработки сигналов.
Рис.1: Различные положения цветного объекта для управления роботом
Здесь представлен проект на основе MATLAB, в котором изображения, снятые камерой, обрабатываются для получения цветов, а положение объекта красного цвета извлекается из изображения. В зависимости от положения объекта красного цвета на изображении через COM-порт отправляются разные данные. Робот получает последовательные данные и выполняет соответствующее движение. Вы можете изменить код на любой цвет, который сочтете подходящим. Этот проект является всего лишь примером, и вы можете использовать его для различных промышленных приложений, таких как управление тяжелыми грузоподъемными машинами с помощью какого-либо предмета определенного цвета в руке. Цветной объект можно держать в руке, что дает роботу команду двигаться вправо, влево, вперед или назад в соответствии с положением вашей руки, как показано на рис.1.
Схема и работа На рис. 2 показана схема робота, который использует микроконтроллер P89V51RD2 (IC1) для приема последовательных данных от компьютера через драйвер IC MAX232 (IC3). Полученные данные анализируются микроконтроллером IC1, а двигатели управляются через микросхему драйвера двигателя L293D (IC2). Питание робота осуществляется от батареи 9 В, напряжение которой регулируется до 5 В регулятором 7805 (IC4). 9 В также подключено к выводу 8 для IC2 двигателей.
USB-порт компьютера подключен к роботу через преобразователь USB-to-serial. Управляющие команды роботу отправляются через последовательный порт, а уровни сигналов конвертируются в тип 5V TTL / CMOS с помощью IC3. Эти сигналы напрямую поступают на микроконтроллер IC1 для управления двигателями M1 и M2 для перемещения робота во всех направлениях. Контакты порта P1.0 - P1.3 IC1 подключены к входам IN4 - IN1 IC2, соответственно, для подачи управляющих входов. EN1 и EN2 подключены к Vcc, чтобы IC2 всегда оставался включенным.
Приложение, работающее на компьютере, интерпретирует положение цветного объекта и отправляет соответствующие команды роботу через последовательный порт. Как показано на рисунках на рис.1, если оператор стоит перед камерой компьютера, держит в руке объект красного цвета и поднимает руку вверх, приложение MATLAB, работающее на компьютере, интерпретирует положение цветного объекта. и отправляет «а» в последовательный порт. Робот запрограммирован на движение вперед, если он получает «а» от последовательного порта. Аналогично для других позиций в таблице указаны буквы, которые через последовательный порт отправляются роботу.
Программа для робота написана на языке C с использованием компилятора Keil, а шестнадцатеричный файл программируется в микросхеме микроконтроллера с помощью подходящего программиста. Приложение, работающее на компьютере для интерпретации положения цветного объекта, разработано с использованием MATLAB. Приложение использует алгоритм определения цвета для обнаружения цветного объекта, а затем определяет его координаты для определения положения.
Алгоритм определения цвета. В алгоритме определения цвета объекты основного цвета (красный, зеленый и синий) могут быть легко обнаружены. Алгоритм, используемый для определения цвета, на самом деле работает в отдельные этапы, а именно:
1. Возьмите снимок (изображение) из реального видео
2. Преобразуйте исходный снимок в серый
3. Извлеките компоненты красного цвета из исходного снимка
4. Теперь вычтите компоненты красного цвета из серого снимка
5. Удалите шум с изображения с помощью команды filter
6. Преобразуйте это отфильтрованное изображение в двоичное изображение, и вы получите яркое изображение на месте красного объекта
7. Затем найдите координаты яркой части
Рис. 3: графический интерфейс управления роботом
Рис.4: Сигнал для остановки робота
Рис.5: Сигнал к движению вперед
Программа MATLAB. MATLAB предоставляет платформу разработки графического интерфейса пользователя, где инженеры могут разработать эстетичный графический интерфейс для своего приложения. Программа сначала инициализирует и запускает видео, используя функции, указанные ниже:
[stextbox id=”grey”]
vid = videoinput(‘winvideo’,1,’YUY2
_320x240’);
set(vid, ‘FramesPerTrigger’, Inf);
set(vid, ‘ReturnedColorspace’, ‘rgb’)
vid.FrameGrabInterval = 2;
start(vid)
[/stextbox]
Используя функцию 'regionprops ()', мы находим координаты центроида и ограничивающего прямоугольника следующим образом:
[stextbox id=”grey”]stats = regionprops(diff_im,
‘BoundingBox’, ‘Centroid’);
for object = 1:length(stats)
bb = stats(object).BoundingBox;
bc = stats(object).Centroid;[/stextbox]
«Центроид» в коде указывает центр масс региона. Обратите внимание, что первый элемент центроида - это горизонтальная координата (или координата x) центра масс, а второй элемент - вертикальная координата (или координата y). Получив координаты, мы определяем условия для положения объекта и соответствующих данных, которые должны быть отправлены роботу, следующим образом:
[stextbox id=”grey”]if (bc(1)>110 && bc(1) 110 && bc(2) < 170)
> 110 && bc(2) < 170)[/stextbox]
Мы также получаем представление о текущей позиции объекта в графическом интерфейсе пользователя, используя следующий код:
[stextbox id=”grey”]if (bc(1)>110 && bc(1) 110 && bc(2) < 170)
axes(handles.axes5);
imshow(‘red2.jpg’);[/stextbox]
На рис. 4 показано положение объекта в заданном центральном диапазоне, а на рис. 5 показано, что объект поднят для подачи прямого сигнала. То же самое делается для движения влево, вправо, вперед и назад. Односторонняя печатная плата робота в натуральную величину показана на рис. 6, а схема ее компонентов - на рис. 7. Соберите компоненты на печатной плате и подключите двигатели и аккумулятор, чтобы построить робота. Используйте подходящие основания для микросхем. Перед тем, как вставить микроконтроллер в схему, запишите в него код с помощью подходящего программатора. Подключите робота к компьютеру через последовательный порт или порт USB (с помощью преобразователя USB-to-serial) и проверьте, обнаружен ли преобразователь USB-to-serial в диспетчере устройств или нет, и измените COM-порт в соответствии с ним.
Рис.6: Односторонняя печатная плата робота в натуральную величину
Рис.7: Компоновка компонентов печатной платы
Скачать исходный код : нажмите здесь
Установите MATLAB 7.10 или более позднюю версию в вашу систему. Как только он будет установлен, подключите его к роботу. Также проверьте, какой COM-порт вы используете, и напишите тот же COM-порт в коде, иначе вы получите сообщение об ошибке.
После того, как установка будет готова, выполните следующие действия:
1. Загрузите необходимую папку с исходным кодом с DVD EFY этого месяца.
2. Запустите программу gesture.m, и появится графический интерфейс, показанный на рис. 3.
3. Нажмите кнопку COM OPEN, чтобы открыть COM-порт.
4. нажмите ПУСК и встаньте перед камерой компьютера или веб-камерой с красным предметом в руке.
5. переместите объект вверх, вниз, влево и вправо, и программа MATLAB отправит данные в микроконтроллер в соответствии с положением объекта, а робот будет перемещаться в соответствии со значениями, которые получает микроконтроллер.