Sadržaj:

Roomba Parking Pal: 6 koraka
Roomba Parking Pal: 6 koraka

Video: Roomba Parking Pal: 6 koraka

Video: Roomba Parking Pal: 6 koraka
Video: iRobot i7 Roomba Spot Clean Mode Demonstration 2024, Novembar
Anonim
Roomba Parking Pal
Roomba Parking Pal

Ovaj projekt koristi iRobot Create programabilnu roombu, MATLAB r2018a i MATLAB mobile. Koristeći ova tri medija i naše znanje o kodiranju, programirali smo iRobot Create za tumačenje boja i korištenje ugrađenih senzora za izvršavanje zadataka. Ovi projekti ovise o komunikaciji Raspberry Pi i MATLAB za izvršavanje ovih zadataka.

Korak 1: Materijali

Materijali
Materijali
Materijali
Materijali

1. iRobot Create Robot

2. MATLAB r2018a

3. Malina Pi

4. Modul kamere

5. 3-D štampano postolje za stabilizaciju kamere

6. Pametni telefon sa instaliranim MATLAB mobilnim telefonom

7. Laptop/računar sa instaliranim MATLAB -om

Korak 2: Povezivanje

Ovaj korak se odnosi na povezivanje Raspberry Pi -a sa robotom, drugo povezivanje robota sa računarom i povezivanje pametnog telefona sa računarom.

Najjednostavniji dio ovog procesa je povezivanje Raspberry Pi s vašim robotom, budući da je Raspberry Pi montiran na vrh robota. Robot ima kabel koji sve što trebate učiniti je priključiti na bočnu stranu Raspberry Pi.

Sljedeći korak je povezivanje robota s računalom tako da možete pokrenuti naredbe koje će robot izvesti. Prvo što morate učiniti je povezati računalo s bežičnom mrežom koju stvara vaša roomba. Sada se preporučuje upotreba ikone Postavi putanju u MATLAB -u za postavljanje putanje tako da možete koristiti funkcije u okviru alata Roomba iz MATLAB -a. Svaki put kada započinjete i završavate uporabu s robotom, morate napraviti teško pozicioniranje robota "Pozdrav s dva prsta", što znači da držite pritisnutu tipku za priključnu stanicu i tipku na deset sekundi dok se svjetlo ne smanji kako bi se pokazalo da se oslobađa. Bili ste uspješni u ovom hard reset -u ako čujete da robot svira kratku ljestvicu. Zatim se morate povezati s roombom koristeći redak koda poput ovog "r = roomba (x)" gdje je 'x' broj koji je dodijeljen robotu koji imate.

Na kraju, morate preuzeti MATLAB mobile na bilo koji mobilni uređaj koji ćete koristiti za ovaj projekt, a ova je aplikacija dostupna i na Android i na Apple uređajima. Nakon što se aplikacija instalira, morat ćete se prijaviti koristeći svoje vjerodajnice. Zatim morate povezati ovaj uređaj s računarom, koristeći karticu s oznakom "Više" -> zatim kliknite "postavke" -> zatim kliknite "Dodaj računar", ovo bi trebalo otvoriti zaslon prikazan na gornjim slikama. Nakon što vidite ovo, sljedeći korak koji morate proći je samo uključivanje i provjeravanje informacija koje traži. Nakon što se uspješno povežete, moći ćete pozvati funkcije koje definirate na svom računaru na telefonu za upravljanje robotom.

Korak 3: Logično kreiranje MATLAB koda za upotrebu senzora

Logično Kreiranje MATLAB koda za upotrebu senzora
Logično Kreiranje MATLAB koda za upotrebu senzora

Kôd će biti najlakše stvoriti kada je većina unutar on petlje while, tako da roomba može stalno ažurirati važeće vrijednosti koje gleda. Ako postoji greška, MATLAB će prikazati grešku i gdje se pojavljuje u kodu, što čini rješavanje problema relativno jednostavnim.

Dizajniran u r2018a MATLAB -u, ovaj kôd koristi standardne alate, iRobot Create toolbox, kao i MATLAB mobilni toolbox. Roomba korištena u ovom primjeru označena je kao 26, a r = roomba (26) je potrebno pokrenuti samo jednom kako bi u potpunosti komunicirao s roombom.

Šifra:

funkcija parkassist (x) ako je x == 1

r = roomba (26) % se povezuje s roombom

dok je istina

r.setDriveVelocity (.05,.05) % postavlja roombu na sporiju brzinu vožnje

bump = r.getBumpers % dobija podatke od senzora udara

cliff = r.getCliffSensors % dobiva podatke sa senzora litice

light = r.getLightBumpers % dobiva podatke od senzora svjetlosnog udara

img = r.getImage;% čita kameru sa robota

red_mean = mean (mean (img (:,:, 1))) % čita srednju količinu crvenih piksela

green_mean = mean (mean (img (:,:, 2))) % čita srednju količinu zelenih piksela

blue_mean = mean (mean (img (:,:, 3))) % čita srednju količinu plavih piksela

ako bump.front == 1 %čita prednje senzore udara

r.stop %zaustavlja roomba

msgbox ('Put zaklonjen!', 'Poruka pomoćnika pri parkiranju') % prikazuje poruku u kojoj se kaže da je putanja zaklonjena pauza % završava petlju

inače ako zeleno_znači> 150

r.stop %zaustavlja roomba

cont = questdlg ('Continue?', 'Path Completed') %prikazuje okvir s pitanjem u kojem se traži nastavak

if cont == 'Da'

parkassist (1) %ponovo pokreće kôd

else

kraj

break % završava petlju

inače ako crveno_znači> 140

r.turnAngle (45) %okreće roombu za 45 stepeni

r.timeStart %pokreće brojač vremena

dok je istina

r.setDriveVelocity (.05,.05) %postavlja brzinu roombe

time = r.timeGet %dodjeljuje vrijeme varijabli

bump = r.getBumpers % dobija podatke od senzora udara

cliff = r.getCliffSensors % dobiva podatke sa senzora litice

light = r.getLightBumpers % dobiva podatke od senzora svjetlosti

img = r.getImage;% čita kameru sa robota

red_mean = mean (mean (img (:,:, 1))) % čita srednju količinu crvenih piksela

green_mean = mean (mean (img (:,:, 2))) % čita srednju količinu zelenih piksela

blue_mean = mean (mean (img (:,:, 3))) % čita srednju količinu plavih piksela

ako plavo_znači> 120

r.moveDistance (-0.01) % pomiče roombu unatrag na postavljenu udaljenost songPlay (r, 'T400, C, D, E, F, G, A, B, C^', 'true') % svira muzičku ljestvicu u porastu

msgbox ('Voda je pronađena!', 'Poruka pomoćnika pri parkiranju') % prikazuje poruku da je voda pronađena r.turnAngle (-80) % rotira roombu za 80 stepeni

break % završava trenutnu petlju

elseif light.rightFront> 25 || light.leftFront> 25 %očitava senzore lakog udara

r.moveDistance (-0.01) % pomiče roombu unatrag na zadanu udaljenost

r.turnAngle (-35) % rotira roombu za 35 stepeni

break %završava trenutnu petlju

elseif cliff.rightFront <2500 && cliff.leftFront <2500 %čita oba senzora litice

r.moveDistance (-0.1) % pomiče roombu unatrag na zadanu udaljenost

r.turnAngle (-80) %rotira roombu za 80 stepeni

break % završava trenutnu petlju

inače je vrijeme> = 3

r.stop %zaustavlja roomba

contin = questdlg ('Station Free, Continue?', 'Poruka pomoćnika pri parkiranju') %pita treba li roomba nastaviti ako je contin == 'Yes'

r.turnAngle (-90) % rotira roombu za 90 stepeni

parkassist (1) %ponovno pokreće funkciju

else

r.stop % zaustavlja roombu

kraj

else

kraj

kraj

elseif cliff.rightFront <2500 && cliff.leftFront <2500 %čita oba senzora litice

r.moveDistance (-0.1) %pomiče roombu unatrag na zadanu udaljenost

r.turnAngle (-90) %rotira roombu za 90 stepeni

elseif cliff.rightFront <2500 %čita desni senzor litice

r.turnAngle (-5) %blago okreće roombu u suprotnom smjeru od senzora litice

elseif cliff.leftFront <2500 %čita senzor lijeve litice

r.turnAngle (5) %blago okreće roombu u suprotnom smjeru od senzora litice

else

kraj

kraj

kraj

Korak 4: Testiranje koda i robota

Testiranje koda i robota
Testiranje koda i robota
Testiranje koda i robota
Testiranje koda i robota
Testiranje koda i robota
Testiranje koda i robota

Nakon što je kod razvijen, sljedeći korak bio je testiranje koda i robota. Budući da se u kodu može napraviti mnogo različitih prilagodbi, kao što su kut koji robot okreće, brzina kretanja i pragovi za svaku boju, najbolji način da shvatite ove vrijednosti za vašeg robota je da ga testirate ih i mijenjajte dok idete. Za svaki radni dan koji smo imali, stalno smo mijenjali ove vrijednosti jer se neke od njih oslanjaju na okruženje u kojem vaš robot radi. Najbolji način koji smo otkrili bio je postaviti roombu na put kojim želite da slijedi i imati barijera dovoljno visoka da kamera ne može otkriti boje koje ne želite. Sljedeći korak je pustiti ga da radi i pokažite mu boje koje želite, kada želite da dovrši taj zadatak. Dok budete išli, ako vidite problem, najbolje je da gurnete prednji branik i zaustavite ga, a zatim promijenite parametar s kojim ste imali problema.

Korak 5: Prepoznavanje greške

Sa svakim završenim projektom uvijek postoje izvori grešaka. Za nas smo doživjeli grešku s jednostavnom činjenicom da robot nije precizan s kutom pod kojim se okreće, pa ako mu kažete da se okrene za 45 stupnjeva to neće biti točno. Drugi izvor greške za nas je bio taj što se robot ponekad pokvari i morate ga resetirati prije nego što ponovo radi. Glavni posljednji izvor greške za nas je bio taj što isti kod neće imati isti učinak na različite robote, pa ćete morati biti strpljivi s njim i prilagoditi se u skladu s tim.

Korak 6: Zaključak

Sada imate sve alate za igranje sa svojom roombom, što znači da možete manipulirati kodom na bilo koji način kako biste postigli željene ciljeve. Ovo bi trebao biti najbolji dio vašeg dana, zato se zabavite i vozite sigurno!

Preporučuje se: