Sadržaj:
- Korak 1: Materijali
- Korak 2: Povezivanje
- Korak 3: Logično kreiranje MATLAB koda za upotrebu senzora
- Korak 4: Testiranje koda i robota
- Korak 5: Prepoznavanje greške
- Korak 6: Zaključak
Video: Roomba Parking Pal: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:07
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
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
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
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:
Arduino parking senzor: 8 koraka
Arduino senzor za parkiranje: Komponente 1x Arduino UNO1x kružni elektronički senzor za parkiranje serije NOOB1x HC-SR04 ultrazvučni senzor8x muško-ženski džemperSoftverArduino IDE
LED parking senzor sa solarnim napajanjem: 8 koraka (sa slikama)
LED senzor za parkiranje sa solarnim napajanjem: Naša garaža nema mnogo dubine, a na kraju ima ormare koji dodatno smanjuju dubinu. Automobil moje žene je tek toliko kratak da stane, ali je blizu. Napravio sam ovaj senzor kako bih pojednostavio proces parkiranja i osigurao da se automobil napuni
Parking senzor: Uvod: 23 koraka
Parking senzor: Uvod: Ovaj krug senzora za parkiranje automobila koji koristi infracrveni primopredajnik i pomoćnik LM324 može zaštititi vaš automobil od bilo kakvog oštećenja pri parkiranju unatrag. Pokazuje udaljenost automobila od bilo kojeg objekta i aktivira alarm kada se približi zidu ili objektu
MIDI Pod-Pal: 4 koraka
MIDI Pod-Pal: *** UPDATE 22/22/'21 ****** Dodao sam potpunu shemu koja prikazuje sve ožičenje za pomoć u izgradnji. *** Neću ulaziti u smiješnu količinu dubine ovdje na dijelu izgradnje, namjera mi je bila pokazati još jedan primjer izgradnje MI zasnovanog na Arduinu
Roomba roomba upravljani preglednikom sa Raspberry Pi modelom 3 A+: 6 koraka (sa slikama)
Roomba robotski upravljani Roomba robot s Raspberry Pi modelom 3 A+: PregledOva instrukcija će se fokusirati na to kako mrtvoj Roombi dati novi mozak (Raspberry Pi), oči (web kamera) i način da kontrolirate sve iz web preglednika. Postoji mnogo Roomba hakova koji omogućuju kontrolu putem serijskog sučelja. Ja nemam