Përmbajtje:

Roomba që ndihmon Astronautët: 4 hapa
Roomba që ndihmon Astronautët: 4 hapa

Video: Roomba që ndihmon Astronautët: 4 hapa

Video: Roomba që ndihmon Astronautët: 4 hapa
Video: Я вернул его домой. Немецкая овчарка по имени Дом 2024, Korrik
Anonim
Roomba që ndihmon Astronautët
Roomba që ndihmon Astronautët

Ky projekt është bërë duke përdorur Raspberry Pi 3 në bordin e iRobot Krijo Version 2. MATLAB përdoret për të programuar robotin të ndjekë udhëzimet specifike duke përdorur sensorët dhe kamerën e tij. Sensorët dhe kamerat përdoren për të kryer detyra specifike që do të ndiqnin një astronaut dhe do t'i siguronin atij/asaj aftësinë për të komunikuar me bazën e tij/saj të shtëpisë nëse diçka shkon keq.

Hapi 1: Pjesët e nevojshme

Pjesët e nevojshme
Pjesët e nevojshme
Pjesët e nevojshme
Pjesët e nevojshme
Pjesët e nevojshme
Pjesët e nevojshme
Pjesët e nevojshme
Pjesët e nevojshme

1. iRobot Krijo Version 2

Krijimi iRobot është pjesa më thelbësore e këtij projekti pasi është i programueshëm dhe mund të jetë një përfaqësim i shkëlqyeshëm për një rover aktual që ndjek astronautët dhe i ndihmon ata në të ardhmen

2. Mjedër Pi 3

Raspberry Pi ishte programueshëm i përdorur për këtë projekt. Kodi është krijuar për Pi dhe versioni i Pi i bashkangjitur është 3 (modeli B). Tabela të tjera të programueshme si arduino janë të përdorshme, megjithatë, arduino dhe shumica e tabelave të tjera do të kërkojnë kodim të ndryshëm nga sa përshkruhet në një hap tjetër

3. Moduli Kamera Raspberry Pi

E vetmja lidhje e jashtme me Raspberry Pi e nevojshme për këtë projekt është Moduli i Kameras. Moduli i kamerës është pjesa përbërëse e këtij projekti, pasi roomba do të kryejë detyra vetëm bazuar në atë që sheh në kamerë

4. MATLAB 2018a

Versioni i dytë më i fundit i MATLAB, 2018a, u përdor për kodimin e përfshirë në këtë konfigurim. Ka të ngjarë që shumë versione të tjera të MATLAB do të punojnë me këtë pasi programimi i roomba ka qenë për ca kohë

Hapi 2: Skedarët dhe konfigurimi i kamerës

Skedarët dhe konfigurimi i kamerës
Skedarët dhe konfigurimi i kamerës

1. Raspberry Pi dhe lidhjet e kamerës me dhomën

  • Pi mund të lidhet me iRobot direkt me një mikro USB. Kjo është gjithçka që duhet të jetë gati për t'u përdorur. Sidoqoftë, rekomandohet që të vendoset në mënyrë të sigurt në dhomën e dhomës siç tregohet në fotografi gjatë prezantimit të deritanishëm.
  • Kamera ka një lidhje të drejtpërdrejtë me Raspberry Pi dhe rekomandohet shumë që diçka të blihet ose të bëhet në mënyrë që ta mbajë kamerën drejtpërdrejt lart. Nuk ka asnjë pikë të vërtetë për kamerën nëse nuk mund të mbahet në vend për të treguar atë që sheh roomba.

2. Dosjet

  • Pasi të keni konfiguruar dhe lidhur gjithçka, sigurohuni që roboti të rivendoset dhe të jetë gati për të shkuar duke mbajtur butonat "Spot" dhe "Dock" për 10 sekonda së bashku.
  • Këtu nevojitet për herë të parë MATLAB. Skedarët për roomba duhet të instalohen së pari dhe gjithçka që nevojitet për këto skedarë është të ekzekutohen është kodi i dhënë në këtë lidhje:
  • https://ef.engr.utk.edu/ef230-2017-08//projects/ro…

Hapi 3: Testimi fillestar i Roomba

Ka shumë kontrolle fillestare që duhen kryer në roomba për t'u siguruar që po funksionon.

1. Sigurohuni që jeni lidhur me të njëjtin rrjet WiFi si roomba. Pa këtë, nuk do të lidheni kurrë përmes MATLAB.

2. Gjeni se cilit numër i është caktuar roomba -ja juaj në mënyrë që të lidheni në mënyrë specifike me dhomën që keni zgjedhur. Për shembull, nëse numri i dhomës suaj është 30, ju do të lidheni me të duke shtypur dhomën (30) në dritaren e komandës në MATLAB.

3. Roomba mund të kontrollohet përmes strukturave në MATLAB. Për shembull, nëse vendosni kodin tuaj për roomba (30) në ndryshoren 'r', roboti mund të lëvizet përpara me komandën r.moveDistance (0.2, 0.1).

4. Ka shumë komanda të ndryshme që mund t'i komunikohen roomba dhe këto mund të shihen duke shtypur 'doc roomba' në dritaren e komandës.

5. Sensorët për leximin e dritës, përplasjes dhe shkëmbinjve mund të lexohen të gjithë duke përdorur komandat e shikuara në 'doc roomba', por një mënyrë për të pasur një meny të qëndrueshme dhe të pastër për të parë të dhënat e sensorit mund të shihet duke përdorur 'r.testSensors '.

6. Pas testimit të gjithë kësaj, softueri për mbledhjen e imazheve të robotit mund të përdoret për të lexuar dhe parë fotografitë e marra. Kodi bazë për këtë do të ishte img = r.getImage dhe imshow (img); Me

7. Vlerat RGB të figurës mund të gjenden me kodet red_mean = mean (mean (mean (img (:,,, 1))));

gjelbër_kuptimi = mesatarja (mesatarja (img (:,,, 2)))); dhe blu_mean = mesatarja (mesatarja (img (:,,, 3))); Me

Hapi 4: Shembull Kodi MATLAB

Shembull Kodi MATLAB
Shembull Kodi MATLAB

Në këtë pikë, ju tani jeni gati të përdorni sensorët dhe softuerin për marrjen e imazheve për të krijuar rrotullimin tuaj në një Prototip Mars Rover që Ndihmon Njerëzit. Shembulli ynë është të ndjekim astronautin duke përcjellë ngjyrën e bardhë dhe të lëvizim drejt saj. Roboti do të bjerë nëse sensorët e tij lexojnë vlera të larta në mënyrë që astronauti të mund ta rivendosë robotin nëse është i mbërthyer, ose të shkojë ta marrë dhe ta rivendosë nëse është i mbërthyer në një shkëmb. Sidoqoftë, ai lexon vetëm këto gabime për sa kohë që sheh të bardhë. Pa qenë në gjendje të shohë ngjyrën e bardhë, roboti do të hyjë në modalitetin e gabimit. Shtë programuar të dërgojë dy lloje të ndryshme të e -mail në bazën e shtëpisë në varësi të asaj që sheh. Nëse sheh ngjyrën e lëkurës së astronautit, kjo padyshim që nuk është e mirë, kështu që do të paralajmërojë bazën e shtëpisë nëse astronauti ka lëkurë që shfaqet me mosfunksionim të kostumit. Mesazhi tjetër përgatitet nëse astronauti thjesht zhduket nga sytë. Nëse nuk shfaqet ngjyra e bardhë ose e lëkurës për kamerat, roboti do të rrotullohet dhe do të dërgojë një email tjetër, por të ndryshëm. Imazhet ku roomba nuk mund ta shohë astronautin do të dërgohen së bashku me mesazhin në email. Kodi për projektin tonë është treguar më poshtë:

për i = 1:.1: 3 img = r.getImage; imazh (img) red_mean = mesatarja (mesatarja (img (:,:, 1))); gjelbër_kuptimi = mesatarja (mesatarja (img (:,,, 2)))); blu_kuptimi = mesatarja (mesatarja (img (:,,, 3))); nëse red_mean> 110 && red_mean 110 && blue_mean 110 && green_mean0 || përplasem.majtas> 0 || përplasem.front> 0 r.beep () r.beep () r.beep () r.ndalo shkëmbin tjetërif.majtas <10 || shkëmb.majtas Përpara <10 || shkemb.djathtasPara <10 || shkemb.drejt700 || drita.majtasPara> 700 || drita.leftCenter> 700 || light.rightCenter> 700 || drita.djathtas Përpara> 700 || dritë.djathtas> 700 r.zhurmë () r.beep () r.beep () r.beep () r.beep () r.ndalo tjetër për i = 1: 2 r.moveDistanca (0.2, 0.1) r setDriveVelocity (.3,.2) r.ndaloni fundin në fund nëse green_mean <35 && blue_mean <35 %tregon ngjyrën e lëkurës (duhet të rregullohet bazuar në ngjyrën e lëkurës së astronautit) r.beep (); r.beep (); r.beep (); mail = '[email protected]'; %dërgon email duke treguar se kostumi është joaktiv psswd = 'po'; host = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_subject = 'subjekt'; m_text = 'test'; setpref ('Internet', 'E_mail', postë); setpref ('Internet', 'SMTP_Server', host); setpref ('Internet', 'SMTP_Username', postë); setpref ('Internet', 'SMTP_Password', psswd); props = java.lang. System.getProposies; props.setProperty ('mail.smtp.user', mail); props.setProperty ('mail.smtp.host', host); props.setProperty ('mail.smtp.port', port); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'true'); props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.port', port); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (emailto, 'Help!', 'Uniforma e astronautëve është fikur!', img); përfundoj nëse red_mean 135 || gjelbër_kuptimi 135 || blue_mean 135 për j = 1: 2 %nëse e bardha nuk mund të gjendet nga roboti r.turnAngle (360) mail = '[email protected]'; psswd = 'po'; host = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_subject = 'subjekt'; m_text = 'test'; setpref ('Internet', 'E_mail', postë); setpref ('Internet', 'SMTP_Server', host); setpref ('Internet', 'SMTP_Username', postë); setpref ('Internet', 'SMTP_Password', psswd); props = java.lang. System.getProposies; props.setProperty ('mail.smtp.user', mail); props.setProperty ('mail.smtp.host', host); props.setProperty ('mail.smtp.port', port); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'true'); props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.port', port); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (emailto, 'Help!', 'Astronauti nuk mund të gjendet!', img); r.ndaloj fund fund fund

Natyrisht që është e çrregullt këtu, por duhet të fshihet pasi të kopjohet. Fjalëkalimet dhe emailet për këtë duhet të sigurohen nga ata që e bëjnë këtë projekt padyshim.

Sidoqoftë, shembulli ynë është vetëm një nga shumë mënyra për të ngatërruar këtë robot për ta bërë atë të përshtatshëm për të gjithë. Ka shumë gjëra të ndryshme për të bërë, të cilat mund t’i përshtatni vetes.

Recommended: