Përmbajtje:

Roomba Explorer: 4 hapa
Roomba Explorer: 4 hapa

Video: Roomba Explorer: 4 hapa

Video: Roomba Explorer: 4 hapa
Video: iRobot Roomba i7+ ПОСЛЕ ГОДА ЭКСПЛУАТАЦИИ🤖 ЧЕСТНЫЙ ОТЗЫВ! 2024, Nëntor
Anonim
Roomba Explorer
Roomba Explorer

Duke përdorur MATLAB dhe Robotin iRobot's Create2, ky projekt do të eksplorojë zona të ndryshme të një lokacioni të panjohur. Ne përdorëm sensorët në Robot për të ndihmuar në manovrimin e një terreni të rrezikshëm. Duke marrë fotografi dhe video nga një Raspberry Pi që është bashkangjitur, ne ishim në gjendje të përcaktonim pengesat me të cilat Roboti do të përballet dhe ato do të klasifikohen.

Pjesët dhe materialet

Për këtë projekt, do t'ju duhet

-një kompjuter

-versioni më i ri i MATLAB (MATLAB R2018b u përdor për këtë projekt)

- roombaInstall kutinë e veglave

-Roboti Krijo2 iiRobot

-Mjedër Pi me Kamera

Hapi 1: Fillimi dhe sensorët

Fillimi dhe sensorët
Fillimi dhe sensorët

Para fillimit të ndonjë programimi, ne shkarkuam kutinë e veglave roombaInstall, e cila lejoi qasje në përbërës të ndryshëm të Robotit.

Fillimisht, ne krijuam një GUI për të inicializuar çdo Robot. Për ta bërë këtë, duhet të shkruani numrin e Robotit si hyrje. Kjo do të lejojë qasjen për të drejtuar programin tonë tek Roboti Ne kemi punuar për ta bërë Robotin të manovrojë nëpër terrenet e shumta me të cilat do të haset. Ne zbatuam Sensorët Cliff, Sensorët e Goditjes së Dritës dhe Sensorët e Goditjes Fizike, duke përdorur daljet e tyre për të udhëtuar Robotin për të ndryshuar shpejtësinë dhe drejtimin e tij. Kur ndonjëri nga gjashtë Sensorët e Goditjes së Dritës zbulon një objekt, vlera që ata prodhojnë do të ulet, duke bërë që shpejtësia e Robotit të ulet për të shmangur një përplasje me shpejtësi të plotë. Kur Roboti përplaset përfundimisht me një pengesë, sensorët e Goditjes Fizike do të raportojnë një vlerë më të madhe se zero; për shkak të kësaj, Roboti do të ndalet, kështu që nuk do të ketë përplasje të mëtejshme dhe më shumë funksione mund të vihen në veprim. Për Sensorët Cliff, ata do të lexojnë shkëlqimin e zonës përreth tyre. Nëse vlera është më e madhe se 2800, ne përcaktuam që Roboti do të ishte në terren të qëndrueshëm dhe të sigurt. Por, Nëse vlera është më pak se 800, Sensorët Cliff do të zbulojnë një shkëmb, duke u ndalur menjëherë që të mos bjerë. Çdo vlerë në mes u përcaktua se përfaqëson ujin dhe do të bëjë që Roboti të ndalojë veprimin e tij. Duke përdorur sensorët e mësipërm, shpejtësia e Robotit ndryshon duke na lejuar të përcaktojmë më mirë nëse ekziston ndonjë rrezik.

Më poshtë është kodi (nga MATLAB R2018b)

%% Fillimi

dlgPrompts = {'Numri Roomba'};

dlgTitle = 'Zgjidh dhomën tënde';

dlgDefaults = {''};

opts. Resize = 'aktiv';

dlgout = inputdlg (dlgPrompts, dlgTitle, 1, dlgDefault, zgjedh) % Krijo dritare që e bën përdoruesin të fusë numrin e dhomës së tij

n = str2double (dlgout {1});

r = roomba (n); % Inicon përdoruesin e specifikuar nga Roomba %% Përcaktimi i shpejtësisë nga Sensorët e përplasjes së dritës ndërsa e vërtetë s = r.getLightBumpers; % marrin sensorë të goditjes së dritës

lbumpout_1 = fushë nxjerrëse (s, 'majtas'); % merr vlerat numerike të sensorëve dhe i bën ata më të përdorshëm lbumpout_2 = ekstrakti (s, 'leftFront');

lbumpout_3 = ekstraktfield (s, 'leftCenter');

lbumpout_4 = ekstraktfield (s, 'rightCenter');

lbumpout_5 = extractfield (s, 'rightFront');

lbumpout_6 = ekstraktfield (s, 'djathtas');

lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6] % konverton vlerat në matricë

sLbump = renditje (lbout); %rendit matricën në vlerën më të ulët mund të nxirret

lowLbump = sLbump (1); shpejtësia =.05+(lowLbump)*. 005 %duke përdorur vlerën më të ulët, e cila përfaqëson pengesa të afërta, për të përcaktuar shpejtësinë, shpejtësi më të lartë kur asgjë nuk zbulohet

r.setDriveVelocity (shpejtësia, shpejtësia)

fund

% Parakolpët Fizikë

b = r.getBumpers; %Prodhimi i vërtetë, i rremë

bsen_1 = fushë nxjerrëse (b, 'majtas')

bsen_2 = fushë nxjerrëse (b, 'djathtas')

bsen_3 = fushë nxjerrëse (b, 'përpara')

bsen_4 = fushë nxjerrëse (b, 'leftWheelDrop')

bsen_5 = extractfield (b, 'rightWheelDrop')

gunga = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = shuma (bums)

nëse tbump> 0 r.setDriveVelocity (0, 0)

fund

% Sensorë Cliff

c = r.getCliffSensors %% 2800 të sigurt, përndryshe ujë

csen_1 = fushë nxjerrëse (c, 'majtas')

csen_2 = fushë nxjerrëse (c, 'djathtas')

csen_3 = fushë nxjerrëse (c, 'majtas përpara')

csen_4 = fushë nxjerrëse (c, 'djathtas')

shkëmbinjtë = [csen_1, csen_2, csen_3, csen_4]

ordcliff = renditje (shkëmbinj)

nëse ordcliff (1) <2750

r.setDriveVelocity (0, 0)

nëse shkëmbi <800

shpërnda 'shkëmbin'

tjeter

shpërndaj 'ujë'

fund

r. TurnAngle (45)

fund

Hapi 2: Marrja e të dhënave

Pasi të ndizen sensorët e goditjes fizike, Roboti do ta zbatojë atë në bordin e Raspberry Pi për të bërë një fotografi të pengesës. Pas marrjes së një fotografie, duke përdorur njohjen e tekstit nëse ka tekst në foto, Roboti do të përcaktojë se çfarë është pengesa dhe çfarë thotë pengesa.

img = r.getImage; imshow (img);

imwrite (img, 'imgfromcamera.jpg')

foto = imread ('imgfromcamera.jpg')

ocrResults = ocr (foto)

njohurText = ocrResults. Text;

figura;

imshow (foto) tekst (220, 0, teksti i njohur, 'Ngjyra e sfondit', [1 1 1]);

Hapi 3: Përfundimi i Misionit

Kur Roboti përcakton që pengesa është SHTOMPIA, ai do të përfundojë misionin e tij dhe do të qëndrojë në shtëpi. Pas përfundimit të misionit, Roboti do të dërgojë një e-mail paralajmërim se është kthyer në shtëpi dhe do të dërgojë imazhet që ka marrë gjatë udhëtimit të tij.

% Dërgimi i E-mail

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

setpref ('Internet', 'E_mail', '[email protected]'); % llogari postare për t'u dërguar nga setpref ('Internet', 'SMTP_Username', 'fut email dërgues'); % dërgues i emrit të përdoruesit setpref ('Internet', 'SMTP_Password', 'fut fjalëkalimin e dërguesit'); % Fjalëkalimi i dërguesve

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

sendmail ('Fut email -in pranues', 'Roomba', 'Roomba është kthyer në shtëpi !!', 'imgfromcamera.jpg') % llogari poste për t'i dërguar

Roboti përfundon.

Hapi 4: Përfundimi

Përfundim
Përfundim

Programi MATLAB i përfshirë është i ndarë nga i gjithë skripti që është përdorur me Robotin. Në draftin përfundimtar, sigurohuni që të vendosni të gjithë kodin, përveç hapit të inicializimit, në një cikël të caktuar për t'u siguruar që parakolpët janë duke punuar vazhdimisht. Ky program mund të redaktohet për t'iu përshtatur nevojave të përdoruesit. Konfigurimi i Robotit tonë është treguar.

*Kujtesë: Mos harroni se kutia e veglave roombaInstall është e nevojshme që MATLAB të ndërveprojë me Robotin dhe Raspberry Pi në bord.

Recommended: