Оглавление:

MATLAB Controlled Roomba: 5 шагов
MATLAB Controlled Roomba: 5 шагов

Видео: MATLAB Controlled Roomba: 5 шагов

Видео: MATLAB Controlled Roomba: 5 шагов
Видео: Использование конструктора систем управления в Matlab 2024, Ноябрь
Anonim
MATLAB Controlled Roomba
MATLAB Controlled Roomba
MATLAB Controlled Roomba
MATLAB Controlled Roomba

Целью этого проекта является использование MATLAB, а также модифицированного программируемого робота iRobot. Наша группа объединила наши навыки программирования, чтобы создать сценарий MATLAB, который использует многие функции iRobot, включая датчики обрыва, датчики бампера, датчики света и камеру. Мы использовали эти показания датчика и камеры в качестве входных данных, что позволило нам создавать определенные выходные данные, которые мы хотим, используя функции и циклы кода MATLAB. Мы также используем мобильное устройство MATLAB и гироскоп как способ подключения к iRobot и управления им.

Шаг 1: Детали и материалы

Детали и материалы
Детали и материалы
Детали и материалы
Детали и материалы
Детали и материалы
Детали и материалы
Детали и материалы
Детали и материалы

MATLAB 2018a

- Версия MATLAB 2018 года является наиболее предпочтительной версией, в основном потому, что она лучше всего работает с кодом, который подключается к мобильному устройству. Однако большую часть нашего кода можно интерпретировать в большинстве версий MATLAB.

iRobot Create Device

-Это устройство является специально созданным устройством, единственное предназначение которого - программирование и кодирование. (Это не настоящий вакуум)

Raspberry Pi (с камерой)

- Это недорогая компьютерная плата, которая работает как мозг iRobot. Он может быть маленьким, но способен на многое. Камера - это дополнительное дополнение. Он также использует raspberry pi для получения всех своих функций и команд. Фотоаппарат, изображенный выше, установлен на 3D-печатной подставке, созданной факультетами инженерных наук Университета Теннесси.

Шаг 2: Файл базы данных Roomba

Файл базы данных Roomba
Файл базы данных Roomba

Существует главный файл, который вам понадобится, чтобы использовать правильные функции и команды для вашего Roomba. В этом файле вы написали код, из которого извлекаются функции, чтобы сделать работу с Roomba более управляемой.

Вы можете скачать файл по этой ссылке или загружаемый файл ниже

ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php

Шаг 3. Подключение к Roomba

Во-первых, вы должны убедиться, что ваш робот подключен к вашей плате raspberry pi с помощью разъема micro USB. Затем вам необходимо правильно подключить компьютер и робота к одному и тому же Wi-Fi. Как только это будет сделано, вы можете включить своего робота и подключиться к нему, используя данную команду в файле базы данных роботов. (Всегда выполняйте полную перезагрузку робота до и после его использования). Например, мы используем команду «r.roomba (19)» для подключения к нашему роботу, присваивая нашему устройству переменную r. Это относится к файлу базы данных, который устанавливает нашу переменную как структуру, на которую мы можем ссылаться в любой момент.

Шаг 4: Код

Код
Код
Код
Код

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

Мы начали с простой команды «r.setDriveVelocity (.06)», которая устанавливает скорость движения робота на 0,06 м / с. Это просто для того, чтобы робот двигался заранее

Затем наш основной скрипт запускается с цикла while, который извлекает данные данного робота, создавая структуры, на которые мы можем ссылаться и использовать в условных операторах ниже, что позволяет нам сообщить роботу о выполнении определенной команды на основе данных структуры. робот читает с помощью датчиков. Мы настроили его так, чтобы робот считывал показания датчиков обрыва и следовал по черной дорожке

while true% while цикл продолжается до тех пор, пока не произойдет что-то «ложное» (в данном случае он продолжается бесконечно) data = r.getCliffSensors; data2 = r.getBumpers;% непрерывно извлекает данные о значениях датчиков обрыва и присваивает их переменной% img = r.getImage; % Делает снимок с установленной камеры% image (img); % Показывает полученное изображение% red_mean = mean (mean (img (:,:, 1)));% Принимает среднее значение для зеленого цвета, если data.rightFront <2000 r.turnAngle (-2); % поворачивает Roomba примерно на 0,2 градуса по часовой стрелке, когда значение правого переднего датчика обрыва падает ниже 2000 r.setDriveVelocity (.05); elseif data.leftFront data.leftFront && 2000> data.rightFront r.moveDistance (.1); % указывает Roomba продолжать движение вперед со скоростью примерно 0,2 м / с, если оба значения от правого переднего и левого передних датчиков упадут ниже 2000% r.turnAngle (0); % указывает Roomba не поворачиваться, если выполняются вышеупомянутые условия.

elseif data2.right == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (.05); elseif data2.left == 1 r.moveDistance (-. 2); r.turnAngle (5); r.setDriveVelocity (.05); elseif data2.front == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (.05);

После этого цикла while мы переходим в другой цикл while, который запускает данные, полученные через камеру. И мы используем оператор if внутри этого цикла while, который распознает изображение с помощью определенной программы (alexnet), и как только он идентифицирует изображение, он немедленно запускает удаленное управление мобильным устройством

анет = алекснет; % Назначает глубокое обучение alexnet переменной, пока истинно% Бесконечный цикл while img = r.getImage; img = imresize (img, [227, 227]); label = classify (anet, img); if label == "бумажное полотенце" || label == "холодильник" label = "вода"; конечное изображение (img); заголовок (char (метка)); Drawow;

Цикл while, который позволяет нам управлять устройством с помощью телефона, извлекает эти данные из гироскопа телефона, и мы подключаем их к матрице, которая непрерывно передает данные обратно в MATLAB на компьютере. Мы используем оператор if, который считывает данные матрицы и дает результат, который перемещает устройство на основе определенных значений гироскопа телефона. Важно знать, что мы использовали датчики ориентации мобильного устройства. Упомянутая выше матрица «по порядку» классифицируется по каждому элементу датчиков ориентации телефона, а именно по азимуту, углу наклона и стороне. Операторы if создают условия, в которых указано, что, когда сторона превышает значения 50 или опускается ниже -50, робот перемещается на определенное расстояние вперед (положительное значение 50) или назад (отрицательное значение 50). То же самое и со значением высоты тона. Если значение шага превышает значение 25 или падает ниже -25, робот поворачивается на угол 1 градус (положительный 25) или отрицательный 1 градус (отрицательный 25)

while true pause (.1)% Пауза в 0,5 секунды перед каждым значением Controller = iphone. Orientation; % Назначает матрицу значений ориентации iPhone переменной Azimuthal = Controller (1); % Назначает первое значение матрицы переменной Pitch = Controller (2); % Назначает второе значение матрицы переменной (наклон вперед и назад, когда iPhone держится боком) Side = Controller (3); % Назначает третье значение матрицы переменной (наклон влево и вправо, когда iPhone держится боком)% Вызывает вывод на основе ориентации телефона, если Side> 130 || Side 25 r.moveDistance (-. 1)% Перемещает Roomba назад примерно на 0,1 метра, если iPhone наклонен назад минимум на 25 градусов, в противном случае, если сторона 25 r.turnAngle (-1)% Поворачивает Roomba примерно на 1 градус против часовой стрелки, если iPhone наклонен влево минимум на 25 градусов elseif Pitch <-25 r.turnAngle (1)% Поворачивает Roomba примерно на 1 градус по часовой стрелке, если iPhone наклонен минимум на 25 градусов в конец

Это лишь основные моменты основных частей нашего кода, которые мы включили, если вам нужно быстро скопировать и вставить раздел для вашего удобства. Однако весь наш код при необходимости прилагается ниже

Шаг 5: Заключение

Этот код, который мы написали, специально разработан для нашего робота, а также для нашего общего видения проекта. Наша цель состояла в том, чтобы использовать все наши навыки кодирования MATLAB, чтобы создать хорошо спроектированный сценарий, который использует большинство функций робота. Использование контроллера телефона не так сложно, как вы думаете, и мы надеемся, что наш код поможет вам лучше понять концепцию программирования iRobot.

Рекомендуемые: