Оглавление:

Roomba с MATLAB: 4 шага (с изображениями)
Roomba с MATLAB: 4 шага (с изображениями)

Видео: Roomba с MATLAB: 4 шага (с изображениями)

Видео: Roomba с MATLAB: 4 шага (с изображениями)
Видео: Краткое руководство по NeuralTools - Шаг 4: Обучение, тестирование и прогноз 2024, Ноябрь
Anonim
Roomba с MATLAB
Roomba с MATLAB

В этом проекте используется MATLAB и программируемый робот iRobot Create2. Проверяя наши знания MATLAB, мы можем запрограммировать Create2 для интерпретации изображений и обнаружения сигналов. Функциональность робота зависит в основном от мобильного приложения MATLAB и модуля камеры Raspberry Pi.

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

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

1. iRobot Create, версия 2

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

2. MATLAB 2017a

- Большинство старых версий будут совместимы с кодом, который мы использовали ниже. MATLAB определит команду, несовместимую с имеющейся у вас версией, и предложит наиболее подходящую команду.

3. Raspberry Pi 3 Модель B, версия 1.2

- Проверьте, какой Raspberry Pi совместим с вашим iRobot. См. Эту ссылку для получения дополнительной помощи: https://www.irobotweb.com/~/media/MainSite/PDFs/A … Это руководство предполагает, что вы работаете с предварительно запрограммированным Raspberry Pi. Имейте в виду, что вам нужно будет работать с предварительно запрограммированным Pi, чтобы следующие шаги работали. Использование предварительно запрограммированного Pi позволит вам выполнять все ваше кодирование только в MATLAB.

4. Модуль камеры V2 (для Raspberry Pi)

- Вы можете быть удивлены; Несмотря на свой размер, модуль камеры Raspberry Pi очень хорошего качества. Это самый дешевый и наиболее совместимый вариант для данного проекта.

Дополнительно: подставка для 3D-печати. Это используется для стабилизации камеры. Это не влияет на функциональность робота, но поможет вам при кодировании, если вы хотите использовать данные изображения для распознавания цвета и / или объекта.

Шаг 2: настройка

Конфигурация
Конфигурация
Конфигурация
Конфигурация

1. Подключение Raspberry Pi и модуля камеры (Аппаратное обеспечение)

- Для питания Raspberry Pi вам нужно будет подключить разъем micro USB с разъемом к разъему питания на микроконтроллере. Дополнительно: можно использовать регулятор напряжения, чтобы напряжение не превышало 5 В. После включения Raspberry Pi вы можете подключить его к своему роботу, запустив штекерный разъем USB a от материнской платы к USB-порту A на микроконтроллере.

- После подключения Pi к Roomba камера готова к установке. Модуль камеры будет намного меньше, чем вы ожидаете. Обратите внимание, что объектив прикреплен к датчику, а белая лента выходит из камеры. НЕ удаляйте и не рвите ленту! Это кабель, который вам нужен для подключения к Raspberry Pi. Сначала возьмитесь за конец ленты и найдите серебряные разъемы и синий кабель. Это по разные стороны. Затем найдите слот между портами Ethernet и HDMI на Raspberry Pi. Обратите внимание на маленький белый замок, закрывающий его. Медленно поднимите фиксатор, но не вынимайте его из гнезда, так как он сломается и будет безвозвратно поврежден. После того, как вы подняли замок, возьмите ленту и направьте серебристые разъемы к порту HDMI. Синяя сторона будет обращена к порту Ethernet. Медленно вставьте ленту в прорезь, пока она еще не заблокирована. Необязательно вставлять его в слот с силой. После вставки снова нажмите фиксатор. Если ваша камера надежно закреплена, вы сможете (осторожно) потянуть за ленту и почувствовать натяжение. Лента не должна ослабевать. После подключения камеры к Pi вы можете заметить, насколько она ослаблена. Вот почему мы использовали крепление, напечатанное на 3D-принтере, чтобы закрепить его. Вы сами решаете, какие материалы вы хотите использовать, чтобы камера оставалась неподвижной для получения высококачественного изображения.

2. Установка правильных файлов и подключение Roomba к вашему компьютеру. После того, как все ваше оборудование настроено, вы можете перейти к установке MATLAB вместе с соответствующими m-файлами, которые позволяют вам общаться с роботом. Чтобы сделать это, откройте MATLAB и создайте новую папку, чтобы хранить все связанные файлы вместе. Используйте этот скрипт для установки / обновления необходимых файлов:

- Все файлы теперь должны появиться в созданной вами папке. Щелкните правой кнопкой мыши в окне Current Folder и выберите «Add to Path», чтобы добавить этот путь в список каталогов, где MATLAB ищет файлы. Убедитесь, что все ваши файлы находятся по правильному пути.

3. После установки файлов вы можете начать подключаться к своему роботу. Начните с включения вашего робота, а затем выполните полную его перезагрузку сразу после запуска (не забывайте выполнять полную перезагрузку робота каждый раз до и после использования). Во-вторых, подключите робота и ноутбук к одной сети Wi-Fi. После этого мы поговорим с предварительно запрограммированным Raspberry Pi через MATLAB, вызвав Roomba, используя его имя и функцию roomba. Например, я бы подключился к роботу 28, используя следующую строку: R = roomba (28).

- Обратите внимание, как я назначил объект переменной R. Теперь я могу получить доступ к связанным функциям Roomba из установочного файла, рассматривая переменную R как структуру.

- R.turnAngle (90) Если все прошло хорошо, должен звучать музыкальный тон, подтверждающий соединение.

Шаг 3: MATLAB Logic

Документ PDF внизу этого шага представляет собой подробную логическую блок-схему нашего процесса кодирования в MATLAB. Мы активировали датчики обрыва, света и световых ударов, чтобы робот мог общаться с нами, когда он обнаруживает объект в непосредственной близости от него. Например, когда робот движется вперед, его датчики света сканируют объекты на его пути в соответствии с вектором, по которому он движется. Мы выбрали порог расстояния для робота, чтобы при приближении к объекту он реверсировал, а не сталкивался с ним. Наш робот также настроен на Twitter, который мы указали в процессе кодирования (это будет показано ниже).

Чтобы улучшить опыт, мы использовали приложение MATLAB на наших мобильных устройствах, чтобы мы могли контролировать движения робота, просто наклоняя наши телефоны. Это необязательное действие, так как вы, безусловно, можете заставить робота двигаться, используя вместо этого команду moveDistance в сегменте кода MATLAB. Имейте в виду, что использование команд MATLAB для управления вашим роботом предпочтительнее, если ваша цель - быть точной. Если вы хотите нацелить своего робота так, чтобы камера делала снимок в определенном месте, может быть лучше закодировать движения робота в MATLAB. Хотя это развлекает, использование приложения MATLAB для управления вашим роботом нежелательно для точности.

Код дает команду Roomba выполнить базовую настройку, а затем продолжить ее в непрерывном цикле. Сначала ноутбук установит связь с Roomba с помощью команды Roomba (). Он также устанавливает соединение с твиттером с помощью команды webwrite () в MATLAB. Цикл содержит пять основных логических потоков в зависимости от среды, окружающей Roomba. Сначала Roomba проверяет наличие препятствий и корректирует движение в обратном направлении, если обнаруживает, что им препятствуют. В этот цикл встроен второй путь, который предупреждает пользователей, если Roomba уносится. Важная утилита в суровой марсианской зоне боевых действий. После того, как Roomba определит, что его положение является безопасным, он смотрит на мобильное устройство, чтобы определить свое следующее движение. Если мобильное устройство наклонено вперед, оно вычислит базовую скорость в зависимости от степени измерения крена, а затем отрегулирует частоту вращения отдельных колес для поворота в зависимости от угла наклона. Телефон также может перемещать Roomba задним ходом. Последние два пути проходят через нейтральное состояние мобильного устройства. В состоянии покоя Roomba будет искать флаг инопланетянина и соответствующим образом предупреждать пользователя.

Ниже представлен наш код (завершенный в MATLAB 2017a)

% input: данные ориентации от устройства, подключенного к Wi-Fi, камеры

% информация, данные датчика

% выходов: движение контролируется устройством, подключенным к Wi-Fi, а движение

% проверяется на безопасность путем считывания данных датчика. Если камера обнаруживает

% инопланетный флаг, тогда Roomba ответит твитом вражеского флага

% был замечен.

% цель: наше устройство не имеет никакой цели, кроме как защищать тех, кто

% создал его, он служит своему создателю и делает

% именно то, что он сказал.

% Использование: по сути, программа будет работать сама по себе.

очистить все, закрыть все, clc

% Инициализация объектов и переменных

r = roomba (28);

m = mobiledev;

% use response = webwrite (имя хоста, данные)

hostname = 'https://api.thingspeak.com/apps/thingtweet/1/statuses/update';

API = 'SGZCTNQXCWAHRCT5';

tweet = 'Робокоп работает… ожидает команды';

data = strcat ('api_key =', API, '& status =', твит);

reponse = webwrite (имя хоста, данные);

% постоянно работающий цикл

а 1 == 1

% Структуры, содержащие релевантные данные

o = м. ориентация; % ориентации мобильного устройства

свет = r.getLightBumpers (); % Значений светового бампера

a = r.getCliffSensors (); % Значений датчика CLiff

bump = r.getBumpers (); % Датчики бампера

% проверить бамперы

если bump.right == 1 || bump.left == 1 || bump.front == 1

r.moveDistance (-. 2,.2);

% проверьте датчики света

elseif light.left> 60 || light.leftFront> 60 || light.leftCenter> 60 || light.right> 60 || light.rightFront> 60 || light.rightCenter> 60

r.moveDistance (-. 2,.2);

% check Cliff Sensors

% Антивор Сигнал и уведомление

elseif a.left <300 && a.right <300 && a.leftFront <300 && a.rightFront <300

r.stop ();

r.beep ();

tweet = 'Робокоп поднялся!'

data = strcat ('api_key =', API, '& status =', твит);

reponse = webwrite (имя хоста, данные);

% Обычная операция уклонения от обрыва

elseif a.left <300 || a.right <300 || a.leftFront <300 || a. rightFront <300

r.moveDistance (-. 2,.2);

% Roomba прошел проверку и теперь будет работать в обычном режиме.

% Первоначально измеряется рулон устройства, и он становится базовым.

% скорости, которая затем используется для расчета скорости вращения колеса

%Движение вперед

elseif o (3)> = 0 && o (3) <= 60

baseVel = (-. 5/60) * (o (3) -60);

если o (2)> = - 70 && o (2) <0

r.setDriveVelocity (baseVel + (. 3/50) * abs (o (2)), baseVel - (. 3/50) * abs (o (2)));

иначе, если o (2) = 0

r.setDriveVelocity (baseVel - (. 3/50) * abs (o (2)), baseVel + (. 3/50) * abs (o (2)));

иначе r.stop

конец

% Движение назад

elseif o (3)> 100 && o (3) <150

r.setDriveVelocity (-. 2, -.2)

r.beep ();

r.beep ();

% отдыхающий roomba будет искать флаг пришельцев, помеченный как флуоресцентный.

% зеленый Кусок бумаги

еще

r.stop

img = r.getImage (); % взять изображение

порог = graythresh (img (200: 383,:, 2)) +. 1; % уровень известковой зелени

если порог>.42

tweet = 'Враг замечен !!'

data = strcat ('api_key =', API, '& status =', твит);

reponse = webwrite (имя хоста, данные);

еще

r.stop

конец

конец

конец

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

Помните, что вы можете использовать сценарий, который мы написали выше, но вы всегда можете изменить его в соответствии со своими потребностями. Необязательно управлять телефоном! (Тем не менее, это делает его более увлекательным.) Выберите, какой метод вы предпочитаете использовать для управления своим роботом. Катайся со своим роботом и наслаждайся!

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