Cuprins:

Roomba de asistență pentru astronauți: 4 pași
Roomba de asistență pentru astronauți: 4 pași

Video: Roomba de asistență pentru astronauți: 4 pași

Video: Roomba de asistență pentru astronauți: 4 pași
Video: Жадо Ринбүчи-Билиг барамидагийн хураангуй судар 50 шүлэгт ба 150 шүлэгт хоёрын утгын хураангуй"-2 2024, Noiembrie
Anonim
Roomba care asistă astronauții
Roomba care asistă astronauții

Acest proiect este realizat utilizând Raspberry Pi 3 la bordul iRobot Create Version 2. MATLAB este folosit pentru a programa robotul să urmeze instrucțiuni specifice folosind senzorii și camera sa. Senzorii și camerele sunt utilizate pentru a îndeplini sarcini specifice care ar urma un astronaut și îi vor oferi capacitatea de a comunica cu baza sa de origine dacă ceva nu merge bine.

Pasul 1: Piese necesare

Piese necesare
Piese necesare
Piese necesare
Piese necesare
Piese necesare
Piese necesare
Piese necesare
Piese necesare

1. iRobot Creați versiunea 2

IRobot Create este cea mai esențială parte a acestui proiect, deoarece este programabil și poate fi o reprezentare excelentă pentru un rover real care îi urmărește pe astronauți și îi asistă în viitor

2. Raspberry Pi 3

Raspberry Pi a fost programabil utilizat pentru acest proiect. Codul este conceput pentru Pi, iar versiunea Pi atașată este cea 3 (modelul B). Sunt utilizate alte plăci programabile, cum ar fi arduino, cu toate acestea, arduino și majoritatea celorlalte plăci vor necesita codificare diferită decât cea descrisă într-un alt pas

3. Modulul Raspberry Pi Camera

Singura conexiune străină la Raspberry Pi necesară pentru acest proiect este Camera Module. Modulul camerei este parte integrantă a acestui proiect, deoarece roomba va efectua sarcini numai pe baza a ceea ce vede în cameră

4. MATLAB 2018a

A doua versiune cea mai recentă a MATLAB, 2018a, a fost utilizată pentru codificarea implicată în această configurare. Este probabil ca multe alte versiuni ale MATLAB să funcționeze cu acest lucru, deoarece programarea roomba a existat de ceva timp

Pasul 2: Configurarea fișierelor și a camerei

Fișierele și configurația camerei
Fișierele și configurația camerei

1. Conexiunile Raspberry Pi și Camera la roomba

  • Pi se poate conecta la iRobot direct cu un micro USB. Asta este tot ce trebuie să fie gata de utilizare. Cu toate acestea, este recomandat să fie așezat în siguranță pe cameră, așa cum se arată în imagini pe parcursul prezentării până acum.
  • Camera are o conexiune directă cu Raspberry Pi și este foarte recomandat să cumpărați sau să faceți ceva pentru a ține camera direct sus. Camera nu are niciun rost real dacă camera nu poate fi ținută pe loc pentru a arăta ce vede roomba.

2. Fișiere

  • După ce ați configurat și conectat totul, asigurați-vă că robotul este resetat și gata de utilizare ținând butoanele „Spot” și „Dock” timp de 10 secunde împreună.
  • Aici este nevoie de MATLAB. Fișierele pentru roomba trebuie să fie instalate mai întâi și tot ce este necesar pentru aceste fișiere este să ruleze este codul furnizat pe acest link:
  • https://ef.engr.utk.edu/ef230-2017-08//projects/ro…

Pasul 3: Testarea inițială Roomba

Există multe verificări inițiale care trebuie efectuate pe roomba pentru a vă asigura că funcționează.

1. Asigurați-vă că sunteți conectat la aceeași rețea WiFi ca roomba. Fără aceasta, nu vă veți conecta niciodată prin MATLAB.

2. Aflați la ce număr este atribuit roomba dvs., astfel încât să vă puteți conecta în mod specific la roomba pe care ați ales-o. De exemplu, dacă numărul roomba dvs. este 30, vă veți conecta la acesta tastând roomba (30) în fereastra de comandă din MATLAB.

3. Roomba poate fi controlată prin structuri în MATLAB. De exemplu, dacă setați codul pentru roomba (30) la variabila „r”, robotul poate fi mutat înainte cu comanda r.moveDistance (0.2, 0.1).

4. Există multe comenzi diferite care pot fi comunicate către roomba și acestea pot fi văzute tastând „doc roomba” în fereastra de comandă.

5. Senzorii pentru citirea luminii, a loviturilor și a stâncilor pot fi citiți cu ajutorul comenzilor din „doc roomba”, dar o modalitate de a avea un meniu constant și îngrijit pentru a vedea datele senzorului poate fi văzută folosind „r.testSensors '.

6. După ce ați testat toate acestea, software-ul de colectare a imaginii robotului poate fi utilizat pentru a citi și a vedea fotografiile făcute. Codul de bază pentru aceasta ar fi img = r.getImage și imshow (img);.

7. Valorile RGB ale imaginii pot fi găsite cu codurile red_mean = mean (medie (img (:,:, 1)));

green_mean = medie (medie (img (:,:, 2))); și blue_mean = mean (mean (img (:,:, 3)));.

Pasul 4: Exemplu de cod MATLAB

Exemplu de cod MATLAB
Exemplu de cod MATLAB

În acest moment, sunteți acum gata să utilizați senzorii și software-ul de captare a imaginilor pentru a vă crea propriul spin pe un prototip Mars-Rover de asistență umană. Exemplul nostru este să urmărim astronautul urmărind culoarea albă și deplasându-ne spre ea. Robotul va emite un semnal sonor dacă senzorii citesc valori mari, astfel încât astronautul să poată reseta robotul dacă este blocat sau să-l ridice și să-l reseteze dacă este blocat pe o stâncă. Cu toate acestea, citește aceste erori numai atât timp cât vede alb. Fără a putea vedea culoarea albă, robotul va intra în modul de eroare. Este programat să trimită două tipuri diferite de e-mailuri înapoi la baza de domiciliu, în funcție de ceea ce vede. Dacă vede culoarea pielii astronautului, evident că nu este bine, așa că va alerta baza de domiciliu în cazul în care astronautul are pielea care prezintă o disfuncționalitate a costumului. Celălalt mesaj este pregătit dacă astronautul dispare pur și simplu din vedere. Dacă nu se afișează culoarea albului sau a pielii pentru camere, robotul se va întoarce și va trimite un alt e-mail, dar diferit. Imaginile în care roomba nu poate vedea astronautul vor fi trimise împreună cu mesajul din e-mailuri. Codul proiectului nostru este prezentat mai jos:

pentru i = 1:.1: 3 img = r.getImage; imagine (img) red_mean = medie (medie (img (:,:, 1))); green_mean = medie (medie (img (:,:, 2))); blue_mean = medie (medie (img (:,:, 3)))); dacă red_mean> 110 && red_mean 110 && blue_mean 110 && green_mean0 || bump.stânga> 0 || bump.front> 0 r.beep () r.beep () r.beep () r.stop elseif cliff.stânga <10 || cliff.leftFront <10 || cliff.rightFront <10 || cliff.right700 || light.leftFront> 700 || light.leftCenter> 700 || light.rightCenter> 700 || light.rightFront> 700 || light.right> 700 r.beep () r.beep () r.beep () r.beep () r.beep () r.stop else for 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% afișarea culorii pielii (trebuie ajustată pe baza culorii pielii astronautului) r.beep (); r.beep (); r.beep (); mail = '[email protected]'; % trimite e-mail care arată că costul este dezactivat psswd = 'da'; host = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_subject = 'subiect'; m_text = 'test'; setpref ('Internet', 'E-mail', mail); setpref ('Internet', 'SMTP_Server', gazdă); setpref ('Internet', 'SMTP_Username', mail); setpref ('Internet', 'SMTP_Password', psswd); props = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', mail); props.setProperty ('mail.smtp.host', gazdă); props.setProperty ('mail.smtp.port', port); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'true'); props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.port', port); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (emailto, „Ajutor!”, „Uniforma astronauților este dezactivată!”, img); end if red_mean 135 || green_mean 135 || blue_mean 135 pentru j = 1: 2% dacă albul nu poate fi găsit de robotul r.turnAngle (360) mail = '[email protected]'; psswd = 'da'; host = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_subject = 'subiect'; m_text = 'test'; setpref ('Internet', 'E-mail', mail); setpref ('Internet', 'SMTP_Server', gazdă); setpref ('Internet', 'SMTP_Username', mail); setpref ('Internet', 'SMTP_Password', psswd); props = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', mail); props.setProperty ('mail.smtp.host', gazdă); props.setProperty ('mail.smtp.port', port); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'true'); props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.port', port); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (emailto, 'Ajutor!', 'Astronautul nu poate fi găsit!', img); r.stop end end end

Evident, este dezordonat aici, dar ar trebui să fie eliminat odată copiat. Parolele și e-mailurile pentru acest lucru trebuie furnizate de cei care fac acest proiect în mod evident.

Cu toate acestea, exemplul nostru este doar una dintre numeroasele modalități de a vă încurca cu acest robot pentru a-l face să se potrivească tuturor. Există multe lucruri diferite de făcut, pe care vi le puteți adapta.

Recomandat: