Innholdsfortegnelse:

Roomba Parking Pal: 6 trinn
Roomba Parking Pal: 6 trinn

Video: Roomba Parking Pal: 6 trinn

Video: Roomba Parking Pal: 6 trinn
Video: РАДУЖНЫЕ ДРУЗЬЯ — КАЧКИ?! НЕЗАКОННЫЕ Эксперименты VR! 2024, Juli
Anonim
Roomba Parking Pal
Roomba Parking Pal

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

Materialer
Materialer
Materialer
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

Logisk opprette en MATLAB -kode for bruk av sensorer
Logisk opprette 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

Testing av koden og roboten
Testing av koden og roboten
Testing av koden og roboten
Testing av koden og roboten
Testing av koden og roboten
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: