Оглавление:
- Шаг 1: Детали и материалы
- Шаг 2: Файл базы данных Roomba
- Шаг 3. Подключение к Roomba
- Шаг 4: Код
- Шаг 5: Заключение
Видео: MATLAB Controlled Roomba: 5 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:52
Целью этого проекта является использование 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 более управляемой.
Вы можете скачать файл по этой ссылке или загружаемый файл ниже
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.
Рекомендуемые:
Домашняя автоматизация Infinity Gauntlet Controlled: 8 шагов (с изображениями)
Infinity Gauntlet Controlled Home Automation: в моем предыдущем проекте я сделал бесконечную перчатку, которая управляет выключателем света. Я хотел использовать шесть камней, и каждый камень мог управлять прибором, дверным замком или освещением, поэтому я создал систему домашней автоматизации, используя перчатку бесконечности. В этом проекте
Светодиод мигает {Button Controlled}: 5 шагов
Светодиод мигает {Button Controlled}: я учусь в Кан Цзяо. Это мой проект, я использую Arduino и сделал мигающий светодиод с кнопкой, которая может заставить его мигать. Вы можете положить его на ткань, и, когда некоторые люди находятся слишком близко к вам, вы можете нажать кнопку и лампочку
Проект Roomba MATLAB: 5 шагов
Проект Roomba MATLAB: текущий план НАСА для марсохода состоит в том, чтобы он был сборщиком данных и перемещался по Марсу, собирая образцы почвы, чтобы доставить их на Землю, чтобы ученые могли видеть, были ли на ней какие-либо предыдущие формы жизни. планета. Дополнительный
От Roomba до вездехода всего за 5 шагов !: 5 шагов
От Roomba до Rover всего за 5 шагов! Роботы Roomba - это веселый и простой способ окунуться в мир робототехники. В этом руководстве мы подробно расскажем, как превратить простой Roomba в управляемый ровер, который одновременно анализирует свое окружение. Список деталей1. MATLAB2.) Roomb
Roomba с MATLAB: 4 шага (с изображениями)
Roomba с MATLAB: в этом проекте используется MATLAB и программируемый робот iRobot Create2. Проверяя наши знания MATLAB, мы можем запрограммировать Create2 для интерпретации изображений и обнаружения сигналов. Функциональность робота зависит в основном от