Innholdsfortegnelse:

Roomba Explorer: 4 trinn
Roomba Explorer: 4 trinn

Video: Roomba Explorer: 4 trinn

Video: Roomba Explorer: 4 trinn
Video: Возведение перегородок санузла из блоков. Все этапы. #4 2024, Juli
Anonim
Roomba Explorer
Roomba Explorer

Ved å bruke MATLAB og iRobot's Create2 Robot, vil dette prosjektet utforske forskjellige områder på et ukjent sted. Vi brukte sensorene på roboten for å hjelpe til med å manøvrere et farlig terreng. Ved å få fotografier og videofeed fra en Raspberry Pi som er vedlagt, klarte vi å bestemme hindringene Roboten vil møte, og de vil bli klassifisert.

Deler og materialer

For dette prosjektet trenger du

-en datamaskin

-nyeste versjon av MATLAB (MATLAB R2018b ble brukt til dette prosjektet)

- roombaInstall verktøykasse

-iRobot's Create2 -robot

-Raspberry Pi med kamera

Trinn 1: Initialisering og sensorer

Initialisering og sensorer
Initialisering og sensorer

Før vi begynte å programmere, lastet vi ned roombaInstall -verktøykassen, som ga tilgang til forskjellige komponenter i roboten.

I utgangspunktet opprettet vi en GUI for å initialisere enhver robot. For å gjøre dette må du skrive inn nummeret på roboten som en inngang. Dette vil gi tilgang til å kjøre programmet vårt til roboten Vi jobbet med å få roboten til å manøvrere gjennom de mange terrengene den ville støte på. Vi implementerte Cliff Sensors, Light Bump Sensors og Physical Bump Sensors ved å bruke utgangene til å utløse roboten for å endre hastighet og eller retning. Når noen av de seks lysstøtsensorene oppdager et objekt, reduseres verdien de sender ut, noe som får Robotens hastighet til å redusere for å unngå kollisjon i full hastighet. Når roboten endelig kolliderer med en hindring, vil Physical Bump -sensorene rapportere en verdi større enn null; på grunn av dette vil roboten stoppe, så det blir ingen flere kollisjoner og flere funksjoner kan settes i verk. For Cliff Sensors vil de lese lysstyrken i området rundt dem. Hvis verdien er større enn 2800, bestemte vi at roboten ville være på stabilt underlag og trygg. Men hvis verdien er mindre enn 800, vil Cliff Sensors oppdage en klippe og stoppe umiddelbart for ikke å falle av. Enhver verdi mellom ble bestemt for å representere vann og vil få roboten til å stoppe handlingen. Ved å bruke sensorene ovenfor, endres hastigheten på roboten slik at vi bedre kan avgjøre om det er fare.

Nedenfor er koden (fra MATLAB R2018b)

%% initialisering

dlgPrompts = {'Roomba Number'};

dlgTitle = 'Velg din Roomba';

dlgDefaults = {''};

opts. Resize = 'på';

dlgout = inputdlg (dlgPrompts, dlgTitle, 1, dlgDefaults, opts) % Opprett vindu som ber brukeren om å skrive inn sitt romba -nummer

n = str2double (dlgout {1});

r = roomba (n); % Initialiserer bruker spesifisert Roomba %% Hastighetsbestemmelse fra Light Bump Sensors mens true s = r.getLightBumpers; % får lysstøtsensorer

lbumpout_1 = extractfield (s, 'left'); % tar de numeriske verdiene til sensorene og gjør dem mer brukbare lbumpout_2 = extractfield (s, 'leftFront');

lbumpout_3 = extractfield (s, 'leftCenter');

lbumpout_4 = extractfield (s, 'rightCenter');

lbumpout_5 = extractfield (s, 'rightFront');

lbumpout_6 = extractfield (s, 'høyre');

lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6] % konverterer verdier til matrise

sLbump = sort (lbout); %sorterer matrisen til laveste verdi kan trekkes ut

lowLbump = sLbump (1); hastighet =.05+(lowLbump)*. 005 %ved å bruke laveste verdi, som representerer nære hindringer, for å bestemme hastighet, høyere hastighet når ingenting oppdages

r.setDriveVelocity (hastighet, hastighet)

slutt

% Fysiske støtfangere

b = r.getBumpers; %Output sant, usant

bsen_1 = ekstraktfelt (b, 'venstre')

bsen_2 = ekstraktfelt (b, 'høyre')

bsen_3 = extractfield (b, 'front')

bsen_4 = extractfield (b, 'leftWheelDrop')

bsen_5 = extractfield (b, 'rightWheelDrop')

støt = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = sum (bums)

hvis tbump> 0 r.setDriveVelocity (0, 0)

slutt

% Cliff Sensors

c = r.getCliffSensors %% 2800 safe, ellers vann

csen_1 = ekstraktfelt (c, 'venstre')

csen_2 = ekstraktfelt (c, 'høyre')

csen_3 = extractfield (c, 'leftFront')

csen_4 = extractfield (c, 'rightFront')

klipper = [csen_1, csen_2, csen_3, csen_4]

ordcliff = sorter (klipper)

hvis ordcliff (1) <2750

r.setDriveVelocity (0, 0)

hvis klippe <800

disp 'klippe'

ellers

disponere 'vann'

slutt

r. TurnAngle (45)

slutt

Trinn 2: Få data

Etter at de fysiske støtsensorene er utløst, vil roboten implementere Raspberry Pi ombord for å ta et fotografi av hindringen. Etter å ha tatt et fotografi, ved hjelp av tekstgjenkjenning hvis det er tekst i bildet, vil roboten avgjøre hva hindringen er og hva hindringen sier.

img = r.getImage; imshow (img);

imwrite (img, 'imgfromcamera.jpg')

foto = imread ('imgfromcamera.jpg')

ocrResults = ocr (foto)

anerkjent tekst = ocrResults. Text;

figur;

imshow (foto) tekst (220, 0, anerkjent tekst, 'Bakgrunnsfarge', [1 1 1]);

Trinn 3: Fullføringsoppgave

Når roboten bestemmer at hindringen er HJEM, fullfører den oppdraget og blir hjemme. Etter at oppdraget er fullført, vil roboten sende en e-postvarsel om at den har kommet hjem, og den vil sende bildene som den tok under turen.

% Sender e-post

setpref ('Internett', 'SMTP_Server', 'smtp.gmail.com');

setpref ('Internett', 'E_mail', '[email protected]'); % e -postkonto som skal sendes fra setpref ('Internett', 'SMTP_Username', 'enter sender email'); % avsendere brukernavn setpref ('Internett', 'SMTP_Password', 'skriv inn avsenderpassord'); % Avsenderpassord

rekvisitter = java.lang. System.getProperties; props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.port', '465');

sendmail ('Skriv inn mottakende e -post', 'Roomba', 'Roomba har kommet hjem !!', 'imgfromcamera.jpg') % e -postkonto å sende til

Roboten er deretter ferdig.

Trinn 4: Konklusjon

Konklusjon
Konklusjon

MATLAB -programmet som er inkludert, er atskilt fra hele skriptet som ble brukt med roboten. I det siste utkastet, sørg for å legge all koden, bortsett fra initialiseringstrinnet, i en stund -sløyfe for å sikre at støtfangerne stadig kjører. Dette programmet kan redigeres for å passe brukerens behov. Konfigurasjonen av vår robot er vist.

*Påminnelse: Ikke glem at roombaInstall -verktøykassen er nødvendig for at MATLAB skal samhandle med roboten og Raspberry Pi ombord.

Anbefalt: