Sisällysluettelo:

Roomba Explorer: 4 vaihetta
Roomba Explorer: 4 vaihetta

Video: Roomba Explorer: 4 vaihetta

Video: Roomba Explorer: 4 vaihetta
Video: МАЛЬДИВЫ, которые в самое сердце. Большой выпуск. 4K 2024, Marraskuu
Anonim
Roomba Explorer
Roomba Explorer

Tässä projektissa käytetään MATLABia ja iRobotin Create2 Robotia hyödyntäen erilaisia tuntemattoman sijainnin alueita. Käytimme robotin antureita helpottamaan vaarallisen maaston ohjaamista. Hankkimalla valokuvia ja videosyötteen liitteenä olevasta Raspberry Pi: stä pystyimme määrittämään robotin kohtaamat esteet ja ne luokitellaan.

Osat ja materiaalit

Tätä projektia varten tarvitset

-tietokone

-MATLABin uusin versio (tässä projektissa käytettiin MATLAB R2018b)

- roomba Asenna työkalupakki

-iRobotin Create2 -robotti

-Vadelma Pi kameralla

Vaihe 1: Alustus ja anturit

Alustus ja anturit
Alustus ja anturit

Ennen kuin aloitimme ohjelmoinnin, latasimme roombaInstall -työkalupakin, joka mahdollisti pääsyn eri robotin osiin.

Aluksi loimme graafisen käyttöliittymän minkä tahansa robotin alustamiseksi. Tätä varten sinun on syötettävä robotin numero syötteeksi. Tämä mahdollistaa pääsyn suorittamaan ohjelmamme robotille. Työskentelimme saadaksemme robotin liikkumaan monien maastojen läpi. Toteutimme kalliosensorit, kevyet törmäysanturit ja fyysiset törmäysanturit käyttämällä niiden ulostuloja robotin laukaisemiseksi sen nopeuden ja / tai suunnan muuttamiseksi. Kun jokin kuudesta Light Bump -anturista havaitsee objektin, niiden antama arvo laskee, jolloin robotin nopeus laskee täyden nopeuden törmäyksen välttämiseksi. Kun robotti törmää lopulta esteeseen, Physical Bump -anturit ilmoittavat arvon, joka on suurempi kuin nolla; Tämän vuoksi robotti pysähtyy, joten törmäyksiä ei tapahdu ja lisää toimintoja voidaan ottaa käyttöön. Kalliosensoreille he lukevat ympäröivän alueen kirkkauden. Jos arvo on suurempi kuin 2800, päätimme, että robotti olisi vakaalla alustalla ja turvallinen. Mutta jos arvo on alle 800, kalliosensorit tunnistavat kallion ja pysähtyvät välittömästi, jotta ne eivät putoa. Mikä tahansa välissä oleva arvo määritettiin edustamaan vettä ja saa robotin pysäyttämään toimintansa. Käyttämällä yllä olevia antureita robotin nopeutta muutetaan, jotta voimme paremmin määrittää, onko vaara olemassa.

Alla on koodi (MATLAB R2018b)

%% Alustus

dlgPrompts = {'Roomban numero'};

dlgTitle = 'Valitse huoneesi';

dlgDefaults = {''};

opts. Resize = 'päällä';

dlgout = inputdlg (dlgPrompts, dlgTitle, 1, dlgDefaults, opts) % Luo ikkuna, joka kehottaa käyttäjää syöttämään roomba -numeronsa

n = str2double (dlgout {1});

r = roomba (n); % Alustaa käyttäjän määrittämän Roomban %% Nopeuden määrittäminen Light Bump -anturien avulla, kun taas true = r.getLightBumpers; % saa valon törmäysanturit

lbumpout_1 = poimintakenttä (s, 'vasen'); % ottaa antureiden numeeriset arvot ja tekee niistä käyttökelpoisempia lbumpout_2 = poimintakenttä (s, 'leftFront');

lbumpout_3 = poimintakenttä (s, 'leftCenter');

lbumpout_4 = poimintakenttä (s, 'rightCenter');

lbumpout_5 = poimintakenttä (s, 'rightFront');

lbumpout_6 = poimintakenttä (s, 'oikea');

lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6] % muuntaa arvot matriisiksi

sLbump = lajittele (lbout); %lajittelee matriisin alimpaan arvoon

lowLbump = sLbump (1); nopeus =.05+(lowLbump)*. 005 %käyttäen pienintä arvoa, joka edustaa lähellä olevia esteitä, nopeuden määrittämiseen, suurempi nopeus, kun mitään ei havaita

r.setDriveVelocity (nopeus, nopeus)

loppuun

% Fyysiset puskurit

b = r. getPuskurit; %Tulos tosi, epätosi

bsen_1 = poimintakenttä (b, 'vasen')

bsen_2 = poimintakenttä (b, 'oikea')

bsen_3 = poimintakenttä (b, 'etu')

bsen_4 = poimintakenttä (b, 'leftWheelDrop')

bsen_5 = poimintakenttä (b, 'rightWheelDrop')

kuoppia = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = summa (bums)

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

loppuun

% Cliff -anturit

c = r.getCliffSensors %% 2800 turvallista, muuten vettä

csen_1 = poimintakenttä (c, 'vasen')

csen_2 = poimintakenttä (c, 'oikea')

csen_3 = poimintakenttä (c, 'leftFront')

csen_4 = poimintakenttä (c, 'rightFront')

kalliot = [csen_1, csen_2, csen_3, csen_4]

ordcliff = lajitella (kallioita)

jos ordcliff (1) <2750

r.setDriveVelocity (0, 0)

jos kallio <800

disp 'kallio'

muu

disp 'vesi'

loppuun

r. kääntökulma (45)

loppuun

Vaihe 2: Tietojen hankkiminen

Kun fyysiset törmäysanturit ovat lauennut, robotti toteuttaa Raspberry Pi -aluksensa ottaakseen esteen valokuvan. Valokuvan ottamisen jälkeen ja käyttämällä tekstintunnistusta, jos kuvassa on tekstiä, robotti määrittää, mikä este on ja mitä este sanoo.

img = r.getImage; imshow (img);

imwrite (img, 'imgfromcamera.jpg')

photo = imread ('imgfromcamera.jpg')

ocrResults = ocr (kuva)

tunnistettuTeksti = ocrResults. Text;

kuva;

imshow (valokuva) teksti (220, 0, tunnistettu teksti, 'BackgroundColor', [1 1 1]);

Vaihe 3: Tehtävän viimeistely

Kun robotti päättää, että este on KOTONA, se suorittaa tehtävänsä ja pysyy kotona. Tehtävän päätyttyä robotti lähettää sähköposti-ilmoituksen, että se on palannut kotiin, ja se lähettää matkan aikana ottamansa kuvat.

% Sähköpostin lähettäminen

setpref ('Internet', 'SMTP_palvelin', 'smtp.gmail.com');

setpref ('Internet', 'Sähköposti', '[email protected]'); % sähköpostitili lähetettäväksi setprefistä ('Internet', 'SMTP_Username', 'enter sender email'); % lähettäjien käyttäjätunnus setpref ('Internet', 'SMTP_Password', 'anna lähettäjän salasana'); % Lähettäjien salasana

rekvisiitta = 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 ('Anna vastaanottava sähköposti', 'Roomba', 'Roomba on palannut kotiin !!', 'imgfromcamera.jpg') % sähköpostitili lähetettäväksi

Robotti on sitten valmis.

Vaihe 4: Johtopäätös

Johtopäätös
Johtopäätös

Mukana oleva MATLAB -ohjelma on erotettu koko skriptistä, jota robotin kanssa käytettiin. Varmista lopullisessa luonnoksessa, että laitat kaikki koodit alustusvaihetta lukuun ottamatta jonkin aikaa silmukkaan varmistaaksesi, että puskurit ovat jatkuvasti käynnissä. Tätä ohjelmaa voidaan muokata käyttäjän tarpeiden mukaan. Robotin kokoonpano näkyy.

*Muistutus: Älä unohda, että roombaInstall -työkalupakki tarvitaan, jotta MATLAB voi olla vuorovaikutuksessa robotin ja Raspberry Pi -laitteen kanssa.

Suositeltava: