Orodha ya maudhui:

Msaidizi wa Mwanaanga Roomba: Hatua 4
Msaidizi wa Mwanaanga Roomba: Hatua 4

Video: Msaidizi wa Mwanaanga Roomba: Hatua 4

Video: Msaidizi wa Mwanaanga Roomba: Hatua 4
Video: A Family that flies together?😁 #NaivasKikapuKibonge 2024, Julai
Anonim
Mwanaanga-Kusaidia Roomba
Mwanaanga-Kusaidia Roomba

Mradi huu unafanywa kwa kutumia Raspberry Pi 3 kwenye bodi ya iRobot Tengeneza Toleo la 2. MATLAB hutumiwa kupanga roboti kufuata maagizo maalum kwa kutumia sensorer na kamera. Sensorer na kamera hutumiwa kutekeleza majukumu maalum ambayo yangefuata mwanaanga na kumpa uwezo wa kuwasiliana na kituo chake cha nyumbani ikiwa chochote kitaenda vibaya.

Hatua ya 1: Sehemu Zinazohitajika

Sehemu Zinazohitajika
Sehemu Zinazohitajika
Sehemu Zinazohitajika
Sehemu Zinazohitajika
Sehemu Zinazohitajika
Sehemu Zinazohitajika
Sehemu Zinazohitajika
Sehemu Zinazohitajika

1. iRobot Unda Toleo 2

Uundaji wa iRobot ni sehemu muhimu zaidi ya mradi huu kwani inaweza kusanidiwa na inaweza kuwa uwakilishi mzuri kwa rover halisi inayofuata waanga na kuwasaidia katika siku zijazo

2. Raspberry Pi 3

Raspberry Pi ilikuwa programu inayoweza kutumika kwa mradi huu. Nambari imeundwa kwa Pi na toleo la Pi iliyoambatanishwa ni 3 (mfano B). Bodi zingine zinazoweza kupangiliwa kama vile arduino zinatumika, hata hivyo, arduino na bodi zingine nyingi zitahitaji kuweka alama tofauti kuliko ilivyoelezwa katika hatua nyingine

3. Moduli ya Kamera ya Raspberry Pi

Uunganisho pekee wa nje na Raspberry Pi inayohitajika kwa mradi huu ni Moduli ya Kamera. Moduli ya kamera ni sehemu muhimu kwa mradi huu, kwani roomba itafanya kazi tu kulingana na inavyoona kwenye kamera

4. MATLAB 2018a

Toleo la pili la hivi karibuni la MATLAB, 2018a, lilitumika kwa usimbuaji uliohusika katika usanidi huu. Kuna uwezekano kwamba matoleo mengine mengi ya MATLAB yatafanya kazi na hii kwani programu ya roomba imekuwa karibu kwa muda

Hatua ya 2: Faili na Usanidi wa Kamera

Faili na Usanidi wa Kamera
Faili na Usanidi wa Kamera

1. Raspberry Pi na uhusiano wa Kamera na roomba

  • Pi inaweza kuungana na iRobot moja kwa moja na USB ndogo. Hiyo ndiyo yote inahitaji kuwa tayari kutumia. Walakini, inashauriwa iwekwe salama kwenye roomba kama vile inavyoonyeshwa kwenye picha wakati wote wa uwasilishaji hadi sasa.
  • Kamera ina unganisho la moja kwa moja na Raspberry Pi na inashauriwa sana kwamba kitu kinunuliwe au kifanywe ili kushikilia kamera moja kwa moja. Hakuna uhakika wa kweli kwa kamera ikiwa haiwezi kushikiliwa kuonyesha kile roomba inaona.

2. Faili

  • Baada ya kuweka kila kitu na kushikamana, hakikisha roboti imewekwa upya na iko tayari kwa kushikilia vifungo vya "Doa" na "Dock" kwa sekunde 10 pamoja.
  • Hapa ndipo MATLAB inahitajika kwanza. Faili za roomba zinahitaji kuwekwa kwanza na yote ambayo inahitajika kwa faili hizi ni kukimbia ni nambari iliyotolewa kwenye kiunga hiki:
  • https://ef.engr.utk.edu/ef230-2017-08//projects/ro…

Hatua ya 3: Upimaji wa Awali wa Roomba

Kuna hundi nyingi za awali zinazopaswa kufanywa kwenye roomba ili kuhakikisha inafanya kazi.

1. Hakikisha umeunganishwa na mtandao huo wa WiFi kama roomba. Bila hii, hautawahi kuungana kupitia MATLAB.

2. Tafuta roomba yako imepewa nambari gani ili uweze kuunganisha haswa kwenye roomba uliyochagua. Kwa mfano, ikiwa nambari yako ya roomba ni 30, ungeiunganisha kwa kuandika roomba (30) kwenye dirisha la amri katika MATLAB.

3. Roomba inaweza kudhibitiwa kupitia miundo katika MATLAB. Kwa mfano, ikiwa utaweka nambari yako ya roomba (30) kwa variable 'r', roboti inaweza kusogezwa mbele na amri r.moveDistance (0.2, 0.1).

Kuna amri nyingi tofauti ambazo zinaweza kufahamishwa kwa roomba na hizi zinaweza kuonekana kwa kuandika 'doc roomba' kwenye dirisha la amri.

5. Sensorer za usomaji mwepesi, mapema, na mwamba zinaweza kusomwa kwa kutumia amri zinazoonekana kwenye 'doc roomba' lakini njia ya kuwa na menyu safi na nadhifu ili kuona data ya sensa inaweza kuonekana kwa kutumia 'r.testSensorsors '.

6. Baada ya kujaribu yote haya, programu ya kukusanya picha ya roboti inaweza kutumika kusoma na kuona picha zilizopigwa. Nambari ya msingi ya hii itakuwa img = r.getImage na imshow (img);.

7. Thamani za RGB za picha zinaweza kupatikana na nambari red_mean = maana (maana (img (:,:, 1)));

green_mean = maana (maana (img (:,:, 2))); na bluu_maana = maana (maana (img (:,:, 3)));.

Hatua ya 4: Mfano Msimbo wa MATLAB

Mfano Msimbo wa MATLAB
Mfano Msimbo wa MATLAB

Kwa wakati huu, sasa uko tayari kutumia sensorer na programu ya kuchukua picha kuunda spin yako mwenyewe kwenye Mfano wa Msaada wa Binadamu wa Mars Rover. Mfano wetu ni kufuata mwanaanga kwa kufuatilia rangi nyeupe na kuelekea kwake. Roboti italia ikiwa sensorer zinasoma maadili ya hali ya juu ili mwanaanga aweze kuweka upya roboti ikiwa imekwama au kwenda kuichukua na kuiweka upya ikiwa imekwama kwenye mwamba. Walakini, inasoma tu makosa haya maadamu inaona nyeupe. Bila kuwa na uwezo wa kuona rangi nyeupe, roboti itaingia katika hali ya makosa. Imepangwa kutuma aina mbili tofauti za barua pepe kwenye msingi wa nyumba kulingana na kile inachokiona. Ikiwa itaona rangi ya ngozi ya mwanaanga, hiyo sio nzuri, kwa hivyo itaarifu msingi wa nyumbani ikiwa mwanaanga ana ngozi inayoonyesha na shida ya suti. Ujumbe mwingine umeandaliwa ikiwa mwanaanga atatoweka machoni. Ikiwa hakuna rangi nyeupe au ngozi inayoonyesha kamera, roboti itazunguka na kutuma barua pepe nyingine, lakini tofauti. Picha ambazo roomba haiwezi kuona mwanaanga zitatumwa pamoja na ujumbe katika barua pepe. Nambari ya mradi wetu imeonyeshwa hapa chini:

kwa i = 1:.1: 3 img = r.getImage; picha (img) red_mean = maana (maana (img (:,:, 1))); green_mean = maana (maana (img (:,:, 2))); blue_mean = maana (maana (img (:,:, 3))); ikiwa nyekundu_maanisha> 110 && red_mean 110 && blue_mean 110 && green_mean0 || | mapema.kushoto> 0 || mbele. 0 r.beep () r.beep () r.beep () r.stop elseif cliff.left <10 || mwamba kushoto. Mbele <10 || mwamba.kulia Mbele <10 || mwamba.kulia 700 || mwangaza kushoto mbele> 700 || mwanga.kushotoCenter> 700 || mwanga. HaliCenter> 700 || Nuru mbele kulia> 700 || light.right> 700 r.beep () r.beep () r.beep () r.beep () r.beep () r. simama nyingine kwa i = 1: 2 r.soveDistance (0.2, 0.1) r. setDriveVelocity (.3,.2) r.st end end end if green_mean <35 && blue_mean <35% rangi ya ngozi inayoonyesha (inahitaji kurekebishwa kulingana na rangi ya ngozi ya mwanaanga) r.beep (); r.beep (); r.beep (); barua = '[email protected]'; % hutuma barua pepe kuonyesha suti imezimwa psswd = 'ndio'; mwenyeji = 'smtp.gmail.com'; bandari = '465'; emailto = '[email protected]'; m_subject = 'mada'; m_text = 'mtihani'; setpref ('Mtandao', 'E_mail', barua); setpref ('Mtandao', 'SMTP_Server', mwenyeji); setpref ('Mtandao', 'SMTP_Username', barua); setpref ('Mtandao', 'SMTP_Password', psswd); props = java.lang. System.getProperties; prop.setProperty ('mail.smtp.user', barua); prop.setProperty ('mail.smtp.host', mwenyeji); prop.setProperty ('mail.smtp.port', bandari); prop.setProperty ('mail.smtp.starttls.enable', 'kweli'); props.setProperty ('mail.smtp.debug', 'kweli'); props.setProperty ('mail.smtp.auth', 'kweli'); prop.setProperty ('mail.smtp.socketFactory.port', bandari); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'uongo'); sendmail (emailto, 'Msaada!', 'sare ya wanaanga imezimwa!', img); mwisho ikiwa nyekundu_maana 135 || kijani_maana 135 || blue_mean 135 for j = 1: 2% ikiwa nyeupe haiwezi kupatikana na robot r.turnAngle (360) mail = '[email protected]'; psswd = 'ndio'; mwenyeji = 'smtp.gmail.com'; bandari = '465'; emailto = '[email protected]'; m_subject = 'mada'; m_text = 'mtihani'; setpref ('Mtandao', 'E_mail', barua); setpref ('Mtandao', 'SMTP_Server', mwenyeji); setpref ('Mtandao', 'SMTP_Username', barua); setpref ('Mtandao', 'SMTP_Password', psswd); props = java.lang. System.getProperties; prop.setProperty ('mail.smtp.user', barua); prop.setProperty ('mail.smtp.host', mwenyeji); prop.setProperty ('mail.smtp.port', bandari); prop.setProperty ('mail.smtp.starttls.enable', 'kweli'); props.setProperty ('mail.smtp.debug', 'kweli'); props.setProperty ('mail.smtp.auth', 'kweli'); prop.setProperty ('mail.smtp.socketFactory.port', bandari); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'uongo'); sendmail (emailto, 'Msaada!', 'Mwanaanga hawezi kupatikana!', img); r.acha mwisho mwisho mwisho

Kwa wazi ni fujo hapa, lakini inapaswa kung'oka mara tu ikinakiliwa. Nywila na barua pepe kwa hili zinapaswa kutolewa na wale wanaofanya mradi huu wazi.

Walakini, mfano wetu ni moja tu ya njia nyingi za kuzunguka na roboti hii kuifanya iwe sawa na kila mtu. Kuna mambo mengi tofauti ya kufanywa, ambayo unaweza kujitoshea kwako.

Ilipendekeza: