Cuprins:

Roomba Parking Pal: 6 pași
Roomba Parking Pal: 6 pași

Video: Roomba Parking Pal: 6 pași

Video: Roomba Parking Pal: 6 pași
Video: பாசி பருப்பு ஜவ்வரிசி பாயாசம் ஒருமுறை இப்படி செஞ்சு பாருங்க | pasi paruppu payasam recipe in tamil 2024, Iulie
Anonim
Roomba Parking Pal
Roomba Parking Pal

Acest proiect utilizează un iRobot Create roomba programabil, MATLAB r2018a și MATLAB mobile. Folosind aceste trei medii și cunoștințele noastre de codificare, am programat iRobot Create pentru a interpreta culorile și a folosi senzori de bord pentru a finaliza sarcinile. Acest proiect depinde de comunicarea Raspberry Pi și MATLAB pentru a îndeplini aceste sarcini.

Pasul 1: Materiale

Materiale
Materiale
Materiale
Materiale

1. iRobot Create Robot

2. MATLAB r2018a

3. Raspberry Pi

4. Modulul camerei

5. Stand de stabilizare a camerei imprimate 3D

6. Smartphone cu MATLAB mobil instalat

7. Laptop / computer cu MATLAB instalat

Pasul 2: Conexiune

Acest pas este despre conectarea Raspberry Pi la robot, conectarea robotului la computer și conectarea smartphone-ului la computer.

Cea mai ușoară parte a acestui proces este conectarea Raspberry Pi la robotul dvs., deoarece Raspberry Pi este montat în partea superioară a robotului. Există un cablu de la robot pe care nu trebuie decât să îl conectați la partea laterală a Raspberry Pi.

Următorul pas este conectarea robotului la computer, astfel încât să puteți rula comenzi pentru ca robotul să le efectueze. Primul lucru pe care trebuie să-l faceți este să vă conectați computerul la rețeaua fără fir pe care roomba dvs. o creează. Acum, este recomandat să utilizați pictograma Setare cale în MATLAB pentru a seta calea, astfel încât să puteți utiliza funcțiile din caseta de instrumente Roomba de la MATLAB. De fiecare dată când începeți și terminați utilizarea cu robotul, trebuie să efectuați un „Salut cu două degete”, resetând greu robotul, ceea ce înseamnă că țineți apăsate butoanele de andocare și puncte timp de zece secunde până când lumina se estompează indicând să se elibereze. Ați avut succes cu această resetare hard dacă auziți robotul cântând la scară scurtă. Apoi trebuie să vă conectați la roomba folosind o linie de cod ca aceasta "r = roomba (x)" unde 'x' este numărul desemnat pentru robotul pe care îl aveți.

În cele din urmă, trebuie să descărcați MATLAB mobil pe orice dispozitiv mobil pe care îl veți folosi pentru acest proiect, iar această aplicație este disponibilă atât pe dispozitivele Android, cât și pe cele Apple. Odată ce aplicația este instalată, va trebui să vă conectați folosind acreditările dvs. Apoi, trebuie să conectați acest dispozitiv la computer, utilizând fila etichetată „Mai multe” -> apoi faceți clic pe „setări” -> apoi faceți clic pe „Adăugați un computer”, acesta ar trebui să afișeze ecranul din imaginile de mai sus. După ce vedeți acest lucru, următorul pas pe care trebuie să îl parcurgeți este doar conectarea și extragerea informațiilor pe care le solicită. Odată ce sunteți conectat cu succes, veți putea apela funcțiile pe care le definiți pe computerul dvs. de pe telefon pentru a vă controla robotul.

Pasul 3: Crearea logică a unui cod MATLAB pentru a utiliza senzorii

Crearea logică a unui cod MATLAB pentru utilizarea senzorilor
Crearea logică a unui cod MATLAB pentru utilizarea senzorilor

Codul va fi cel mai ușor de creat atunci când majoritatea acestuia se află în bucla activată, astfel încât roomba să poată actualiza în mod constant valorile valide la care se uită. Dacă există o eroare, MATLAB va afișa o eroare și unde apare în cod, făcând soluționarea problemelor relativ simplă.

Proiectat în r2018a MATLAB, acest cod folosește casetele de instrumente standard, caseta de instrumente iRobot Create, precum și caseta de instrumente mobile MATLAB. Roomba folosită în acest exemplu este desemnată ca 26, iar r = roomba (26) trebuie executată o singură dată pentru a comunica complet cu roomba.

Cod:

funcție parkassist (x) dacă x == 1

r = roomba (26)% se conectează la roomba

în timp ce este adevărat

r.setDriveVelocity (.05,.05)% setează roomba la o viteză de conducere mai mică

bump = r.getBumpers% obține datele de la senzorii de bump

cliff = r.getCliffSensors% obține datele de la senzorii cliff

light = r.getLightBumpers% obține datele de la senzorii de lumină

img = r.getImage;% citește camera de pe robot

red_mean = medie (medie (img (:,:, 1))))% citește cantitatea medie de pixeli roșii

green_mean = medie (medie (img (:,:, 2)))% citește cantitatea medie de pixeli verzi

blue_mean = mean (mean (img (:,:, 3)))% citeste cantitatea medie de pixeli albastri

dacă bump.front == 1% citește senzorii de bump din față

r.stop% oprește roomba

msgbox ('Path Obscured!', 'Parking Assistant Message')% afișează mesajul spunând că calea este ascunsă break% termină bucla

elseif green_mean> 150

r.stop% oprește roomba

cont = questdlg ('Continuare?', 'Calea completată')% afișează caseta de întrebări cerând să continuați

dacă cont == „Da”

parkassist (1)% repornește codul

altceva

Sfârșit

break% termină bucla

elseif red_mean> 140

r.turnAngle (45)% întoarce camera cu 45 de grade

r.timeStart% pornește un contor de timp

în timp ce este adevărat

r.setDriveVelocity (.05,.05)% setează viteza camerei

time = r.timeGet% atribuie ora unei variabile

bump = r.getBumpers% obține datele de la senzorii de bump

cliff = r.getCliffSensors% obține datele de la senzorii cliff

light = r.getLightBumpers% obține datele de la senzorii de lumină

img = r.getImage;% citește camera de pe robot

red_mean = medie (medie (img (:,:, 1)))% citește cantitatea medie de pixeli roșii

green_mean = medie (medie (img (:,:, 2)))% citește cantitatea medie de pixeli verzi

blue_mean = mean (mean (img (:,:, 3)))% citeste cantitatea medie de pixeli albastri

dacă albastru_seamnă> 120

r.moveDistance (-0.01)% mută camera înapoi o melodie la distanță stabilită Redare (r, 'T400, C, D, E, F, G, A, B, C ^', 'true')% redă o scară muzicală în creștere

msgbox („Apă găsită!”, „Mesaj asistent parcare”)% afișează un mesaj spunând că a fost găsită apă r.turnAngle (-80)% rotește camera 80 de grade

pauză% termină bucla curentă

elseif light.rightFront> 25 || light.leftFront> 25% citește senzorii de lumină

r.moveDistance (-0.01)% mută camera înapoi la o distanță stabilită

r.turnAngle (-35)% rotește camera cu 35 de grade

pauză% termină bucla curentă

elseif cliff.rightFront <2500 && cliff.leftFront <2500% citește ambii senzori de stâncă

r.moveDistance (-0.1)% mută roomba înapoi o distanță stabilită

r.turnAngle (-80)% rotește camera de 80 de grade

pauză% termină bucla curentă

altfel dacă timpul> = 3

r.stop% oprește roomba

contin = questdlg ('Station Free, Continue?', 'Message Assistant Assistant')% întreabă dacă roomba ar trebui să continue dacă contin == 'Da'

r.turnAngle (-90)% rotește camera de 90 de grade

parkassist (1)% repornește funcția

altceva

r.stop% oprește cameraba

Sfârșit

altceva

Sfârșit

Sfârșit

elseif cliff.rightFront <2500 && cliff.leftFront <2500% citește ambii senzori de stâncă

r.moveDistance (-0.1)% mută roomba înapoi o distanță stabilită

r.turnAngle (-90)% rotește camera de 90 de grade

elseif cliff.rightFront <2500% citește senzorul de stâncă dreapta

r.turnAngle (-5)% întoarce ușor camera în direcția opusă a senzorului de stâncă

elseif cliff.leftFront <2500% citește senzorul stânga stâncă

r.turnAngle (5)% întoarce ușor camera în direcția opusă a senzorului de stâncă

altceva

Sfârșit

Sfârșit

Sfârșit

Pasul 4: Testarea codului și a robotului

Testarea codului și a robotului
Testarea codului și a robotului
Testarea codului și a robotului
Testarea codului și a robotului
Testarea codului și a robotului
Testarea codului și a robotului

După ce codul a fost dezvoltat, următorul pas a fost testarea codului și a robotului. Deoarece există o mulțime de ajustări diferite care pot fi făcute în cod, cum ar fi unghiul pe care îl rotește robotul, viteza pe care o mișcă și pragurile pentru fiecare culoare, cel mai bun mod de a afla aceste valori pentru robotul dvs. este să testați le și schimbați pe măsură ce mergeți. Pentru fiecare zi de lucru pe care am avut-o, am schimbat în mod constant aceste valori, deoarece unele dintre ele se bazează pe mediul în care operează robotul dvs. Cel mai bun mod pe care l-am găsit a fost să plasăm roomba pe calea pe care doriți să o urmeze și să aibă o barieră suficient de mare, astfel încât camera să nu poată detecta culorile pe care nu le doriți. Următorul pas este să-l lăsați să ruleze și să îi arătați culorile dorite, atunci când doriți să finalizeze acea sarcină. Pe măsură ce mergeți, dacă vedeți o problemă, cel mai bun lucru de făcut este să împingeți bara de protecție frontală, făcându-l oprit, apoi modificați parametrul cu care ați avut probleme.

Pasul 5: Recunoașterea erorii

Cu fiecare proiect finalizat, există întotdeauna surse de eroare. Pentru noi, am întâmpinat erori cu simplul fapt că robotul nu este precis cu unghiul la care se rotește, deci dacă îi spui să se întoarcă cu 45 de grade, nu va fi exact. O altă sursă de eroare pentru noi a fost că, uneori, robotul funcționează defectuos și îl resetați înainte de a funcționa din nou. Ultima sursă principală de eroare pentru noi a fost că același cod nu va avea același efect asupra unor roboți diferiți, deci este posibil să fie nevoie să aveți răbdare cu el și să vă ajustați în consecință.

Pasul 6: Concluzie

Acum aveți toate instrumentele pentru a vă juca cu camera dvs., ceea ce înseamnă că puteți manipula codul oricum doriți să atingeți obiectivele dorite. Aceasta ar trebui să fie cea mai bună parte a zilei dvs., așa că distrați-vă și conduceți în siguranță!

Recomandat: