Каталог статей


Выбранная схема!!!


7994
Цветочувствительный робот с 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. Затем найдите координаты светлой части

Рис. 3: GUI управления роботом
Рис. 4: Сигнал остановки робота
Рис. 5: Сигнал двигаться вперед

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

vid = videoinput('winvideo',1,'YUY2
_320x240’);
set(vid, ‘FramesPerTrigger’, Inf);
set(vid, ‘ReturnedColorspace’, ‘rgb’)
vid.FrameGrabInterval = 2;

start(vid)

Некоторые важные функции, используемые в программе:

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 реального размера для робота
Рис. 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, Гвалиор (МП)


Категория: Роботы | Добавил: Администратор (20.05.2026)
Просмотров: 89 | Рейтинг: 0.0/0


Всего комментариев: 0

Все ссылки на книги и журналы, представлены на этом сайте, исключительно для ознакомления, авторские права на эти публикации принадлежат авторам книг и издательствам журналов! Подробно тут!
Жалоба

ьте свои комментарии !!!!

Имя *:
Email:
Код *:

Copyright Zloy Soft (Company) © 2008 - 2026