Indholdsfortegnelse:
- Trin 1: Materialer
- Trin 2: Tilslutning
- Trin 3: Logisk oprettelse af en MATLAB -kode til brug af sensorer
- Trin 4: Test af koden og robotten
- Trin 5: Anerkendelse af fejl
- Trin 6: Konklusion
Video: Roomba Parking Pal: 6 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
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
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
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
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:
Arduino Parking Assistant - Parker din bil på det rigtige sted hver gang: 5 trin (med billeder)
Arduino Parking Assistant - Parker din bil på det rigtige sted hver gang: I dette projekt viser jeg dig, hvordan du bygger din egen parkeringsassistent ved hjælp af en Arudino. Denne parkeringsassistent måler afstanden til din bil og guider dig til at parkere den på det rigtige sted ved hjælp af en LCD -skærmaflæsning og en LED, som progressiv
Solar Powered LED Parking Sensor: 8 trin (med billeder)
Solcelledrevet LED -parkeringssensor: Vores garage har ikke meget dybde og har skabe i slutningen, jo yderligere reducerer dybden. Min kones bil er lige kort nok til at passe, men den er tæt på. Jeg lavede denne sensor for at forenkle parkeringsprocessen og for at sikre, at bilen var fuld
University Campus Student Parking Map: 7 trin (med billeder)
University Campus Student Parking Map: Mange studerende spekulerer på, hvor de kan parkere på en universitets campus. For at løse dette problem lavede jeg et oplyst parkeringskort over hovedområdet på Utah State Universitys campus. Kortet er til, at eleverne hurtigt kan se, hvilke parkeringsmuligheder der er
Autonom Parallel Parking Car Making Brug af Arduino: 10 trin (med billeder)
Autonom Parallel Parking Car Making Brug af Arduino: I autonom parkering skal vi oprette algoritmer og positionssensorer i henhold til visse forudsætninger. Vores antagelser vil være som følger i dette projekt. I scenariet vil venstre side af vejen bestå af vægge og parkområder. Som dig
MIDI Pod-Pal: 4 trin
MIDI Pod-Pal: *** UPDATE 4/22/'21 ****** Jeg har tilføjet en fuldstændig skematisk oversigt over alle ledninger til at hjælpe med byggeri. *** Jeg vil ikke gå ind i en latterlig mængde dybde her på bygningsdelen, min hensigt var at vise et andet eksempel på at bygge en Arduino -baseret MI