Sisällysluettelo:
- Vaihe 1: Alustus ja anturit
- Vaihe 2: Tietojen hankkiminen
- Vaihe 3: Tehtävän viimeistely
- Vaihe 4: Johtopäätös
Video: Roomba Explorer: 4 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
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
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
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:
Roomba Bot the Bulider: 5 vaihetta (kuvilla)
Roomba Bot the Bulider: Bot the Builder on roomba, jossa on " nappaajat " etuosaan kiinnitetty pystyy liikuttamaan esineitä. Sen mukana tuleva koodi on asetettu tallentamaan ensimmäinen liike graafisella käyttöliittymällä, jota voit hallita vain hiiren napsautuksella. Afte
MATLAB -ohjattu Roomba: 5 vaihetta
MATLAB -ohjattu Roomba: Tämän projektin tavoitteena on hyödyntää MATLABia ja muokattua iRobot -ohjelmoitavaa robottia. Ryhmämme yhdisti koodaustaitomme luodaksemme MATLAB -komentosarjan, joka käyttää monia iRobotin toimintoja, mukaan lukien kallioanturit, puskurin tunnistimet
Mars Roomba Project UTK: 4 vaihetta
Mars Roomba -projekti UTK: VASTUUVAPAUSLAUSEKE: TÄMÄ TOIMII VAIN, JOS ROOMBA ON MÄÄRITETTY ERITTÄIN TÄLLÄ, TÄMÄ OHJE on luotu ja sen on tarkoitus käyttää TENNESSEE -YLIOPISTOJEN JA FACULTY -palvelun avulla. Tämän koodin avulla voidaan määrittää kirjoitettu ja s
Roomba Scout Explorer: 8 vaihetta
Roomba Scout Explorer: Yhtenä odotetuimmista ja tutkituimmista amerikkalaisista projekteista Mars-rover-hankkeista on tullut ihmisten saavutuksia korkean teknologian itsenäisten järjestelmien jatkuvasti etenevässä tuotannossa vain tutkiakseen ja
Bus Pirate 3EEPROM Explorer Board: 5 vaihetta
Bussipiraatti 3EEPROM Explorer Board: Jos sinulla on jokin Hack a Day's Bus Pirates, mitä teet sen kanssa? Opi 1-johdin-, I2C- ja SPI-EEPROM-laitteista 3EEPROM-tutkimuslevyn (kutsumme sitä nimellä THR-EE-PROM) avulla. EEPROM on eräänlainen muistisiru, joka tallentaa tietoja ilman jatkuvaa virtaa