Përmbajtje:

Mars Roomba: 6 hapa
Mars Roomba: 6 hapa

Video: Mars Roomba: 6 hapa

Video: Mars Roomba: 6 hapa
Video: BEST AIR PURIFIER 2023 - OVER 30 TESTED!! 2024, Nëntor
Anonim
Mars Roomba
Mars Roomba

Ky udhëzues do t'ju udhëzojë në drejtimet e funksionimit të një boti vakumi Roomba të kontrolluar nga Raspberry Pi. Sistemi operativ që do të përdorim është përmes MATLAB.

Hapi 1: Furnizimet

Çfarë ju nevojitet për të mbledhur për të realizuar këtë projekt:

  • bot iRobot's Create2 Roomba fshesë me korrent
  • Mjedër Pi
  • Kamera Raspberry Pi
  • Versioni i fundit i MATLAB
  • Kutia e veglave të instalimit Roomba për MATLAB
  • Aplikimi MATLAB për një pajisje celulare

Hapi 2: Deklarata e problemit

Deklarata e Problemit
Deklarata e Problemit

Ne u ngarkuam të përdorim MATLAB për të zhvilluar një rover që mund të përdoret në Mars në mënyrë që të ndihmojmë shkencëtarët në mbledhjen e të dhënave të planetit. Funksionet që trajtuam në projektin tonë ishin kontrolli në distancë, njohja e ndikimit të objektit, njohja e ujit, njohja e jetës dhe përpunimi i imazhit. Për të arritur këto arritje, ne koduam duke përdorur komandat e kutisë së veglave Roomba për të manipuluar me shumë funksione të iRobot's Create2 Roomba.

Hapi 3: Telekomanda Bluetooth

Telekomandë Bluetooth
Telekomandë Bluetooth

Ky rrëshqitje do të përshkojë kodin për të kontrolluar lëvizjen e Roomba duke përdorur aftësitë Bluetooth të pajisjes tuaj smartphone. Për të filluar, shkarkoni aplikacionin MATLAB në smartphone tuaj dhe regjistrohuni në llogarinë tuaj Mathworks. Pasi të jeni regjistruar, shkoni te "më shumë", "cilësimet" dhe lidheni me kompjuterin tuaj duke përdorur adresën e tij IP. Pasi të lidheni, kthehuni te "më shumë" dhe zgjidhni "sensorë". Trokitni lehtë mbi sensorin e tretë në shiritin e sipërm të veglave të ekranit dhe trokitni lehtë mbi fillimin. Tani, smartphone juaj është një telekomandë!

Kodi është si më poshtë:

ndërsa 0 == 0

pauzë (.5)

Të dhëna telefonike = M. Orientimi;

Azi = Të dhënat telefonike (1);

Fusha = Të dhënat telefonike (2);

Ana = Të dhënat e telefonit (3);

gunga = r.getBumpers;

nëse Ana> 80 || Ana <-80

r.ndaloj

r.beep ('C, E, G, C^, G, E, C')

pushim

elseif Ana> 20 && Ana <40

r.krahAngle (-5);

elseif Ana> 40

r.rryp Këndi (-25);

elseif Ana-40

r. ktheseAngle (5);

elseif Ana <-40

r.krahAngle (25);

fund

nëse katran> 10 && katran <35

r.moveDistanca (.03)

elseif Fusha> -35 && Katran <-10

r.moveDistanca (-. 03)

fund

fund

Hapi 4: Njohja e Ndikimit

Njohja e Ndikimit
Njohja e Ndikimit

Një funksion tjetër që ne zbatuam ishte zbulimi i ndikimit të Roomba në një objekt dhe më pas korrigjimi i rrugës së tij aktuale. Për ta bërë këtë, na u desh të përdorim kushte me leximet nga sensorët e parakolpit për të përcaktuar nëse objekti ishte goditur. Nëse roboti godet një objekt, ai do të mbështetet.2 metra dhe do të rrotullohet në një kënd të përcaktuar nga i cili është goditur parakolpi. Pasi një artikull është goditur, shfaqet një meny që shfaq fjalën "oof".

Kodi është treguar më poshtë:

ndërsa 0 == 0

gunga = r.getBumpers;

r.setDriveVelocity (.1)

nëse përplaset.majtas == 1

msgbox ('Oof!');

r.moveDistanca (-0.2)

r.setTurnVelocity (.2)

r.tornAngle (-35)

r.setDriveVelocity (.2)

goditjet elseif.front == 1

msgbox ('Oof!');

r.moveDistanca (-0.2)

r.setTurnVelocity (.2)

r. turnAngle (90)

r.setDriveVelocity (.2)

gunga elseif.djathtas == 1

msgbox ('Oof!');

r.moveDistanca (-0.2)

r.setTurnVelocity (.2)

r. turnAngle (35)

r.setDriveVelocity (.2)

gunga elseif.leftDheelDrop == 1

msgbox ('Oof!');

r.moveDistanca (-0.2)

r.setTurnVelocity (.2)

r.tornAngle (-35)

r.setDriveVelocity (.2)

goditjet elseif.drejtaRrotaDrop == 1

msgbox ('Oof!');

r.moveDistanca (-0.2)

r.setTurnVelocity (.2)

r. ktheseAngle (35)

r.setDriveVelocity (.2)

fund

fund

Hapi 5: Njohja e jetës

Njohja e jetës
Njohja e jetës

Ne koduam një sistem të njohjes së jetës për të lexuar ngjyrat e objekteve para tij. Tre llojet e jetës për të cilat kemi koduar janë bimët, uji dhe alienët. Për ta bërë këtë, ne koduam sensorët për të llogaritur vlerat mesatare të kuqe, blu, jeshile ose të bardhë. Këto vlera u krahasuan me pragjet që u vendosën manualisht për të përcaktuar ngjyrën që shikon kamera. Kodi gjithashtu do të vizatojë rrugën drejt objektit dhe krijimin e një harte.

Kodi është si më poshtë:

t = 10;

i = 0;

ndërsa t == 10

img = r.getImage; imshow (img)

pauzë (0.167)

i = i + 1;

e kuqe_kuptim = mesatarja (mesatarja (img (:,:, 1)));

blu_kuptimi = mesatarja (mesatarja (img (:,,, 3)));

gjelbër_kuptimi = mesatarja (mesatarja (img (:,,, 2))));

kuptimi_bardhë = (kuptimi_ blu] + kuptimi jeshil + kuptimi i kuq] / 3; %e duan këtë vlerë përafërsisht 100

nëntë_plus_dhjetë = 21;

pragu_gjelbër = 125;

pragu_ blu = 130;

pragu_bardhë = 124;

pragu i kuq = 115;

ndërsa nëntë_plus_ten == 21 %e gjelbër - jetë

nëse green_mean> pragu i_gjelbër && blue_mean <blu_threshold && red_mean <red_threshold

r.moveDistanca (-. 1)

a = msgbox ('burimi i mundshëm i jetës u gjet, vendndodhja e vizatuar');

pauzë (2)

fshi (a)

[y2, Fs2] = audioread ('z_speak2.wav');

tingull (y2, Fs2)

pauzë (2)

%bimë = r.getImage; %imshow (bimë);

%kurse ('plant_img.mat', bimë ');

%vendndodhja e komplotit me ngjyrë të gjelbër

i = 5;

pushim

tjeter

nëntë_plus_dhe = 19;

fund

fund

nëntë_plus_dhjetë = 21;

ndërsa nine_plus_ten == 21 %blu - mëndafsh

nëse blu_mean> pragu_ blu && green_mean <gjelbër_thresh && white_mean <bardhë_threshold && red_mean <red_threshold

r.moveDistanca (-. 1)

a = msgbox ('është gjetur një burim uji, vendndodhja e planifikuar');

pauzë (2)

fshi (a)

[y3, Fs3] = audioread ('z_speak3.wav');

tingull (y3, Fs3);

%woder = r.getImage; %imshow (woder)

%kursim ('water_img.mat', fshirje me ujë)

%vendndodhja e komplotit në ngjyrë blu

i = 5;

pushim

tjeter

nëntë_plus_dhe = 19;

fund

fund

nëntë_plus_dhjetë = 21;

ndërsa nine_plus_ten == 21 %e bardhë - alienet monkaS

nëse white_mean> pragu_ i bardhë && blu_mean <blu_threshold && green_mean <green_threshold

[y5, Fs5] = audioread ('z_speak5.wav');

tingull (y5, Fs5);

pauzë (3)

r.setDriveVelocity (0,.5)

[ys, Fss] = audioread ('z_scream.mp3');

tingull (ys, Fss);

pauzë (3)

r.ndaloj

% alien = r.getImage; %imshow (i huaj);

% kurse ('alien_img.mat', alien);

i = 5;

pushim

tjeter

nëntë_plus_dhe = 19;

fund

fund

nëse i == 5

a = 1; %kthesë në kënd

t = 9; %përfundojë lak të madh

i = 0;

fund

fund

Hapi 6: Drejtojeni !

Pasi të jetë shkruar i gjithë kodi, kombinojini të gjitha në një skedar dhe voila! Boti juaj Roomba tani do të jetë plotësisht funksional dhe do të funksionojë siç reklamohet! Sidoqoftë, kontrolli Bluetooth duhet ose të jetë në një skedar të veçantë ose të ndahet nga pjesa tjetër e kodit me %%.

Kënaquni duke përdorur robotin tuaj !!

Recommended: