Innholdsfortegnelse:

Roomba With MATLAB: 4 trinn (med bilder)
Roomba With MATLAB: 4 trinn (med bilder)

Video: Roomba With MATLAB: 4 trinn (med bilder)

Video: Roomba With MATLAB: 4 trinn (med bilder)
Video: Mr. Roombato - A MATLAB-Driven Roomba Project 2024, November
Anonim
Roomba Med MATLAB
Roomba Med MATLAB

Dette prosjektet bruker MATLAB og en iRobot Create2 programmerbar robot. Ved å sette vår kunnskap om MATLAB på prøve, kan vi programmere Create2 til å tolke bilder og oppdage signaler. Robotens funksjonalitet avhenger hovedsakelig av MATLAB -mobilappen og en Raspberry Pi -kameramodul.

Trinn 1: Deler og materialer

Deler og materialer
Deler og materialer
Deler og materialer
Deler og materialer
Deler og materialer
Deler og materialer
Deler og materialer
Deler og materialer

1. iRobot Create, versjon 2

- Dette er en programmerbar robot som ser ut som en Roomba. Vær oppmerksom på at dette produktet fra iRobot ikke er et vakuum. Den er beregnet på tilpasset programmering av brukeren.

2. MATLAB 2017a

- De fleste eldre versjoner vil være kompatible med koden vi brukte nedenfor. MATLAB vil identifisere en kommando som ikke er kompatibel med versjonen du har, og vil foreslå en kommando som passer best.

3. Raspberry Pi 3 Model B, versjon 1.2

- Sjekk for å se hvilken Raspberry Pi som er kompatibel med iRobot. Se denne lenken for ytterligere hjelp: https://www.irobotweb.com/~/media/MainSite/PDFs/A… Denne instruksen forutsetter at du jobber med en forhåndsprogrammert Raspberry Pi. Vær oppmerksom på at du må jobbe med en forhåndsprogrammert Pi for at følgende trinn skal fungere. Ved å bruke en forhåndsprogrammert Pi kan du utføre all kodingen din i MATLAB alene.

4. Kameramodul V2 (for Raspberry Pi)

- Du kan bli overrasket; til tross for størrelsen, er Raspberry Pi kameramodul veldig god kvalitet. Det er det billigste og mest kompatible alternativet for dette prosjektet.

Valgfritt: 3D-trykt stativ. Dette brukes til å stabilisere kameraet. Det påvirker ikke robotens funksjonalitet, men det vil hjelpe deg med kodingen hvis du ønsker å bruke bildedata for farge- og/eller gjenkjenning av objekter.

Trinn 2: Konfigurasjon

Konfigurasjon
Konfigurasjon
Konfigurasjon
Konfigurasjon

1. Koble til Raspberry Pi og kameramodul (maskinvare)

- For å drive Raspberry Pi må du kjøre en mikro -USB -hann til den kvinnelige strømporten på mikrokontrolleren. Valgfritt: En spenningsregulator kan brukes for å sikre at spenningen ikke overstiger 5V. Etter at Raspberry Pi er slått på, kan du koble den til roboten din ved å kjøre USB -en a fra hovedkortet til USB -port A på mikrokontrolleren.

- Etter å ha koblet Pi til Roomba, er kameraet klart til å installeres. Kameramodulen vil være mye mindre enn du forventer. Vær oppmerksom på at objektivet er montert på en sensor, og et hvitt bånd strekker seg fra kameraet. IKKE fjern eller riv båndet! Dette er kabelen du trenger for å koble den til Raspberry Pi. Hold først enden av båndet og finn sølvkontaktene og den blå kabelen. Disse er på motsatte sider. Deretter finner du sporet mellom ethernet- og HDMI -portene på Raspberry Pi. Legg merke til at det er en liten, hvit lås som dekker den. Løft låsen sakte, men ikke fjern den fra sporet, da den klikker og blir permanent skadet. Når du har løftet låsen, ta tak i båndet og sett sølvkontaktene mot HDMI -porten. Den blå siden vender mot Ethernet -porten. Skyv båndet sakte inn i sporet mens det fremdeles er ulåst. Du trenger ikke tvinge den inn i sporet. Etter innsetting, skyv låsen ned igjen. Hvis kameraet er ordentlig festet, bør du (forsiktig) kunne trekke i båndet og føle spenning. Båndet skal ikke være løst. Etter at du har koblet kameraet til Pi, kan du legge merke til hvor løst det er. Dette er grunnen til at vi brukte et 3D-trykt feste for å stabilisere det. Det er ditt valg å bestemme hvilke materialer du vil bruke for å holde kameraet stille for høy kvalitet.

2. Installere riktige filer og koble Roomba til datamaskinen Etter at all maskinvare er konfigurert, kan du nå gå videre til å installere MATLAB sammen med de tilhørende m-filene som lar deg kommunisere med roboten. For å gjøre dette, åpne MATLAB og opprett en ny mappe for å beholde alle relaterte filer sammen. Bruk dette skriptet til å installere/oppdatere de nødvendige filene:

- Alle filene skal nå vises i den opprettede mappen din. Høyreklikk i vinduet Gjeldende mappe og velg ‘Legg til i banen’ for å legge den banen til listen over kataloger der MATLAB ser etter filer. Sørg for at alle filene dine er i riktig bane.

3. Når filene er installert, kan du nå begynne å koble til roboten din. Begynn med å slå på roboten og deretter tilbakestille den umiddelbart etter oppstart (ikke glem å tilbakestille roboten hver gang før og etter bruk). For det andre, koble både roboten og den bærbare datamaskinen til det samme wifi -nettverket. Etter dette vil vi snakke med den forhåndsprogrammerte Raspberry Pi via MATLAB ved å ringe Roomba ved å bruke sitt fornavn og funksjonen roomba. For eksempel vil jeg koble til robot 28 ved å bruke følgende linje: R = roomba (28).

- Legg merke til hvordan jeg tildelte objektet til en variabel R. Jeg kan nå få tilgang til de tilknyttede Roomba -funksjonene fra installasjonsfilen ved å behandle variabelen R som en struktur.

- R.turnAngle (90) Hvis alt gikk bra, skulle en musikalsk tone spille som bekrefter forbindelsen.

Trinn 3: MATLAB Logic

PDF -dokumentet nederst i dette trinnet er et detaljert logikkflytdiagram for vår kodingsprosess i MATLAB. Vi aktiverte klippe-, lys- og lysstøtsensorene for å la roboten kommunisere med oss når den oppdager et objekt i umiddelbar nærhet. Når roboten for eksempel beveger seg fremover, søker lyssensorene etter objekter i banen i henhold til vektoren den beveger seg ved. Vi valgte en avstandsterskel for roboten slik at når den nærmer seg et objekt, vil den reversere i stedet for å kollidere med den. Vår robot er også konfigurert med Twitter, som vi spesifiserte i vår kodingsprosess (dette vil bli vist nedenfor).

For å forbedre opplevelsen brukte vi MATLAB -applikasjonen på våre mobile enheter, slik at vi kan kontrollere robotens bevegelser bare ved å vippe telefonene våre. Dette er en valgfri aktivitet, ettersom du sikkert kan få roboten til å flytte ved å bruke kommandoen moveDistance i MATLAB -kodesegmentet i stedet. Husk at bruk av MATLAB -kommandoer for å kontrollere roboten din er å foretrekke hvis målet ditt skal være presist. Hvis du ønsker å rette roboten slik at kameraet tar et bilde på et bestemt sted, kan det være bedre å kode robotens bevegelser i MATLAB. Mens det er underholdende, er det ikke ønskelig å bruke MATLAB -applikasjonen til å kontrollere roboten din for nøyaktighet.

Koden beordrer Roomba til å utføre et grunnleggende oppsett og deretter fortsette gjennom en kontinuerlig sløyfe. I utgangspunktet vil den bærbare datamaskinen opprette en kobling til Roomba ved hjelp av Roomba () -kommandoen. Den konfigurerer også twitter -tilkoblingen ved hjelp av webwrite () -kommandoen i MATLAB. Sløyfen inneholder fem hovedlogiske strømmer avhengig av miljøet rundt Roomba. Først sjekker Roomba om det er hindringer, og justerer bakover hvis den finner at den er hindret. Innebygd i den sløyfen er den andre banen som varsler brukere om Roomba blir ført bort. Et viktig verktøy i den harde Mars -krigszonen. Etter at Roomba har bestemt at posisjonen er trygg, ser den til den mobile enheten for å bestemme den neste bevegelsen. Hvis den mobile enheten vippes fremover, vil den beregne en basehastighet avhengig av alvorlighetsgraden av rullemålet enn å justere de enkelte hjulhastighetene for å snu basert på stigningsgraden. Telefonen kan også flytte Roomba i revers. En nøytral tilstand for mobilenheter porter de to siste veiene. En hvilende Roomba vil søke etter et Alien -flagg og varsle brukeren om dette.

Nedenfor er koden vår (fullført i MATLAB 2017a)

%innganger: Orienteringsdata fra en wifi -tilkoblet enhet, kamera

%informasjon, sensordata

%utganger: bevegelse styres av den wifi -tilkoblede enheten og bevegelsen

% er sikkerhetskontrollert ved å lese sensordata. Hvis kameraet oppdager

% et fremmed flagg, så reagerer roomba ved å tweeting fiendens flagg

% er oppdaget.

%formål: enheten vår lever uten noe annet formål enn å beskytte de som

% opprettet det, det tjener skaperen og gjør det

% nøyaktig hva det ble fortalt.

%Bruk: i hovedsak vil programmet kjøre alene.

tøm alt, lukk alle, clc

%Initialiserer objekter og variabler

r = roomba (28);

m = mobiledev;

%use response = webwrite (vertsnavn, data)

hostname = 'https://api.thingspeak.com/apps/thingtweet/1/statuses/update';

API = 'SGZCTNQXCWAHRCT5';

tweet = 'RoboCop er operativ … Venter på kommando';

data = strcat ('api_key =', API, '& status =', tweet);

reponse = webwrite (vertsnavn, data);

%løp hele tiden

mens 1 == 1

%Strukturer som inneholder relavent data

o = m.orientering; %orientering av mobilenhet

light = r.getLightBumpers (); %Lys støtfangerverdier

a = r.getCliffSensors (); %CLiff -sensorverdier

støt = r.getBumpers (); %Støtfanger sensorer

%sjekk støtfangere

hvis bump.right == 1 || bump.left == 1 || bump.front == 1

r.moveDistance (-. 2,.2);

%sjekk lyssensorer

elseif light. venstre> 60 || light.leftFront> 60 || light.leftCenter> 60 || light.right> 60 || light.rightFront> 60 || light.rightCenter> 60

r.moveDistance (-. 2,.2);

%sjekk Cliff Sensors

%Tyverisikringssignal og varsling

elseif a. venstre <300 && a.right <300 && a.leftFront <300 && a.rightFront <300

r.stop ();

r.beep ();

tweet = 'RoboCop er opphevet!'

data = strcat ('api_key =', API, '& status =', tweet);

reponse = webwrite (vertsnavn, data);

%Normal bruk av klipper

annet hvis a. venstre <300 || a.right <300 || a. venstreFront <300 || a.rightFront <300

r.moveDistance (-. 2,.2);

%Roomba besto sjekkene og vil nå kjøre med normal drift.

%Opprinnelig måles rullingen av enheten og blir en base

%hastighet som deretter brukes til å beregne hjulets hastighet

%Fremoverbevegelse

elseif o (3)> = 0 && o (3) <= 60

baseVel = (-. 5/60)*(o (3) -60);

hvis o (2)> =-70 && o (2) <0

r.setDriveVelocity (baseVel+(. 3/50)*abs (o (2)), baseVel-(. 3/50)*abs (o (2)));

ellers if (2) = 0

r.setDriveVelocity (baseVel-(. 3/50)*abs (o (2)), baseVel+(. 3/50)*abs (o (2)));

ellers r. stopp

slutt

%Bakover bevegelse

elseif o (3)> 100 && o (3) <150

r.setDriveVelocity (-. 2, -.2)

r.beep ();

r.beep ();

%hvile roomba vil søke etter Alien Flagget merket som en blomstrende blomst

%grønt stykke papir

ellers

r. stopp

img = r.getImage (); %ta bilde

terskel = gråthresh (img (200: 383,:, 2))+. 1; %kalk grønt nivå

hvis terskel>.42

tweet = 'Enemy Spotted !!'

data = strcat ('api_key =', API, '& status =', tweet);

reponse = webwrite (vertsnavn, data);

ellers

r. stopp

slutt

slutt

slutt

Trinn 4: Konklusjon

Husk at du kan bruke skriptet vi skrev ovenfor, men du kan alltid endre det for å passe dine behov. Det trenger ikke å styres av telefonen din! (Det gjør det imidlertid morsommere.) Velg hvilken metode du foretrekker å bruke for å kontrollere roboten din. Kjør rundt med roboten din og nyt!

Anbefalt: