Cuprins:
- Pasul 1: Piese și materiale
- Pasul 2: Fișierul de baze de date Roomba
- Pasul 3: Conectarea la Roomba
- Pasul 4: Codul
- Pasul 5: Concluzie
Video: Roomba controlată MATLAB: 5 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
Scopul acestui proiect este de a utiliza MATLAB, precum și un robot programabil iRobot modificat. Grupul nostru a combinat abilitățile noastre de codificare pentru a crea un script MATLAB care utilizează multe funcții ale iRobot, inclusiv senzori de stâncă, senzori de protecție, senzori de lumină și cameră. Am folosit aceste senzori și citirile camerei ca intrări, permițându-ne să creăm anumite ieșiri pe care le dorim folosind funcțiile și buclele codului MATLAB. De asemenea, folosim dispozitivul mobil MATLAB și giroscopul ca modalitate de conectare la iRobot și control al acestuia.
Pasul 1: Piese și materiale
MATLAB 2018a
-Versiunea 2018 a MATLAB este cea mai preferată versiune, mai ales pentru că funcționează cel mai bine cu codul care se conectează la dispozitivul mobil. Cu toate acestea, majoritatea codului nostru poate fi interpretat în majoritatea versiunilor MATLAB.
iRobot Creați dispozitiv
-Acest dispozitiv este un dispozitiv special realizat, care are ca unic scop programarea și codificarea. (Nu este un vid real)
Raspberry Pi (cu camera foto)
- Aceasta este o placă de computer care nu este costisitoare și funcționează ca creierul iRobot. Poate fi mic, dar este capabil de multe lucruri. Camera este un supliment suplimentar. De asemenea, folosește raspberry pi pentru a obține toate funcțiile și comenzile sale. Camera foto din imaginea de mai sus este montată pe un suport tipărit 3D, creat de departamentele Inginerie Fundamentale de la Universitatea din Tennessee
Pasul 2: Fișierul de baze de date Roomba
Există un fișier principal de care veți avea nevoie pentru a utiliza funcțiile și comenzile adecvate pentru camera dvs. Acest fișier este locul în care ați scris codul din care trage funcții pentru a vă face mai ușor de operat camera dvs..
Puteți descărca fișierul de la acest link sau fișierul descărcabil de mai jos
ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php
Pasul 3: Conectarea la Roomba
Mai întâi, trebuie să vă asigurați că robotul dvs. este conectat la placa dvs. raspberry pi utilizând o mufă micro USB. Apoi, trebuie să vă conectați computerul și robotul la același WiFi. După ce ați făcut acest lucru, vă puteți porni robotul și vă puteți conecta la acesta folosind comanda dată în fișierul bazei de date a robotului. (Resetați întotdeauna robotul înainte și după ce îl utilizați). De exemplu, folosim comanda „r.roomba (19)” pentru a ne conecta la robotul nostru, atribuind variabila r dispozitivului nostru. Aceasta se referă înapoi la fișierul bazei de date, care configurează variabila noastră ca o structură pe care o putem referi în orice moment dat.
Pasul 4: Codul
Am atașat codul complet mai jos, dar iată o scurtă prezentare generală care evidențiază elementele importante din scriptul nostru. Am folosit toți senzorii, precum și camera pentru a maximiza pe deplin potențialul robotului nostru. De asemenea, am inclus un cod care ne-a permis să conectăm un dispozitiv mobil la robotul nostru și să folosim grioscopul acestuia pentru a-l controla manual.
Am început cu comanda simplă „r.setDriveVelocity (.06)” care setează viteza de avans a robotului la.06 m / s. Aceasta este doar pentru a pune robotul în mișcare în prealabil
Apoi, scriptul nostru principal este pornit cu o buclă while care preia datele robotului dat prin crearea de structuri pe care le putem referi și utiliza în instrucțiunile condiționale de mai jos, permițându-ne astfel să spunem robotului să execute o anumită comandă bazată pe datele structurii. robotul citește cu senzorii săi. L-am configurat astfel încât robotul să își citească senzorii de stâncă și să urmeze o cale neagră
în timp ce adevărat% while bucla merge până când apare ceva „fals” (în acest caz merge infinit) data = r.getCliffSensors; data2 = r.getBumpers;% recuperează continuu date despre valorile senzorului de stâncă și le atribuie unei variabile% img = r.getImage; % Face o fotografie din camera montată% image (img); % Afișează imaginea realizată% red_mean = mean (mean (img (:,:, 1)));% Prinde valoarea medie pentru culoarea verde dacă data.rightFront <2000 r.turnAngle (-2); % întoarce Roomba aproximativ.2 grade CW odată ce valoarea pentru senzorii din stânca din față din dreapta scade sub 2000 r.setDriveVelocity (.05); elseif data.leftFront data.leftFront && 2000> data.rightFront r.moveDistance (.1); % îi spune Roomba să meargă înainte cu aproximativ.2 m / s dacă ambele valori de la senzorii din față dreapta și din stânga scad sub 2000% r.turnAngle (0); % îi spune Roomba să nu se întoarcă dacă condițiile menționate mai sus sunt adevărate
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);
După această buclă while, introducem o altă buclă while care declanșează datele obținute prin intermediul camerei. Și folosim o declarație if în interiorul acestei bucle while care recunoaște o imagine folosind un anumit program (alexnet) și, odată ce identifică imaginea, declanșează imediat telecomanda dispozitivului mobil
anet = alexnet; % Atribuie alexnet deep learning unei variabile în timp ce este adevărat% Infinite while loop img = r.getImage; img = imresize (img, [227, 227]); eticheta = clasifica (anet, img); dacă eticheta == "prosop de hârtie" || eticheta == "frigider" eticheta = "apa"; imagine finală (img); titlu (char (etichetă)); drawow;
Bucla while care ne permite să controlăm dispozitivul cu telefonul nostru preia acele date din giroscopul telefonului și le conectăm la o matrice care transmite continuu datele înapoi în MATLAB de pe computer. Folosim o declarație if care citește datele matricei și oferă o ieșire care mută dispozitivul pe baza anumitor valori ale giroscopului telefonului. Este important să știm că am folosit senzorii de orientare ai dispozitivului mobil. Matricea una câte trei menționată mai sus este clasificată în funcție de fiecare element al senzorilor de orientare ai telefonului, care este azimut, înălțime și lateral. Instrucțiunile if au creat condiții care au fost declarate atunci când partea depășește valorile 50 sau coboară sub -50, atunci robotul se deplasează o anumită distanță înainte (pozitiv 50) sau înapoi (negativ 50). Și același lucru este valabil și pentru valoarea pitch. Dacă valoarea pitch-ului depășește valoarea de 25 de scade sub -25, robotul se rotește la un unghi de 1 grade (pozitiv 25) sau negativ 1 grade (negativ 25)
în timp ce pauză adevărată (.1)% Pauză de.5 secunde înainte ca fiecare valoare să fie luată Controler = iphone. Orientation; % Atribuie matricea pentru valorile orientării iPhone-ului unei variabile Azimuthal = Controller (1); % Atribuie prima valoare a matricei unei variabile Pitch = Controller (2); % Atribuie a doua valoare a matricei unei variabile (înclinați înainte și înapoi când iPhone-ul este ținut lateral) Side = Controller (3); % Atribuie a treia valoare a matricei unei variabile (înclinați la stânga și la dreapta când iPhone-ul este ținut lateral)% Provoacă o ieșire bazată pe orientarea telefonului dacă Side> 130 || Partea 25 r.moveDistance (-. 1)% Mută Roomba înapoi aproximativ.1 metri dacă iPhone-ul este înclinat înapoi cel puțin 25 de grade altfel dacă partea 25 r.turnAngle (-1)% Întoarce Roomba aproximativ 1 grad CCW dacă iPhone-ul este înclinat la stânga cu cel puțin 25 de grade altfel dacă Pitch <-25 r.turnAngle (1)% Întoarce Roomba aproximativ 1 grad CW dacă iPhone-ul este înclinat cel puțin 25 de grade
Acestea sunt doar elementele esențiale ale pieselor majore ale codului nostru, pe care le-am inclus dacă trebuie să copiați și să inserați rapid o secțiune în beneficiul dvs. Cu toate acestea, întregul nostru cod este atașat mai jos, dacă este necesar
Pasul 5: Concluzie
Acest cod pe care l-am scris este conceput special pentru robotul nostru, precum și pentru viziunea noastră generală asupra proiectului. Scopul nostru a fost să folosim toate abilitățile noastre de codificare MATLAB pentru a crea un script de proiectare care să utilizeze majoritatea caracteristicilor robotului. Utilizarea controlerului telefonului nu este atât de dificilă pe cât credeți și sperăm că codul nostru vă poate ajuta să înțelegeți mai bine conceptul din spatele codării unui iRobot.
Recomandat:
Mașină controlată Bluetooth Arduino DIY: 6 pași (cu imagini)
Mașină controlată Bluetooth Arduino DIY: Bună ziua prieteni! Numele meu este Nikolas, am 15 ani și locuiesc în Atena, Grecia. Astăzi vă voi arăta cum să realizați o mașină controlată Bluetooth cu 2 roți folosind un Arduino Nano, o imprimantă 3D și câteva componente electronice simple! Asigurați-vă că vă urmăriți
Cum să faci o mașină controlată de smartphone: 5 pași
Cum să faci o mașină controlată de smartphone: Toată lumea adoră să se joace cu mașina la distanță acționată de un smartphone. Acest videoclip este despre cum să o faci
Mașină controlată de la distanță - Controlată utilizând controlerul fără fir Xbox 360: 5 pași
Mașină controlată de la distanță - controlată folosind controler wireless Xbox 360: acestea sunt instrucțiuni pentru a vă construi propria mașină controlată de la distanță, controlată cu ajutorul unui controler fără fir Xbox 360
Proiectul Roomba MATLAB: 5 pași
Proiectul Roomba MATLAB: Planul actual pe care NASA îl are pentru roverul Marte este ca acesta să fie un colector de date și să se plimbe prin Marte, colectând probe de sol pentru a le aduce înapoi pe Pământ, astfel încât oamenii de știință să poată vedea dacă au existat forme de viață anterioare pe planeta. Adiţional
Roomba Cu MATLAB: 4 pași (cu imagini)
Roomba With MATLAB: Acest proiect folosește MATLAB și un robot programabil iRobot Create2. Punând la încercare cunoștințele noastre despre MATLAB, suntem capabili să programăm Create2 pentru a interpreta imagini și a detecta semnale. Funcționalitatea robotului depinde în principal de