Цветочувствительный робот с MATLAB | Полный проект с исходным кодом
Цветочувствительный робот с MATLAB | Полный проект с исходным кодом
Камера — один из самых мощных и точных датчиков if вы умеете обрабатывать сделанные ею изображения для получения информации ты хочешь. Вы можете обрабатывать последующие изображения и извлекать различную информацию, используя методы обработки изображений. MATLAB — очень мощный инструмент, играющий важную роль в обработке изображений.
Обработка изображений — это преобразование изображения в цифровую форму и выполнение над ним некоторых математических операций с целью получения улучшенного изображения или извлечения из него некоторой полезной информации. Большинство методов обработки изображений предполагают обработку изображения как двумерного сигнала и применение к нему стандартных методов обработки сигналов.
Рис. 1: Различные положения цветного объекта для управления роботом
Здесь представлен проект на основе MATLAB, в котором изображения, снятые камерой, обрабатываются для определения цвета и из изображения извлекается положение объекта красного цвета. В зависимости от положения объекта красного цвета на изображении через COM-порт отправляются различные данные. Последовательные данные принимаются роботом и выполняется соответствующее движение. Вы можете изменить код на любой цвет, который считаете подходящим. Этот проект является всего лишь примером, и вы можете использовать его для различных промышленных применений, например, для управления тяжелыми грузоподъемными машинами с помощью объекта определенного цвета в руке.
Цветной объект можно держать в руке, что дает команду роботу двигаться вправо, влево, вперед или назад в соответствии с положением вашей руки, как показано на рис. 1.
Цепь и работа
Рис. 2 показана схема робота, который использует микроконтроллер P89V51RD2 (IC1) для получения последовательных данных от компьютера через драйвер IC MAX232 (IC3). Полученные данные анализируются микроконтроллером IC1, а управление двигателями осуществляется через драйвер двигателя IC L293D (IC2). Питание робота осуществляется от батареи напряжением 9 В, напряжение которой регулируется регулятором 7805 (IC4) до уровня 5 В. 9 В также подключено к контакту 8 для IC2 двигателей.
Рис. 2: Схема робота Порт USB компьютера подключен к роботу через преобразователь USB в последовательный порт. Команды управления роботу передаются через последовательный порт, а уровни сигналов преобразуются в тип 5 В TTL/CMOS с помощью IC3. Эти сигналы напрямую подаются на микроконтроллер IC1 для управления двигателями M1 и M2 для перемещения робота во всех направлениях. Выводы портов P1.0–P1.3 микросхемы IC1 подключены к входам IN4–IN1 микросхемы IC2 соответственно для подачи управляющих входов. EN1 и EN2 подключены к Vcc, чтобы IC2 всегда был включен.
Приложение, запущенное на компьютере, интерпретирует положение цветного объекта и отправляет соответствующие команды роботу через последовательный порт. Как показано на рисунках на рис. 1, if оператор стоит перед камерой компьютера, держит в руке объект красного цвета и поднимает руку вверх, приложение MATLAB, работающее на компьютере, интерпретирует положение цветного объекта и отправляет «a» в последовательный порт. Робот запрограммирован на движение вперед if, он получает «a» от последовательного порта. Аналогично для других должностей в таблице указаны буквы, которые отправляются через последовательный порт роботу.
Программное обеспечение
Программа для робота написана на языке C с использованием компилятора Keil, а шестнадцатеричный файл запрограммирован в микроконтроллере с помощью подходящего программатора. Приложение, работающее на компьютере для интерпретации положения цветного объекта, разработано с использованием MATLAB. Приложение использует алгоритм определения цвета для обнаружения цветного объекта, а затем определяет его координаты для определения положения.
Алгоритм определения цвета. В алгоритме определения цвета можно легко обнаружить объекты основного цвета (красный, зеленый и синий). Алгоритм, используемый для определения цвета, на самом деле работает в виде отдельных этапов следующим образом:
1. Сделайте снимок (изображение) реального видео
2. Преобразуйте исходный снимок в серый
3. Извлеките компоненты красного цвета из исходного снимка
4. Теперь вычтите компоненты красного цвета из снимка серого цвета
5. Удалите шум с изображения с помощью команды фильтра
6. Преобразуйте это отфильтрованное изображение в двоичное изображение, и вы получите яркое изображение на месте красного объекта
7. Затем найдите координаты светлой части
Программа MATLAB.MATLAB предоставляет платформу разработки GUI, где инженеры могут разрабатывать эстетичный графический интерфейс для своего приложения. Программа сначала инициализирует и запускает видео, используя функции, упомянутые ниже:
Некоторые важные функции, используемые в программе:
data =getsnapshot(vid). Эта функция немедленно возвращает кадр одного изображения из объекта видеовхода
img = rgb2gray(data). Преобразует полноцветное изображение RGB в полутоновое изображение с интенсивностью
data(:,:,1).Извлекает все компоненты красного цвета из реального изображения
Аналогично, для зеленого: data(:,:,2) и для синего: data(:,:,3)
diff_im = imsubtract(data(:,:,1), rgb2gray(data)). Используется для вычитания красных компонентов из серого изображения
B = medfilt2(diff_im, [3,3]). Медианная фильтрация – это нелинейная операция, часто используемая при обработке изображений для уменьшения шума типа "соль и перец". Медианный фильтр более эффективен, чем свертка, когда цель – одновременно уменьшить шум и сохранить края.
diff_im = im2bw(diff_im, 0.18).Преобразует изображение в оттенках серого в двоичное изображение. Выходное изображение «diff_im» заменяет все пиксели входного изображения с яркостью выше уровня на значение 1 (белый) и заменяет все остальные пиксели на значение 0 (черный)
stats = Regionprops(diff_im, ‘BoundingBox’,’Centroid’).Измеряет набор свойств для каждого подключенного компонента (объекта) в бинарном изображении. Статистика изображения представляет собой логический массив и может иметь любое измерение
Используя функцию «regionprops ()», мы находим координаты центроида и ограничивающей рамки следующим образом:
stats = Regionprops(diff_im, 'BoundingBox', 'Centroid'); для объекта = 1:длина(статистика) bb = stats(object).BoundingBox; bc = stats(object).Centroid;
Центроид в коде указывает центр масс региона. Обратите внимание, что первый элемент центроида — это горизонтальная координата (или координата x) центра масс, а второй элемент — вертикальная координата (или координата y). Получив координаты, мы определяем условия для положения объекта и отправки соответствующих данных роботу следующим образом:
if (bc(1)>110 && bc(1) 110 && bc(2) < 170) > 110 ампер;&амп; до н.э.(2) < 170)
Мы также получаем представление о текущем положении объекта на GUI, используя приведенный ниже код: if (bc(1)>110 && bc(1) 110 && bc(2) < 170) axes(handles.axes5); imshow('red2.jpg');
Рис. 4 указывает положение объекта в определенном центральном диапазоне, а рис. 5 указывает, что объект поднят для подачи сигнала вперед. То же самое делается для движения влево, вправо, вперед и назад.
Создание и тестирование
Односторонний PCB робота в натуральную величину показан на рис. 6, а расположение его компонентов — на рис. 7. Соберите компоненты PCB и подключите двигатели и батарею, чтобы собрать робота. Используйте подходящие основания для микросхем. Прежде чем вставлять MCU в схему, запишите в нее код с помощью подходящего программатора. Подключите робота к компьютеру либо через последовательный порт, либо через порт USB (с помощью преобразователя USB-последовательный) и проверьте, обнаружен или нет преобразователь USB-последовательный в диспетчере устройств, и измените COM-порт относительно него.
Рис. 6. Односторонний PCB реального размера для роботаРис. 7: Компоновка компонентов для PCB
Загрузите PDF-файлы PCB и компоновки компонентов:нажмите здесь
Установите MATLAB 7.10 или более позднюю версию в вашей системе. После установки подключите его к роботу. Также проверьте, какой COM-порт вы используете, и пропишите в коде тот же COM-порт, иначе вы получите ошибку.
Запустить приложение
Когда установка будет готова, выполните следующие действия:
1. Загрузите необходимую папку с исходным кодом с DVD-диска EFY этого месяца.
2. Запустите программу жест.m и появится GUI, как показано на рис. 3.
3. Нажмите кнопку COM OPEN, чтобы открыть COM-порт.
4. нажмите «СТАРТ» и встаньте перед камерой или веб-камерой компьютера с предметом красного цвета в руке.
5. переместите объект вверх, вниз, влево и вправо, и программа MATLAB отправит данные в микроконтроллер в соответствии с положением объекта, и робот будет двигаться в соответствии со значениями, получаемыми микроконтроллером.
Автор имеет степень бакалавра технических наук в области электроники и коммуникаций SRCEM, Гвалиор (МП)
Все ссылки на книги и журналы, представлены на этом сайте, исключительно для ознакомления, авторские права на эти публикации принадлежат авторам книг и издательствам журналов!
Подробно тут! Жалоба