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, Srpanj
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 tiskano postolje za stabilizaciju kamere

6. Pametni telefon s instaliranim MATLAB mobitelom

7. Prijenosno računalo s instaliranim MATLAB -om

Korak 2: Povezivanje

Ovaj korak se odnosi na povezivanje Raspberry Pi s robotom, drugo povezivanje robota s računalom i povezivanje pametnog telefona s računalom.

Najjednostavniji dio ovog procesa je povezivanje Raspberry Pi s robotom, budući da je Raspberry Pi montiran na vrh robota. Robot ima kabel koji samo trebate 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 put u MATLAB -u za postavljanje puta tako da možete koristiti funkcije u alatnoj paleti Roomba iz MATLAB -a. Svaki put kada započinjete i završavate uporabu s robotom, morate izvršiti hardversko resetiranje robota "Pozdrav s dva prsta", što znači da držite pritisnutu tipku za priključnu stanicu i tipku deset sekundi dok se svjetlo ne priguši što ukazuje na puštanje. 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 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čunalom, koristeći karticu s oznakom "Više" -> zatim kliknite "postavke" -> zatim kliknite "Dodaj računalo", to 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čunalu na telefonu za upravljanje robotom.

Korak 3: Logično stvaranje MATLAB koda za korištenje senzora

Logično Stvaranje MATLAB koda za korištenje senzora
Logično Stvaranje MATLAB koda za korištenje senzora

Kôd će biti najlakše stvoriti kada je većina unutar petlje on while, tako da roomba može stalno ažurirati važeće vrijednosti koje gleda. Ako postoji pogreška, MATLAB će prikazati pogreš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 mobile 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.

Kodirati:

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 % dobiva podatke od senzora udara

cliff = r.getCliffSensors % dobiva podatke od senzora litice

light = r.getLightBumpers % dobiva podatke od senzora svjetla

img = r.getImage;% čita kameru s 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 put zaklonjen prekid % 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) %ponovno pokreće kôd

drugo

kraj

break % završava petlju

inače ako crveno_znači> 140

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

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 % dobiva podatke od senzora udara

cliff = r.getCliffSensors % dobiva podatke od senzora litice

light = r.getLightBumpers % dobiva podatke od senzora svjetla

img = r.getImage;% čita kameru s 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 rastuću glazbenu ljestvicu

msgbox ('Water Found!', 'Poruka pomoćnika pri parkiranju') % prikazuje poruku koja kaže da je voda pronađena r.turnAngle (-80) % rotira roomba 80 stupnjeva

break % završava trenutnu petlju

inače svjetlo.desnoPredaj> 25 || light.leftFront> 25 %očitava senzore svjetla

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

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

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 stupnjeva

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 stupnjeva

parkassist (1) %ponovno pokreće funkciju

drugo

r.stop % zaustavlja roombu

kraj

drugo

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 90 stupnjeva

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

drugo

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 kôd 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 za utvrđivanje ovih vrijednosti za vašeg robota je testiranje ih i mijenjati u hodu. 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 fotoaparat 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. U tijeku, ako vidite problem, najbolje je ugurati prednji odbojnik i zaustaviti ga, a zatim promijeniti parametar s kojim ste imali problema.

Korak 5: Prepoznavanje pogreške

Sa svakim dovršenim projektom uvijek postoje izvori grešaka. Za nas smo doživjeli pogreš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 pogreške za nas bio je taj što se ponekad robot pokvari, pa ste ga teško resetirali prije nego što ponovno radi. Glavni posljednji izvor pogreške za nas je bio taj što isti kôd 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 kojim želite postići ciljeve koje želite. Ovo bi trebao biti najbolji dio vašeg dana, stoga se zabavite i vozite sigurno!

Preporučeni: