Innholdsfortegnelse:
- Trinn 1: Materialer
- Trinn 2: Tilkobling
- Trinn 3: Logisk opprettelse av en MATLAB -kode for bruk av sensorer
- Trinn 4: Testing av koden og roboten
- Trinn 5: Erkjennelse av feil
- Trinn 6: Konklusjon
Video: Roomba Parking Pal: 6 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
Dette prosjektet bruker en iRobot Create programmerbar roomba, MATLAB r2018a og MATLAB mobil. Ved å bruke disse tre mediumene og vår kunnskap om koding, programmerte vi iRobot Create til å tolke farger og bruke innebygde sensorer til å fullføre oppgaver. Disse prosjektene er avhengige av Raspberry Pi og MATLAB kommunikasjon for å utføre disse oppgavene.
Trinn 1: Materialer
1. iRobot Lag robot
2. MATLAB r2018a
3. Bringebær Pi
4. Kameramodul
5. 3D-trykt kamerastabilisatorstativ
6. Smarttelefon med MATLAB -mobil installert
7. Bærbar datamaskin/datamaskin med MATLAB installert
Trinn 2: Tilkobling
Dette trinnet handler om å koble Raspberry Pi til roboten, for det andre koble roboten til datamaskinen din og koble smarttelefonen til datamaskinen.
Den enkleste delen av denne prosessen er å koble Raspberry Pi til roboten din, siden Raspberry Pi er montert på toppen av roboten. Det er en ledning fra roboten som alt du trenger å gjøre er å koble til siden av Raspberry Pi.
Det neste trinnet er å koble roboten til datamaskinen din, slik at du kan kjøre kommandoer som roboten skal utføre. Det første du må gjøre er å koble datamaskinen til det trådløse nettverket som din roomba lager. Nå anbefales det at du bruker Set Path -ikonet i MATLAB for å angi banen slik at du kan bruke funksjonene i Roomba -verktøykassen fra MATLAB. Hver gang du begynner og slutter å bruke med roboten, må du gjøre en "Two-Finger Salute" hard tilbakestilling av roboten, noe som betyr at du holder nede dokkingstasjonen og spotknappene i ti sekunder til lampen dimmes for å indikere at den skal slippes. Du lyktes med denne harde tilbakestillingen hvis du hører roboten spille en kort skala. Deretter må du koble til roomba ved å bruke en kode linje som denne "r = roomba (x)" hvor 'x' er tallet som er angitt for roboten du har.
Til slutt må du laste ned MATLAB -mobil på hvilken mobilenhet du vil bruke til dette prosjektet, og denne applikasjonen er tilgjengelig på både Android- og Apple -enheter. Når programmet er installert, må du logge inn med legitimasjon. Deretter må du koble denne enheten til datamaskinen din, ved å bruke fanen merket "Mer" -> klikk deretter på "innstillinger" -> klikk deretter "Legg til en datamaskin", dette skal vise skjermen som vises på bildene ovenfor. Etter at du har sett dette neste trinn du må gå igjennom er bare å plugge og tygge informasjonen den ber om. Når du har blitt tilkoblet, vil du kunne ringe funksjoner som du definerer på datamaskinen din på telefonen for å kontrollere roboten.
Trinn 3: Logisk opprettelse av en MATLAB -kode for bruk av sensorer
Koden vil være enklest å opprette når et flertall av den er innenfor on while loop, slik at roomba konstant kan oppdatere gyldige verdier den ser på. Hvis det er en feil, viser MATLAB en feil og hvor den vises i koden, noe som gjør feilsøking relativt enkel.
Denne koden er designet i r2018a MATLAB, og bruker standard verktøykasser, iRobot Create verktøykasse, så vel som MATLAB mobil verktøykasse. Roomba som brukes i dette eksemplet er betegnet som 26, og r = roomba (26) trenger bare å kjøres én gang for å kommunisere fullt ut med roomba.
Kode:
funksjon parkassist (x) hvis x == 1
r = roomba (26) % kobles til roomba
mens det er sant
r.setDriveVelocity (.05,.05) % setter roomba til en lavere kjørehastighet
bump = r.getBumpers % henter dataene fra støtsensorene
cliff = r.getCliffSensors % henter dataene fra cliffsensorene
light = r.getLightBumpers % henter dataene fra lysstøtsensorene
img = r.getImage;% leser kameraet av roboten
red_mean = mean (mean (img (:,:, 1))) % leser gjennomsnittlig mengde røde piksler
green_mean = mean (mean (img (:,:, 2))) % leser gjennomsnittlig mengde grønne piksler
blue_mean = mean (mean (img (:,:, 3))) % leser gjennomsnittlig mengde blå piksler
hvis bump.front == 1 %leser fremre støtsensorer
r.stop %stopper roomba
msgbox ('Path Obscured!', 'Parking Assistant Message') % viser melding om at banen er skjult, bryter % enden
elseif green_mean> 150
r.stop %stopper roomba
cont = questdlg ('Fortsett?', 'Sti fullført') %viser spørsmålsbok som ber om å fortsette
hvis forts == 'Ja'
parkassist (1) %starter koden på nytt
ellers
slutt
break % avslutter løkken
annet hvis red_mean> 140
r.turnAngle (45) %snur roomba 45 grader
r.timeStart %starter en tidsteller
mens det er sant
r.setDriveVelocity (.05,.05) %angir romhastigheten
time = r.timeGet %tildeler tiden til en variabel
bump = r.getBumpers % henter dataene fra støtsensorene
cliff = r.getCliffSensors % henter dataene fra cliffsensorene
light = r.getLightBumpers % henter dataene fra lysstøtsensorene
img = r.getImage;% leser kameraet av roboten
red_mean = mean (mean (img (:,:, 1))) % leser gjennomsnittlig mengde røde piksler
green_mean = mean (mean (img (:,:, 2))) % leser gjennomsnittlig mengde grønne piksler
blue_mean = mean (mean (img (:,:, 3))) % leser gjennomsnittlig mengde blå piksler
hvis blue_mean> 120
r.moveDistance (-0.01) % flytter roomba bakover en angitt distansesang 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 melding om at vann er funnet r.turnAngle (-80) % roterer roomba 80 grader
break % avslutter gjeldende sløyfe
elseif light.rightFront> 25 || light.leftFront> 25 %leser lysstøtsensorer
r.moveDistance (-0.01) % flytter roomba bakover en angitt avstand
r.turnAngle (-35) % roterer romba 35 grader
break %avslutter gjeldende sløyfe
elseif cliff.rightFront <2500 && cliff.leftFront <2500 %leser begge cliffsensorene
r.moveDistance (-0,1) % flytter roomba bakover en angitt avstand
r.turnAngle (-80) %roterer roomba 80 grader
break % avslutter gjeldende sløyfe
elseif tid> = 3
r.stop %stopper roomba
contin = questdlg ('Station Free, Continue?', 'Parking Assistant Message') %spør om roomba skal fortsette hvis contin == 'Yes'
r.turnAngle (-90) % roterer romba 90 grader
parkassist (1) %starter funksjonen på nytt
ellers
r.stop % stopper roomba
slutt
ellers
slutt
slutt
elseif cliff.rightFront <2500 && cliff.leftFront <2500 %leser begge cliffsensorene
r.moveDistance (-0,1) %flytter roomba bakover en angitt avstand
r.turnAngle (-90) %roterer roomba 90 grader
elseif cliff.rightFront <2500 %leser høyre cliff sensor
r.turnAngle (-5) %svinger romba litt i motsatt retning av klippesensoren
elseif cliff.leftFront <2500 %leser venstre cliff sensor
r.turnAngle (5) %svinger roomba litt i motsatt retning av cliff -sensoren
ellers
slutt
slutt
slutt
Trinn 4: Testing av koden og roboten
Etter at koden ble utviklet, var neste trinn å teste koden og roboten. Siden det er mange forskjellige justeringer som kan gjøres i koden, for eksempel vinkelen roboten dreier, hastigheten den beveger seg og terskelverdiene for hver farge, er den beste måten å finne ut disse verdiene for roboten din å teste dem og endre deg etter hvert. For hver arbeidsdag vi hadde, endret vi stadig disse verdiene siden noen av dem er avhengige av miljøet som roboten din opererer i. Den beste måten vi fant var å plassere roomba på stien du vil at den skal følge, og ha en barriere som er høy nok til at kameraet ikke kan oppdage farger du ikke vil at det skal gjøre. Det neste trinnet er å la det kjøre og vise det fargene du vil ha, når du vil at den skal fullføre oppgaven. Når du ser et problem, er det beste å gjøre å skyve den fremre støtfangeren inn, slik at den stopper, og deretter endre parameteren du hadde problemer med.
Trinn 5: Erkjennelse av feil
Når hvert prosjekt er utført, er det alltid feilkilder. For oss opplevde vi feil med det enkle faktum at roboten ikke er presis med vinkelen den svinger i, så hvis du forteller den om å snu 45 grader, kommer det ikke til å være nøyaktig. En annen feilkilde for oss var at roboten noen ganger fungerer, og du har vanskelig til å tilbakestille den før den fungerer igjen. Den siste siste feilkilden for oss var at den samme koden ikke vil ha samme effekt på forskjellige roboter, så du må kanskje være tålmodig med den og justere deretter.
Trinn 6: Konklusjon
Nå har du alle verktøyene til å leke med din roomba, noe som betyr at du kan manipulere koden uansett om du vil oppnå målene du ønsker. Dette bør være den beste delen av dagen din, så ha det gøy og kjør trygt!
Anbefalt:
Arduino Parking Assistant - Parker bilen på riktig sted hver gang: 5 trinn (med bilder)
Arduino Parking Assistant - Parker bilen din på riktig sted hver gang: I dette prosjektet viser jeg deg hvordan du bygger din egen parkeringsassistent ved hjelp av en Arudino. Denne parkeringsassistenten måler avstanden til bilen din og veileder deg til å parkere den på riktig sted ved hjelp av en LCD -skjermavlesning og en LED, som fortsetter
Solar Powered LED Parking Sensor: 8 trinn (med bilder)
Solcelledrevet LED -parkeringssensor: Garasjen vår har ikke mye dybde, og har skap i enden for ytterligere å redusere dybden. Min kones bil er akkurat kort nok til å passe, men den er i nærheten. Jeg laget denne sensoren for å forenkle parkeringsprosessen og for å sikre at bilen var full
University Campus Student Parking Map: 7 trinn (med bilder)
University Campus Student Parking Map: Mange studenter lurer på hvor de kan parkere på et universitetsområde. For å løse dette problemet laget jeg et opplyst parkeringskart over hovedområdet på Utah State Universitys campus. Kartet er for at elevene skal ta et raskt blikk på hvilke parkeringsalternativer som er
Arduino Smart Parking: 4 trinn
Arduino Smart Parking: Bill Blankenship, Willam Bailey, Hannah Hargrove Med bruk av et Arduino -bord klarte vår gruppe å lage et system som lar lyssensorer oppdage når en bil okkuperte et rom eller om plassen er ledig. Etter sekstiåtte linjer, e
MIDI Pod-Pal: 4 trinn
MIDI Pod-Pal: *** OPPDATERING 4/22/'21 ****** Jeg har lagt til en fullstendig skjematisk oversikt over alle ledninger for å hjelpe til med konstruksjon. *** Jeg vil ikke gå inn i en latterlig mengde dybden her på bygningsdelen, min intensjon var å vise et annet eksempel på å bygge en Arduino -basert MI