Përmbajtje:

Roomba Me MATLAB: 4 hapa (me fotografi)
Roomba Me MATLAB: 4 hapa (me fotografi)

Video: Roomba Me MATLAB: 4 hapa (me fotografi)

Video: Roomba Me MATLAB: 4 hapa (me fotografi)
Video: Do You Love Me? 2024, Nëntor
Anonim
Roomba Me MATLAB
Roomba Me MATLAB

Ky projekt përdor MATLAB dhe një robot të programueshëm iRobot Create2. Duke vënë në provë njohuritë tona për MATLAB, ne jemi në gjendje të programojmë Creat2 për të interpretuar imazhe dhe zbuluar sinjale. Funksionaliteti i robotit varet kryesisht nga aplikacioni celular MATLAB dhe një modul kamera Raspberry Pi.

Hapi 1: Pjesët dhe materialet

Pjesët dhe materialet
Pjesët dhe materialet
Pjesët dhe materialet
Pjesët dhe materialet
Pjesët dhe materialet
Pjesët dhe materialet
Pjesët dhe materialet
Pjesët dhe materialet

1. Krijo iRobot, Versioni 2

- Ky është një robot i programueshëm që duket si Roomba. Kini parasysh se ky produkt nga iRobot nuk është një vakum. Intendedshtë menduar për programim me porosi nga përdoruesi.

2. MATLAB 2017a

- Shumica e versioneve më të vjetra do të jenë në përputhje me kodin që kemi përdorur më poshtë. MATLAB do të identifikojë një komandë që nuk është në përputhje me versionin që keni dhe do të sugjerojë një komandë më të përshtatshme.

3. Raspberry Pi 3 Model B, Version 1.2

- Kontrolloni për të parë se cila Raspberry Pi është e pajtueshme me iRobot tuaj. Shihni këtë lidhje për ndihmë të mëtejshme: https://www.irobotweb.com/~/media/MainSite/PDFs/A… Ky udhëzues supozon se jeni duke punuar me një Raspberry Pi të programuar paraprakisht. Ju lutemi kini parasysh se do t'ju duhet të punoni me një Pi të paraprogramuar në mënyrë që hapat e mëposhtëm të funksionojnë. Përdorimi i një Pi të paraprogramuar do t'ju lejojë të kryeni të gjithë kodimin tuaj vetëm në MATLAB.

4. Moduli i kamerës V2 (për Raspberry Pi)

- Mund të habiteni; pavarësisht nga madhësia e tij, Moduli i Kamerës Raspberry Pi është me cilësi shumë të mirë. Optionshtë opsioni më i lirë dhe më i pajtueshëm për këtë projekt.

Opsionale: Qëndrim i printuar në 3D. Kjo përdoret për të stabilizuar kamerën. Nuk ndikon në funksionalitetin e robotit, por do të ndihmojë në kodimin tuaj nëse dëshironi të përdorni të dhëna të imazhit për njohjen e ngjyrave dhe/ose objekteve.

Hapi 2: Konfigurimi

Konfigurimi
Konfigurimi
Konfigurimi
Konfigurimi

1. Lidhja e Raspberry Pi dhe modulit të kamerës (Hardware)

- Për të fuqizuar Raspberry Pi, do t'ju duhet të drejtoni një mikro USB në fund të meshkujve në portën e fuqisë femërore në mikrokontrollues. Opsionale: Mund të përdoret një rregullator i tensionit për të siguruar që tensioni të mos kalojë 5V. Pasi të keni ndezur Raspberry Pi, mund ta lidhni atë me robotin tuaj duke përdorur USB -në fundore mashkullore a nga motherboard në portën USB A në mikrokontrollues.

- Pas lidhjes së Pi me Roomba, kamera është gati për t'u instaluar. Moduli i kamerës do të jetë shumë më i vogël nga sa prisni. Vini re se lente është montuar në një sensor, dhe një fjongo e bardhë shtrihet nga kamera. MOS e hiqni ose shqyeni shiritin! Ky është kabllo që ju nevojitet për ta lidhur me Raspberry Pi. Së pari, mbajeni fundin e shiritit dhe gjeni lidhësit e argjendtë dhe kabllon blu. Këto janë në anët e kundërta. Tjetra, gjeni vendndodhjen midis portave ethernet dhe HDMI në Raspberry Pi tuaj. Vini re se ka një bravë të vogël të bardhë që e mbulon atë. Ngadalë ngrini bravën, por mos e hiqni nga foleja, pasi ajo do të këputet dhe do të dëmtohet përgjithmonë. Pasi të keni ngritur bravën, kapeni shiritin dhe drejtojini lidhësit argjendi në portën HDMI. Ana blu do të përballet me portën Ethernet. Rrëshqiteni ngadalë shiritin në çarë ndërsa është ende e hapur. Ju nuk keni pse ta detyroni atë në fole. Pas futjes, shtyjeni bllokimin përsëri poshtë. Nëse kamera juaj është e siguruar siç duhet, duhet të jeni në gjendje të tërheqni (butësisht) shiritin dhe të ndjeni tension. Shiriti nuk duhet të jetë i lirshëm. Pasi të keni lidhur kamerën tuaj me Pi, mund të vini re se sa e lirshme është. Kjo është arsyeja pse ne përdorëm një montim të printuar 3D për ta stabilizuar atë. Choiceshtë zgjedhja juaj për të përcaktuar se cilat materiale dëshironi të përdorni për ta mbajtur kamerën tuaj të palëvizshme për imazhe me cilësi të lartë.

2. Instalimi i skedarëve të duhur dhe lidhja e Roomba me kompjuterin tuaj Pasi të keni konfiguruar të gjithë pajisjen tuaj, tani mund të kaloni në instalimin e MATLAB së bashku me skedarët m të lidhur që ju lejojnë të komunikoni me robotin. Për ta bërë këtë, hapni MATLAB dhe krijoni një dosje të re për t'i mbajtur të gjithë skedarët e lidhur së bashku. Përdorni këtë skenar për të instaluar/azhurnuar skedarët e kërkuar:

- Të gjithë skedarët tani duhet të shfaqen në dosjen tuaj të krijuar. Klikoni me të djathtën në dritaren Dosja aktuale dhe zgjidhni "Shto në Rrugë" për të shtuar atë shteg në listën e drejtorive ku MATLAB kërkon skedarë. Sigurohuni që të gjithë skedarët tuaj të jenë në rrugën e duhur.

3. Pasi të instalohen skedarët, tani mund të filloni të lidheni me robotin tuaj. Filloni duke e ndezur robotin tuaj dhe pastaj duke e rivendosur me forcë direkt pas fillimit (mos harroni ta rivendosni fort robotin tuaj çdo herë para dhe pas përdorimit). Së dyti, lidhni robotin dhe laptopin tuaj në të njëjtin rrjet wifi. Pas kësaj, ne do të flasim me Raspberry Pi të paraprogramuar përmes MATLAB duke thirrur Roomba duke përdorur emrin e tij dhe funksionin roomba. Për shembull, unë do të lidhesha me robotin 28 duke përdorur rreshtin e mëposhtëm: R = roomba (28).

- Vini re se si ia caktova objektin një variabli R. Tani mund të hyj në funksionet e lidhura me Roomba nga skedari i instalimit duke e trajtuar ndryshoren R si një strukturë.

- R.turnAngle (90) Nëse gjithçka shkoi mirë, një ton muzikor duhet të luajë, duke konfirmuar lidhjen.

Hapi 3: Logjika MATLAB

Dokumenti PDF në fund të këtij hapi është një tabelë e detajuar e rrjedhës logjike për procesin tonë të kodimit në MATLAB. Ne aktivizuam sensorët e shkrepit, dritës dhe përplasjes së dritës në mënyrë që të lejojmë robotin të komunikojë me ne kur zbulon një objekt në afërsi të tij të afërt. Për shembull, kur roboti lëviz përpara, sensorët e tij të dritës skanojnë për objektet në rrugën e tij sipas vektorit në të cilin po udhëton. Ne zgjodhëm një prag distancë për robotin në mënyrë që kur t'i afrohet një objekti, ai të kthehet mbrapsht në vend që të përplaset me të. Roboti ynë është konfiguruar gjithashtu me Twitter, të cilin e specifikuam në procesin tonë të kodimit (kjo do të tregohet më poshtë).

Për të rritur përvojën, ne përdorëm aplikacionin MATLAB në pajisjet tona celulare në mënyrë që të mund të kontrollojmë lëvizjet e robotit vetëm duke anuar telefonat tanë. Ky është një aktivitet opsional, pasi sigurisht që mund të lëvizni robotin duke përdorur komandën moveDistance në segmentin e kodit MATLAB. Mbani në mend se përdorimi i komandave MATLAB për të kontrolluar robotin tuaj preferohet nëse qëllimi juaj është të jeni të saktë. Nëse dëshironi të synoni robotin tuaj në mënyrë që kamera të bëjë një fotografi në një vend të caktuar, mund të jetë më mirë të kodoni lëvizjet e robotit në MATLAB. Ndërsa argëtuese, përdorimi i aplikacionit MATLAB për të kontrolluar robotin tuaj nuk është i dëshirueshëm për saktësi.

Kodi urdhëron Roomba të kryejë një konfigurim bazë dhe pastaj të vazhdojë përmes një lak të vazhdueshëm. Fillimisht laptopi do të krijojë një lidhje me Roomba duke përdorur komandën Roomba (). Ai gjithashtu krijon lidhjen në twitter duke përdorur komandën webwrite () në MATLAB. Lak përmban pesë rrjedha kryesore logjike në varësi të mjedisit që rrethon Roomba. Së pari Roomba kontrollon për pengesa dhe përshtatet prapa nëse e sheh se është e penguar. E futur në atë lak është rruga e dytë që paralajmëron përdoruesit nëse Roomba është duke u larguar. Një mjet i rëndësishëm në zonën e ashpër luftarake të Marsit. Pasi Roomba të ketë përcaktuar se pozicioni i saj është i sigurt, duket se pajisja celulare do të përcaktojë lëvizjen e saj të radhës. Nëse pajisja celulare është e përkulur përpara, ajo do të llogarisë një shpejtësi bazë në varësi të ashpërsisë së matjes së rrotullës sesa do të rregullojë shpejtësinë individuale të rrotave për t'u kthyer në bazë të shkallës së lartësisë. Telefoni gjithashtu mund të lëvizë Roomba në të kundërt. Një gjendje neutrale e pajisjes celulare paraqet dy shtigjet e fundit. Një Roomba që pushon do të kërkojë një flamur Alien dhe do të paralajmërojë përdoruesin në përputhje me rrethanat.

Më poshtë është kodi ynë (i plotësuar në MATLAB 2017a)

%hyrje: Të dhënat e orientimit nga një pajisje e lidhur me wifi, kamera

%informacion, të dhëna të sensorit

%rezultate: lëvizja kontrollohet nga pajisja e lidhur me wifi dhe lëvizja

% kontrollohet siguria duke lexuar të dhënat e sensorit. Nëse kamera zbulon

% një flamur i huaj atëherë roomba përgjigjet duke postuar në Twitter flamurin e armikut

% është vërejtur.

%qëllim: pajisja jonë jeton pa asnjë qëllim, përveçse për të mbrojtur ata që

% e krijoi atë, i shërben krijuesit të tij dhe e bën

% pikërisht ajo që thuhet.

%Përdorimi: në thelb programi do të funksionojë më vete.

pastroni të gjitha, mbyllni të gjitha, clc

%Fillimi i objekteve dhe ndryshoreve

r = roomba (28);

m = mobiledev;

%përdor përgjigje = webwrite (emri i hostit, të dhënat)

emri i hostit = 'https://api.thingspeak.com/apps/thingtweet/1/statuses/update';

API = 'SGZCTNQXCWAHRCT5';

tweet = 'RoboCop është operacional … Në pritje të komandës';

të dhëna = strcat ('api_key =', API, '& status =', cicërimë);

përgjigje = shkruaj në internet (emri i hostit, të dhënat);

%vazhdimisht në qark

ndërsa 1 == 1

%Strukturat që përmbajnë të dhëna relavente

o = m.orientimi; %orientimi i Pajisjes celulare

drita = r.getLightBumpers (); %Vlerat e Parakolpit të Dritës

a = r.getCliffSensors (); %Vlerat e sensorit CLiff

përplasem = r.getBumpers (); %Sensorë parakolp

%parakolp kontrollues

nëse përplasem.djathtas == 1 || përplasem.majtas == 1 || përplasem.përpara == 1

r.moveDistanca (-. 2,.2);

%Kontrolloni sensorët e dritës

drita elseif.majtas> 60 || drita.majtasPara> 60 || drita.leftCenter> 60 || dritë.djathtas> 60 || dritë.djathtas Përpara> 60 || drita.qendra e drejtë> 60

r.moveDistanca (-. 2,.2);

%kontrolloni Sensorët e Shkëmbit

%Sinjali dhe njoftimi kundër vjedhjes

elseif a.majtas <300 && a.djathtas <300 && a.leftPërpara <300 && a.djathtas Përpara <300

r.stop ();

r.beep ();

tweet = 'RoboCop është hequr!'

të dhëna = strcat ('api_key =', API, '& status =', cicërimë);

përgjigje = shkruaj në internet (emri i hostit, të dhënat);

%Operacioni Normal i Shmangjes së Shkëmbit

elseif a.majtas <300 || a.drejt <300 || a.leftF front <300 || a. Përpara <300

r.moveDistanca (-. 2,.2);

%Roomba kaloi kontrollet dhe tani do të funksionojë me funksionim normal.

%Fillimisht rrotulla e pajisjes matet dhe bëhet bazë

%shpejtësia e cila më pas përdoret për të llogaritur shpejtësinë e rrotës

%Lëvizje përpara

elseif o (3)> = 0 && o (3) <= 60

baseVel = (-. 5/60)*(o (3) -60);

nëse o (2)> =-70 && o (2) <0

r.setDriveVelocity (baseVel+(. 3/50)*abs (o (2)), baseVel-(. 3/50)*abs (o (2)));

elseif o (2) = 0

r.setDriveVelocity (baseVel-(. 3/50)*abs (o (2)), baseVel+(. 3/50)*abs (o (2)));

tjetër r.ndaloj

fund

%Lëvizje prapa

elseif o (3)> 100 && o (3) <150

r.setDriveVelocity (-. 2, -.2)

r.beep ();

r.beep ();

%roomba në pushim do të kërkojë Flamurin e Alienit të shënuar si fluoreshent

%e gjelbër Copë letre

tjeter

r.ndaloj

img = r.getImage (); %marrin imazh

pragu = gri (img (200: 383,,, 2))+. 1; %calc niveli i gjelbër

nëse pragu>.42

tweet = 'Armiku i ndotur !!'

të dhëna = strcat ('api_key =', API, '& status =', cicërimë);

përgjigje = shkruaj në internet (emri i hostit, të dhënat);

tjeter

r.ndaloj

fund

fund

fund

Hapi 4: Përfundimi

Mbani mend, ju mund të përdorni shkrimin që kemi shkruar më lart, por gjithmonë mund ta ndryshoni atë për t'iu përshtatur nevojave tuaja. Nuk ka pse të kontrollohet nga telefoni juaj! (Sidoqoftë, e bën atë më argëtues.) Zgjidhni cilën metodë preferoni të përdorni për të kontrolluar robotin tuaj. Ecni me robotin tuaj dhe kënaquni!

Recommended: