Съдържание:

Контролирана Roomba от MATLAB: 5 стъпки
Контролирана Roomba от MATLAB: 5 стъпки

Видео: Контролирана Roomba от MATLAB: 5 стъпки

Видео: Контролирана Roomba от MATLAB: 5 стъпки
Видео: DIY Radar With Ultrasonic Sensor And Chat-GPT Generated Arduino Code | Coders Cafe 2024, Юли
Anonim
Контролирана Roomba от MATLAB
Контролирана Roomba от MATLAB
Контролирана Roomba от MATLAB
Контролирана Roomba от MATLAB

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

Стъпка 1: Части и материали

Части и материали
Части и материали
Части и материали
Части и материали
Части и материали
Части и материали
Части и материали
Части и материали

MATLAB 2018a

-Версията 2018 на MATLAB е най -предпочитаната версия, най -вече защото работи най -добре с кода, който се свързва с мобилното устройство. Повечето от нашия код обаче могат да бъдат интерпретирани в повечето версии на MATLAB.

iRobot Създаване на устройство

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

Raspberry Pi (с камера)

- Това е евтина компютърна платка, която работи като мозък на iRobot. Може да е малък, но е способен на много неща. Камерата е допълнителна добавка. Той също така използва малиново пи, за да получи всичките си функции и команди. Камерата, изобразена по -горе, е монтирана на триизмерно отпечатана стойка, създадена от отделите „Инженерни основи“в Университета на Тенеси

Стъпка 2: Файл с база данни Roomba

Файл от база данни Roomba
Файл от база данни Roomba

Има основен файл, който ще ви е необходим, за да използвате правилните функции и команди за вашата ромба. Този файл е мястото, където сте написали функции за извличане на код, за да направите работата с вашата roomba по -управляема.

Можете да изтеглите файла на тази връзка или файла за изтегляне по -долу

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

Стъпка 3: Свързване към Roomba

Първо, трябва да се уверите, че вашият робот е свързан към вашата малинова pi платка с помощта на микро USB щепсел. След това трябва правилно да свържете компютъра и робота към същия WiFi. След като това е направено, можете да включите вашия робот и да се свържете с него, като използвате дадената команда във файла на базата данни на робота. (Винаги твърдо нулирайте робота си преди и след като го използвате). Например, използваме командата "r.roomba (19)", за да се свържем с нашия робот, като присвоим променливата r на нашето устройство. Това се връща към файла с базата данни, който настройва нашата променлива като структура, към която можем да се позовем във всеки даден момент.

Стъпка 4: Кодът

Кодът
Кодът
Кодът
Кодът

По -долу сме приложили пълния код, но ето кратък преглед, който подчертава важните елементи в нашия скрипт. Използвахме всички сензори, както и камерата, за да увеличим максимално потенциала на нашия робот. Включихме и код, който ни позволи да свържем мобилно устройство с нашия робот и да използваме неговия гриоскоп за ръчно управление.

Започнахме с простата команда "r.setDriveVelocity (.06)", която задава скоростта на робота напред на.06 m/s. Това е само за да накарате робота да се движи предварително

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

докато true % while цикълът продължава, докато се случи нещо "false" (в този случай продължава безкрайно) data = r.getCliffSensors; data2 = r.getBumpers; % извлича непрекъснато данни за стойностите на сензора за скали и ги присвоява на променлива % img = r.getImage; % Прави снимка от монтираната камера % image (img); % Показва изображението, което е взето % red_mean = средно (средно (img (:,:, 1))); % Поема средната стойност за зеления цвят, ако data.rightFront <2000 r.turnAngle (-2); % завърта Roomba приблизително с.2 градуса CW, след като стойността за сензорите на дясната предна скала падне под 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) и след като идентифицира изображението, веднага задейства дистанционното управление на мобилното устройство

anet = alexnet; % Присвоява задълбочено обучение на alexnet на променлива while true % Безкрайна докато цикъл img = r.getImage; img = imresize (img, [227, 227]); етикет = класифициране (anet, img); ако етикет == "хартиена кърпа" || етикет == "хладилник" етикет = "вода"; крайно изображение (img); заглавие (char (етикет)); теглене;

Цикълът while, който ни позволява да управляваме устройството с телефона си, извлича тези данни от жироскопа на телефона и го включваме в матрица, която непрекъснато предава данни обратно в MATLAB на компютъра. Използваме оператор if, който чете данните от матрицата и дава изход, който премества устройството въз основа на определени стойности на жироскопа на телефона. Важно е да знаете, че сме използвали сензорите за ориентация на мобилното устройство. Матрицата една по три, спомената по -горе, е категоризирана от всеки елемент от сензорите за ориентация на телефона, който е азимут, височина и страна. Ако изявленията създават условия, които заявяват, когато страната надвишава стойностите 50 или пада под -50, тогава роботът се движи на определено разстояние напред (положително 50) или назад (отрицателно 50). Същото важи и за стойността на терена. Ако стойността на височината надвишава стойността на 25 от падането под -25, роботът се завърта под ъгъл от 1 градус (положителен 25) или отрицателен 1 градус (отрицателен 25)

докато истинска пауза (.1) % Пауза от.5 секунди преди всяка стойност да бъде взета Контролер = iphone. Orientation; % Присвоява матрицата за стойностите на ориентацията на iPhone към променлива Azimuthal = Controller (1); % Присвоява първата стойност на матрицата на променлива Pitch = Controller (2); % Присвоява втората стойност на матрицата на променлива (наклон напред и назад, когато iPhone се държи настрани) Страна = Контролер (3); % Присвоява третата стойност на матрицата на променлива (наклон наляво и надясно, когато iPhone се държи настрани) % Предизвиква изход въз основа на ориентацията на телефона, ако Страна> 130 || Страна 25 r.moveDistance (-. 1) % Премества Roomba назад приблизително.1 метра, ако iPhone е наклонен назад поне 25 отклонения иначе Side 25 r.turnAngle (-1) % Завърта Roomba приблизително 1 градус CCW, ако iPhone е наклонен наляво поне 25 градуса иначе, ако Pitch <-25 r.turnAngle (1) % Обръща Roomba приблизително на 1 градус CW, ако iPhone е наклонен поне 25 градуса

Това са само акцентите на основните части от нашия код, които включихме, ако трябва бързо да копирате и поставите раздел за ваша полза. Целият ни код обаче е приложен по -долу, ако е необходимо

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

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

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