Съдържание:

Roomba, подпомагаща астронавтите: 4 стъпки
Roomba, подпомагаща астронавтите: 4 стъпки

Видео: Roomba, подпомагаща астронавтите: 4 стъпки

Видео: Roomba, подпомагаща астронавтите: 4 стъпки
Видео: Отработка взаимодействия космонавта с антропоморфным роботом 2024, Юли
Anonim
Астронавт, помагащ на Roomba
Астронавт, помагащ на Roomba

Този проект е направен чрез използване на Raspberry Pi 3 на борда на iRobot Create Version 2. MATLAB се използва за програмиране на робота да следва конкретни инструкции, използвайки неговите сензори и камера. Сензорите и камерите се използват за изпълнение на специфични задачи, които биха последвали астронавт и му предоставят възможност да комуникира с домашната си база, ако нещо се обърка.

Стъпка 1: Необходими части

Необходими части
Необходими части
Необходими части
Необходими части
Необходими части
Необходими части
Необходими части
Необходими части

1. iRobot Създаване на версия 2

IRobot Create е най -съществената част от този проект, тъй като е програмируем и може да бъде чудесно представяне за действителен марсоход, който следва астронавтите и им помага в бъдеще

2. Малина Пи 3

Raspberry Pi беше програмируемият, използван за този проект. Кодът е предназначен за Pi, а версията на прикрепения Pi е 3 (модел B). Други програмируеми платки като arduino са използваеми, но arduino и повечето други платки ще изискват различно кодиране, отколкото е описано в друга стъпка

3. Модул на Raspberry Pi камера

Единствената външна връзка с Raspberry Pi, необходима за този проект, е модулът на камерата. Модулът на камерата е неразделна част от този проект, тъй като roomba ще изпълнява задачи само въз основа на това, което вижда в камерата

4. MATLAB 2018a

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

Стъпка 2: Файлове и конфигурация на камерата

Файлове и конфигурация на камерата
Файлове и конфигурация на камерата

1. Връзки на Raspberry Pi и камера към roomba

  • Pi може да се свърже директно с iRobot с микро USB. Това е всичко, което трябва да бъде готово за употреба. Препоръчва се обаче тя да бъде поставена сигурно върху ромбата, както е показано на снимките през цялата презентация досега.
  • Камерата има директна връзка с Raspberry Pi и силно се препоръчва нещо да бъде закупено или направено, за да се държи камерата директно нагоре. Няма истински смисъл от камерата, ако не може да се държи на място, за да покаже какво вижда румба.

2. Файлове

  • След като настроите и свържете всичко, уверете се, че роботът е нулиран и готов за работа, като задържите бутоните „Spot“и „Dock“за 10 секунди заедно.
  • Тук първо е необходим MATLAB. Файловете за roomba трябва първо да бъдат инсталирани и всичко, което е необходимо за тези файлове, е да се стартира е кодът, предоставен на тази връзка:
  • https://ef.engr.utk.edu/ef230-2017-08//projects/ro…

Стъпка 3: Първоначално тестване на Roomba

Трябва да се извършат много първоначални проверки на roomba, за да се уверите, че работи.

1. Уверете се, че сте свързани към същата WiFi мрежа като roomba. Без това никога няма да се свържете чрез MATLAB.

2. Разберете на кой номер е назначена вашата roomba, за да можете специално да се свържете с избраната от вас roomba. Например, ако номерът на вашата roomba е 30, ще се свържете с него, като въведете roomba (30) в командния прозорец в MATLAB.

3. Roomba може да се управлява чрез структури в MATLAB. Например, ако зададете кода си за roomba (30) на променливата 'r', роботът може да бъде преместен напред с командата r.moveDistance (0.2, 0.1).

4. Има много различни команди, които могат да бъдат съобщени на roomba и те могат да бъдат видени чрез въвеждане на „doc roomba“в командния прозорец.

5. Сензорите за отчитане на светлината, ударите и скалите могат да бъдат прочетени с помощта на командите, виждани в „doc roomba“, но начин да имате постоянно, спретнато меню, за да видите данните от сензора, може да се види с помощта на „r.testSensors '.

6. След като тествате всичко това, софтуерът за събиране на изображения на робота може да се използва за четене и разглеждане на направените снимки. Основният код за това ще бъде img = r.getImage и imshow (img);.

7. RGB стойностите на картината могат да бъдат намерени с кодовете red_mean = mean (mean (img (:,:, 1)));

зелено_средно = средно (средно (img (:,:, 2))); и blue_mean = средно (средно (img (:,:, 3)));.

Стъпка 4: Пример за MATLAB код

Пример за MATLAB код
Пример за MATLAB код

В този момент вече сте готови да използвате сензорите и софтуера за заснемане на изображения, за да създадете свое собствено завъртане на прототип Mars Rover, подпомаган от човека. Нашият пример е да следваме астронавта, като проследяваме белия цвят и се движим към него. Роботът ще издаде звуков сигнал, ако сензорите му четат високи стойности, така че астронавтът може да нулира робота, ако е заседнал, или да отиде, да го вземе и да го нулира, ако е заседнал на скала. Той обаче чете тези грешки, стига да е бял. Без да може да види бял цвят, роботът ще влезе в режим на грешка. Програмирано е да изпраща два различни вида имейли обратно в домашната база в зависимост от това, което вижда. Ако види цвета на кожата на астронавта, това очевидно не е добре, така че ще предупреди домашната база, ако астронавтът има кожа, показваща неизправност на костюма. Другото съобщение се подготвя, ако астронавтът просто изчезне от полезрението. Ако за камерите не се показва бял цвят или цвят на кожата, роботът ще се завърти и ще изпрати друг, но различен имейл. Изображенията, където румба не вижда астронавта, ще бъдат изпратени заедно със съобщението в имейлите. Кодът за нашия проект е показан по -долу:

за i = 1:.1: 3 img = r.getImage; изображение (img) червено_средно = средно (средно (img (:,:, 1))); зелено_средно = средно (средно (img (:,:, 2))); синьо_средно = средно (средно (img (:,:, 3))); ако red_mean> 110 && red_mean 110 && blue_mean 110 && green_mean0 || bump.left> 0 || bump.front> 0 r.beep () r.beep () r.beep () r.stop elseif cliff.left <10 || cliff.leftFront <10 || cliff.rightFront <10 || cliff.right700 || light.leftFront> 700 || light.leftCenter> 700 || light.rightCenter> 700 || light.rightFront> 700 || light.право> 700 r.beep () r.beep () r.beep () r.beep () r.beep () r.stop else за i = 1: 2 r.moveDistance (0.2, 0.1) r. setDriveVelocity (.3,.2) r.stop end end end if green_mean <35 && blue_mean <35 %цвят на кожата показва (трябва да се коригира според цвета на кожата на астронавта) r.beep (); r.beep (); r.beep (); mail = '[email protected]'; %изпраща имейл, показващ, че костюмът е изключен psswd = 'да'; host = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_subject = 'тема'; m_text = 'тест'; setpref ('Интернет', 'E_mail', поща); setpref ('Интернет', 'SMTP_Server', хост); setpref ('Интернет', 'SMTP_Потребителско име', поща); setpref ('Интернет', 'SMTP_Password', psswd); реквизит = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', поща); props.setProperty ('mail.smtp.host', хост); props.setProperty ('mail.smtp.port', порт); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'true'); props.setProperty ('mail.smtp.auth', 'вярно'); props.setProperty ('mail.smtp.socketFactory.port', порт); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (emailto, "Помощ!", "Униформата на астронавтите е свалена!", img); край, ако red_mean 135 || green_mean 135 || blue_mean 135 за j = 1: 2 %, ако бялото не може да бъде намерено от робота r.turnAngle (360) mail = '[email protected]'; psswd = 'да'; host = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_subject = 'тема'; m_text = 'тест'; setpref ('Интернет', 'E_mail', поща); setpref ('Интернет', 'SMTP_Server', хост); setpref ('Интернет', 'SMTP_Потребителско име', поща); setpref ('Интернет', 'SMTP_Password', psswd); реквизит = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', поща); props.setProperty ('mail.smtp.host', хост); props.setProperty ('mail.smtp.port', порт); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'true'); props.setProperty ('mail.smtp.auth', 'вярно'); props.setProperty ('mail.smtp.socketFactory.port', порт); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (emailto, 'Помощ!', 'Космонавтът не може да бъде намерен!', img); r.stop end end end край

Очевидно тук е объркано, но трябва да се премахне, след като бъде копирано. Паролите и имейлите за това очевидно трябва да бъдат предоставени от тези, които извършват този проект.

Примерът ни обаче е само един от многото начини да се забъркате с този робот, за да го направите подходящ за всички. Има много различни неща за вършене, които можете да приспособите към себе си.

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