Съдържание:

Паркинг за Roomba: 6 стъпки
Паркинг за Roomba: 6 стъпки

Видео: Паркинг за Roomba: 6 стъпки

Видео: Паркинг за Roomba: 6 стъпки
Видео: Street Fighter 6 - World Tour - Roomba Fight 2024, Юли
Anonim
Паркинг Roomba Pal
Паркинг Roomba Pal

Този проект използва iRobot Create програмируема roomba, MATLAB r2018a и MATLAB mobile. Използвайки тези три среди и нашите познания за кодиране, ние програмирахме iRobot Create за тълкуване на цветовете и използване на вградени сензори за изпълнение на задачи. Тези проекти зависят от комуникацията на Raspberry Pi и MATLAB за изпълнение на тези задачи.

Стъпка 1: Материали

Материали
Материали
Материали
Материали

1. iRobot Създаване на робот

2. MATLAB r2018a

3. Малина Пи

4. Модул за камера

5. 3-D отпечатана стойка за стабилизатор на камерата

6. Смартфон с инсталиран мобилен MATLAB

7. Лаптоп/компютър с инсталиран MATLAB

Стъпка 2: Свързване

Тази стъпка е свързана с Raspberry Pi към робота, второ свързване на робота към вашия компютър и свързване на смартфона към компютъра.

Най -лесната част от този процес е свързването на Raspberry Pi към вашия робот, тъй като Raspberry Pi е монтиран на върха на робота. Има един кабел от робота, който трябва само да включите отстрани на Raspberry Pi.

Следващата стъпка е свързването на робота към компютъра, така че да можете да изпълнявате команди, които роботът да изпълнява. Първото нещо, което трябва да направите, е да свържете компютъра си към безжичната мрежа, която създава вашата румба. Сега се препоръчва да използвате иконата Set Path в MATLAB, за да зададете пътя, така че да можете да използвате функциите в инструментариума Roomba от MATLAB. Всеки път, когато започвате и приключвате използването с робота, трябва да извършите твърдо нулиране на робота „Салют с два пръста“, което означава, че трябва да задържите докинг и бутоните за десет секунди, докато светлината угасне, което показва освобождаването. Успех с това твърдо нулиране, ако чуете робота да свири кратка скала. След това трябва да се свържете с roomba, като използвате ред код като този „r = roomba (x)“, където „x“е номерът, определен за робота, който имате.

И накрая, трябва да изтеглите MATLAB mobile на всяко мобилно устройство, което ще използвате за този проект, и това приложение е достъпно както на устройства с Android, така и на Apple. След като приложението е инсталирано, ще трябва да влезете, като използвате вашите идентификационни данни. След това трябва да свържете това устройство към компютъра си, като използвате раздела с надпис „Още“-> след това щракнете върху „настройки“-> след това щракнете върху „Добавяне на компютър“, това трябва да покаже екрана, показан на снимките по -горе. След като видите това, Следващата стъпка, която трябва да преминете, е просто включване и преглеждане на информацията, която иска. След като се свържете успешно, ще можете да извикате функции, които сте определили на вашия компютър на телефона си, за да управлявате робота си.

Стъпка 3: Логично създаване на MATLAB код за използване на сензори

Логично Създаване на MATLAB код за използване на сензори
Логично Създаване на MATLAB код за използване на сензори

Кодът ще бъде най -лесният за създаване, когато по -голямата част от него е в рамките на цикъл while, така че roomba да може постоянно да актуализира валидни стойности, които разглежда. Ако има грешка, MATLAB ще покаже грешка и къде се появява в кода, което прави отстраняването на неизправности сравнително лесно.

Проектиран в r2018a MATLAB, този код използва стандартните кутии с инструменти, iRobot Create toolbox, както и мобилния набор от инструменти MATLAB. Roomba, използвана в този пример, е обозначена като 26, а r = roomba (26) трябва да се изпълнява само веднъж, за да комуникира напълно с roomba.

Код:

функция parkassist (x), ако x == 1

r = roomba (26) % се свързва с roomba

докато е вярно

r.setDriveVelocity (.05,.05) % задава roomba на по -бавна скорост на шофиране

bump = r.getBumpers % получава данните от сензорите за удар

cliff = r.getCliffSensors % получава данните от сензорите за скали

light = r.getLightBumpers % получава данните от сензорите за светлинен удар

img = r.getImage;% чете камерата от робота

red_mean = средно (средно (img (:,:, 1))) % чете средното количество червени пиксели

green_mean = mean (mean (img (:,:, 2))) % чете средното количество зелени пиксели

blue_mean = mean (mean (img (:,:, 3))) % чете средното количество сини пиксели

ако bump.front == 1 %чете сензорите отпред

r.stop %спира roomba

msgbox ('Пътят е скрит!', 'Съобщение на асистент при паркиране') % показва съобщение, че пътят е затъмнен прекъсване % прекратява цикъла

иначе ако green_mean> 150

r.stop %спира roomba

cont = questdlg ('Продължи?', 'Пътят завършен') %показва полето с въпроси с молба за продължаване

ако cont == 'Да'

parkassist (1) %рестартира кода

иначе

край

break % завършва цикъла

иначе ако red_mean> 140

r.turnAngle (45) %завърта roomba на 45 градуса

r.timeStart %стартира брояч на време

докато е вярно

r.setDriveVelocity (.05,.05) %задава скоростта на roomba

time = r.timeGet %присвоява времето на променлива

bump = r.getBumpers % получава данните от сензорите за удар

cliff = r.getCliffSensors % получава данните от сензорите за скали

light = r.getLightBumpers % получава данните от сензорите за светлинен удар

img = r.getImage;% чете камерата от робота

red_mean = средно (средно (img (:,:, 1))) % чете средното количество червени пиксели

green_mean = mean (mean (img (:,:, 2))) % чете средното количество зелени пиксели

blue_mean = mean (mean (img (:,:, 3))) % чете средното количество сини пиксели

ако blue_mean> 120

r.moveDistance (-0.01) % премества roomba назад с определена дистанция

msgbox ('Water Found!', 'Message Assistant Message') % показва съобщение, че водата е намерена r.turnAngle (-80) % завърта roomba 80 градуса

break % завършва текущия цикъл

elseif light.rightFront> 25 || light.leftFront> 25 %чете сензори за леки удари

r.moveDistance (-0.01) % премества roomba назад на зададено разстояние

r.turnAngle (-35) % завърта roomba на 35 градуса

break %завършва текущия цикъл

elseif cliff.rightFront <2500 && cliff.leftFront <2500 %чете и двата сензора за скали

r.moveDistance (-0.1) % премества roomba назад на зададено разстояние

r.turnAngle (-80) %завърта roomba на 80 градуса

break % завършва текущия цикъл

иначе време> = 3

r.stop %спира roomba

contin = questdlg ('Station Free, Continue?', 'Message Assistant Message') %пита дали roomba трябва да продължи, ако contin == 'Yes'

r.turnAngle (-90) % завърта roomba на 90 градуса

parkassist (1) %рестартира функцията

иначе

r.stop % спира roomba

край

иначе

край

край

elseif cliff.rightFront <2500 && cliff.leftFront <2500 %чете и двата сензора за скали

r.moveDistance (-0.1) %премества roomba назад на зададено разстояние

r.turnAngle (-90) %завърта roomba на 90 градуса

elseif cliff.rightFront <2500 %чете десния сензор за скали

r.turnAngle (-5) %леко завърта roomba в обратната посока на сензора за скалите

elseif cliff.leftFront <2500 %чете сензора за лявата скала

r.turnAngle (5) %леко завърта roomba в обратната посока на сензора за скалите

иначе

край

край

край

Стъпка 4: Тестване на кода и робота

Тестване на кода и робота
Тестване на кода и робота
Тестване на кода и робота
Тестване на кода и робота
Тестване на кода и робота
Тестване на кода и робота

След като кодът беше разработен, следващата стъпка беше да тествате кода и робота. Тъй като в кода могат да се направят много различни корекции, като ъгъла, който роботът завърта, скоростта, в която се движи, и праговете за всеки цвят, най -добрият начин да разберете тези стойности за вашия робот е да тествате ги и се променяйте, докато вървите. За всеки работен ден, който имахме, ние непрекъснато променяхме тези стойности, тъй като някои от тях разчитат на средата, в която работи вашият робот. Най -добрият начин, който открихме, беше да поставим roomba по пътя, който искате да следва, и да имате бариера достатъчно висока, така че камерата да не може да открие цветове, които не искате. Следващата стъпка е да го пуснете и да му покажете цветовете, които искате, когато искате да изпълни тази задача. Докато вървите, ако видите проблем, най -добре е да натиснете предната броня, като я спрете, след това променете параметъра, с който сте имали проблеми.

Стъпка 5: Разпознаване на грешка

С всеки завършен проект винаги има източници на грешки. За нас изпитахме грешка с простия факт, че роботът не е точен с ъгъла, под който се завърта, така че ако му кажете да завърти 45 градуса, това няма да е точно. Друг източник на грешка за нас беше, че понякога роботът се повреди и вие имате трудно да го нулирате, преди да заработи отново. Основният последен източник на грешка за нас беше, че един и същ код няма да има същия ефект върху различните роботи, така че може да се наложи да бъдете търпеливи и да го коригирате съответно.

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

Сега имате всички инструменти, с които можете да играете с вашата ромба, което означава, че можете да манипулирате кода така, както искате да постигнете целите, които желаете. Това трябва да е най -хубавата част от деня ви, така че се забавлявайте и шофирайте безопасно!

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