Indholdsfortegnelse:

Roomba Parking Pal: 6 trin
Roomba Parking Pal: 6 trin

Video: Roomba Parking Pal: 6 trin

Video: Roomba Parking Pal: 6 trin
Video: Neighbor Gets Instant Karma for Trying to Destroy Ring Doorbell 2024, November
Anonim
Roomba Parkering Pal
Roomba Parkering Pal

Dette projekt bruger en iRobot Create programmerbar roomba, MATLAB r2018a og MATLAB mobil. Ved at bruge disse tre medier og vores viden om kodning programmerede vi iRobot Create til at fortolke farver og bruge indbyggede sensorer til at fuldføre opgaver. Disse projekter afhænger af Raspberry Pi og MATLAB kommunikation for at udføre disse opgaver.

Trin 1: Materialer

Materialer
Materialer
Materialer
Materialer

1. iRobot Opret robot

2. MATLAB r2018a

3. Hindbær Pi

4. Kameramodul

5. 3D-trykt kamerastabilisatorstativ

6. Smartphone med MATLAB mobil installeret

7. Bærbar computer/computer med MATLAB installeret

Trin 2: Tilslutning

Dette trin handler om at forbinde Raspberry Pi til robotten, for det andet tilslutte robotten til din computer og tilslutte smartphonen til computeren.

Den nemmeste del af denne proces er at forbinde Raspberry Pi til din robot, da Raspberry Pi er monteret på toppen af robotten. Der er en ledning fra robotten, som du kun skal tilslutte til siden af Raspberry Pi.

Det næste trin er at forbinde robotten til din computer, så du kan køre kommandoer, som robotten skal udføre. Den første ting, du skal gøre, er at slutte din computer til det trådløse netværk, som din roomba opretter. Nu anbefales det, at du bruger ikonet Angiv sti i MATLAB til at indstille stien, så du kan bruge funktionerne i Roomba -værktøjskassen fra MATLAB. Hver gang du begynder og slutter at bruge robotten, skal du lave en "to-finger-hilsen", der hårdt nulstiller robotten, hvilket betyder, at du holder dock- og spot-knapperne nede i ti sekunder, indtil lyset dæmpes, hvilket angiver, at den skal slippes. Du havde succes med denne hårde nulstilling, hvis du hører robotten spille i en kort skala. Dernæst skal du oprette forbindelse til roomba ved hjælp af en kode linje som denne "r = roomba (x)", hvor 'x' er det nummer, der er angivet til den robot, du har.

Endelig skal du downloade MATLAB -mobil på den mobile enhed, du vil bruge til dette projekt, og denne applikation er tilgængelig på både Android- og Apple -enheder. Når applikationen er installeret, skal du logge ind med dine legitimationsoplysninger. Derefter skal du slutte denne enhed til din computer ved hjælp af fanen mærket "Mere" -> klik derefter på "indstillinger" -> klik derefter på "Tilføj en computer", dette skulle vise skærmen vist på billederne ovenfor. Efter at du har set dette næste trin, du skal gå igennem, er bare at tilslutte og chugge de oplysninger, den anmoder om. Når du har oprettet forbindelse, vil du være i stand til at kalde funktioner, som du definerer på din computer på din telefon for at styre din robot.

Trin 3: Logisk oprettelse af en MATLAB -kode til brug af sensorer

Logisk oprettelse af en MATLAB -kode til brug af sensorer
Logisk oprettelse af en MATLAB -kode til brug af sensorer

Koden vil være lettest at oprette, når et flertal af den er inden for mens loop, så roomba konstant kan opdatere gyldige værdier, den ser på. Hvis der er en fejl, viser MATLAB en fejl, og hvor den vises i koden, hvilket gør fejlfinding relativt enkel.

Denne kode er designet i r2018a MATLAB og gør brug af standard værktøjskasser, iRobot Create værktøjskasse samt MATLAB mobil værktøjskasse. Roomba, der bruges i dette eksempel, er betegnet som 26, og r = roomba (26) behøver kun at køre én gang for fuldt ud at kommunikere med roomba.

Kode:

funktionsparkassist (x) hvis x == 1

r = roomba (26) % opretter forbindelse til roomba

mens det er sandt

r.setDriveVelocity (.05,.05) % indstiller roomba til en lavere kørehastighed

bump = r.getBumpers % henter dataene fra bump -sensorerne

cliff = r.getCliffSensors % henter dataene fra cliffsensorerne

light = r.getLightBumpers % henter dataene fra lysstødsensorerne

img = r.getImage;% aflæser kameraet fra robotten

red_mean = mean (mean (img (:,:, 1))) % læser den gennemsnitlige mængde af røde pixels

green_mean = mean (mean (img (:,:, 2))) % læser den gennemsnitlige mængde af grønne pixels

blue_mean = mean (mean (img (:,:, 3))) % læser den gennemsnitlige mængde af blå pixels

hvis bump.front == 1 %læser front bump sensorer

r.stop %stopper roomba

msgbox ('Path Obscured!', 'Parking Assistant Message') % viser meddelelse om, at stien er tilsløret break % ender sløjfen

elseif green_mean> 150

r.stop %stopper roomba

cont = questdlg ('Fortsæt?', 'Sti fuldført') %viser spørgsmålsboks, der beder om at fortsætte

hvis forts == 'Ja'

parkassist (1) %genstarter koden

andet

ende

break % ender sløjfen

elseif red_mean> 140

r.turnAngle (45) %drejer roomba 45 grader

r.timeStart %starter en tidstæller

mens det er sandt

r.setDriveVelocity (.05,.05) %indstiller roomba -hastigheden

time = r.timeGet %tildeler tiden til en variabel

bump = r.getBumpers % henter dataene fra bump -sensorerne

cliff = r.getCliffSensors % henter dataene fra cliffsensorerne

light = r.getLightBumpers % henter dataene fra lysstødsensorerne

img = r.getImage;% aflæser kameraet fra robotten

red_mean = mean (mean (img (:,:, 1))) % læser den gennemsnitlige mængde af røde pixels

green_mean = mean (mean (img (:,:, 2))) % læser den gennemsnitlige mængde af grønne pixels

blue_mean = mean (mean (img (:,:, 3))) % læser den gennemsnitlige mængde af blå pixels

hvis blue_mean> 120

r.moveDistance (-0,01) % flytter roomba bagud en bestemt afstandssang Play (r, 'T400, C, D, E, F, G, A, B, C^', 'true') % spiller en stigende musikalsk skala

msgbox ('Water Found!', 'Parking Assistant Message') % viser en meddelelse, der siger, at der er fundet vand r.turnAngle (-80) % roterer roomba 80 grader

break % slutter den aktuelle loop

elseif light.rightFront> 25 || light.leftFront> 25 %læser lysstødsensorer

r.moveDistance (-0,01) % flytter roomba bagud en bestemt afstand

r.turnAngle (-35) % roterer roomba 35 grader

break %slutter den aktuelle loop

elseif cliff.rightFront <2500 && cliff.leftFront <2500 %læser begge cliff sensorer

r.moveDistance (-0,1) % flytter roomba bagud en bestemt afstand

r.turnAngle (-80) %roterer roomba 80 grader

break % slutter den aktuelle loop

ellers tid> = 3

r.stop %stopper roomba

contin = questdlg ('Station gratis, fortsæt?', 'Parking Assistant -besked') %spørger, om roomba skal fortsætte, hvis contin == 'Ja'

r.turnAngle (-90) % roterer roomba 90 grader

parkassist (1) %genstarter funktionen

andet

r.stop % stopper roomba

ende

andet

ende

ende

elseif cliff.rightFront <2500 && cliff.leftFront <2500 %læser begge cliff sensorer

r.moveDistance (-0,1) %flytter roomba bagud en bestemt afstand

r.turnAngle (-90) %roterer roomba 90 grader

elseif cliff.rightFront <2500 %læser den rigtige cliff sensor

r.turnAngle (-5) %drejer roomba lidt i den modsatte retning af cliff-sensoren

elseif cliff.leftFront <2500 %læser venstre cliff sensor

r.turnAngle (5) %drejer roomba en anelse i modsat retning af cliff -sensoren

andet

ende

ende

ende

Trin 4: Test af koden og robotten

Test af koden og robotten
Test af koden og robotten
Test af koden og robotten
Test af koden og robotten
Test af koden og robotten
Test af koden og robotten

Efter at koden blev udviklet, var det næste trin at teste koden og robotten. Da der er mange forskellige justeringer, der kan foretages i koden, såsom den vinkel, robotten drejer, hastigheden, den bevæger sig, og tærsklerne for hver farve, er den bedste måde at regne disse værdier ud for din robot ved at teste dem og ændre, mens du går. For hver hverdag, vi havde, ændrede vi konstant disse værdier, da nogle af dem er afhængige af det miljø, din robot opererer i. Den bedste måde, vi fandt, var at placere roomba på den sti, du vil have den til at følge, og have en barriere, der er høj nok til, at kameraet ikke kan registrere farver, som du ikke vil have det til. Det næste trin er at lade det køre og vise det de farver, du ønsker, når du vil have det til at fuldføre opgaven. Når du ser et problem, er det bedste at gøre ved at skubbe den forreste kofanger ind, så den stopper, og derefter ændre den parameter, du havde problemer med.

Trin 5: Anerkendelse af fejl

Når hvert projekt er udført, er der altid fejlkilder. For os oplevede vi fejl med den simple kendsgerning, at robotten ikke er præcis med den vinkel, den drejer i, så hvis du fortæller den, at den skal dreje 45 grader, bliver det ikke nøjagtigt. En anden fejlkilde for os var, at robotten nogle gange fungerer, og du har svært ved at nulstille den, før den fungerer igen. Den sidste sidste fejlkilde for os var, at den samme kode ikke vil have den samme effekt på forskellige robotter, så du skal muligvis være tålmodig med den og justere derefter.

Trin 6: Konklusion

Nu har du alle værktøjerne til at lege med din roomba, hvilket betyder, at du kan manipulere koden i alligevel, du vil nå de mål, du ønsker. Dette burde være den bedste del af din dag, så hav det sjovt og kør sikkert!

Anbefalede: