Съдържание:

Roomba с MATLAB: 4 стъпки (със снимки)
Roomba с MATLAB: 4 стъпки (със снимки)

Видео: Roomba с MATLAB: 4 стъпки (със снимки)

Видео: Roomba с MATLAB: 4 стъпки (със снимки)
Видео: Mr. Roombato - A MATLAB-Driven Roomba Project 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 Camera Module е с много добро качество. Това е най -евтиният и съвместим вариант за този проект.

По избор: щанд с 3D печат. Това се използва за стабилизиране на камерата. Това не засяга функционалността на робота, но ще помогне за кодирането ви, ако искате да използвате данни за изображения за разпознаване на цвят и/или обект.

Стъпка 2: Конфигурация

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

1. Свързване на Raspberry Pi и модул за камера (хардуер)

- За да захранвате Raspberry Pi, ще трябва да пуснете мъжки микро USB към женския порт за захранване на микроконтролера. По избор: Може да се използва регулатор на напрежението, за да се гарантира, че напрежението не надвишава 5V. След като захранвате Raspberry Pi, можете да го свържете към вашия робот, като пуснете USB a от мъжки край от дънната платка към USB порт A на микроконтролера.

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

2. Инсталиране на подходящи файлове и свързване на Roomba към компютъра След като целият ви хардуер е конфигуриран, сега можете да преминете към инсталиране на MATLAB заедно със свързаните с него m-файлове, които ви позволяват да комуникирате с робота. За да направите това, отворете MATLAB и създайте нова папка, за да поддържате всички свързани файлове заедно. Използвайте този скрипт, за да инсталирате/актуализирате необходимите файлове:

- Всички файлове трябва да се показват в създадената от вас папка. Щракнете с десния бутон в прозореца на текущата папка и изберете „Добавяне към пътя“, за да добавите този път към списъка с директории, където MATLAB търси файлове. Уверете се, че всичките ви файлове са на правилния път.

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

- Забележете как присвоих обекта на променлива R. Вече мога да получа достъп до свързаните функции на Roomba от инсталационния файл, като третира променливата R като структура.

- R.turnAngle (90) Ако всичко вървеше добре, трябва да свири музикален тон, потвърждаващ връзката.

Стъпка 3: Логика на MATLAB

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

За да подобрим изживяването, използвахме приложението MATLAB на нашите мобилни устройства, за да можем да контролираме движенията на робота само като накланяме телефоните си. Това е незадължителна дейност, тъй като със сигурност можете да накарате робота да се движи, като вместо това използвате командата moveDistance в кодовия сегмент MATLAB. Имайте предвид, че използването на команди MATLAB за управление на вашия робот е за предпочитане, ако целта ви е да бъдете точни. Ако искате да насочите робота си, така че камерата да направи снимка на определено място, може да е по -добре да кодирате движенията на робота в MATLAB. Докато се забавлявате, използването на приложението MATLAB за управление на вашия робот не е желателно за точност.

Кодът заповядва на Roomba да извърши основна настройка и след това да продължи през непрекъснат цикъл. Първоначално лаптопът ще установи връзка с Roomba с помощта на командата Roomba (). Той също така настройва Twitter връзката с помощта на командата webwrite () в MATLAB. Цикълът съдържа пет основни логически потока в зависимост от средата около Roomba. Първо Roomba проверява за препятствия и се настройва назад, ако установи, че е възпрепятстван. Вграден в този цикъл е вторият път, който предупреждава потребителите, ако Roomba се пренася. Важна помощна програма в суровата марсианска военна зона. След като Roomba установи, че позицията му е безопасна, тя гледа към мобилното устройство, за да определи следващото си движение. Ако мобилното устройство е наклонено напред, то ще изчисли базова скорост в зависимост от тежестта на измерването на ролката, след което ще регулира отделните скорости на колелото, за да се завърти според степента на стъпката. Телефонът също може да премества Roomba в заден ход. Неутрално състояние на мобилното устройство затваря последните два пътя. Почиващата Roomba ще търси флаг на извънземен и ще предупреди потребителя съответно.

По -долу е нашият код (попълнен в MATLAB 2017a)

%входове: Данни за ориентация от wifi свързано устройство, камера

%информация, сензорни данни

%изходи: движението се контролира от свързаното с wifi устройство и движението

% се проверява за безопасност чрез четене на данните от сензора. Ако камерата разпознае

% чуждестранно знаме, след което roomba отговаря, като туитва флага на врага

% е забелязан.

%цел: нашето устройство живее без друга цел, освен за да защити онези, които

% го е създал, той служи на своя създател и го прави

% точно това, което е казано.

%Употреба: по същество програмата ще работи самостоятелно.

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

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

r = roomba (28);

m = mobiledev;

%използване на отговор = webwrite (име на хост, данни)

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

API = 'SGZCTNQXCWAHRCT5';

tweet = 'RoboCop е оперативен … Очаква се команда';

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

отговор = webwrite (име на хост, данни);

%постоянно работещ цикъл

докато 1 == 1

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

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

light = r.getLightBumpers (); %Стойности на лека броня

a = r.getCliffSensors (); %CLiff сензорни стойности

bump = r.getBumpers (); %Сензори за броня

%контролни брони

ако bump.right == 1 || bump.left == 1 || bump.front == 1

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

%сензори за контролна светлина

иначе светлината.ляво> 60 || light.leftFront> 60 || light.leftCenter> 60 || светлина.дясно> 60 || light.rightFront> 60 || light.rightCenter> 60

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

%проверете сензорите за скали

%Сигнал и уведомление за кражба

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

r.stop ();

r.beep ();

tweet = 'RoboCop е отменен!'

данни = strcat ('api_key =', API, '& status =', туит);

отговор = webwrite (име на хост, данни);

%Нормална операция за избягване на скали

иначе ако a.left <300 || а.право <300 || a.leftFront <300 || a.rightFront <300

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

%Roomba премина проверките и сега ще работи с нормална работа.

%Първоначално се измерва ролката на устройството и става основа

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

%Напред движение

иначе ако 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

край

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

иначе o (3)> 100 && o (3) <150

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

r.beep ();

r.beep ();

%Roomba в покой ще търси флага на извънземните, маркиран като флуоресцентен

%зелено Парче хартия

иначе

r.stop

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

праг = сив прах (img (200: 383,:, 2))+. 1; %калк зелено ниво

ако праг>.42

tweet = 'Враг забелязан !!'

данни = strcat ('api_key =', API, '& status =', туит);

отговор = webwrite (име на хост, данни);

иначе

r.stop

край

край

край

Стъпка 4: Заключение

Не забравяйте, че можете да използвате скрипта, който написахме по -горе, но винаги можете да го промените според вашите нужди. Не е задължително да се контролира от телефона ви! (Това обаче го прави по -забавно.) Изберете кой метод предпочитате да използвате за управление на вашия робот. Шофирайте с вашия робот и се наслаждавайте!

Препоръчано: