Orodha ya maudhui:

Msaidizi wa Bustani Roomba Bot: Hatua 8
Msaidizi wa Bustani Roomba Bot: Hatua 8

Video: Msaidizi wa Bustani Roomba Bot: Hatua 8

Video: Msaidizi wa Bustani Roomba Bot: Hatua 8
Video: Я вернул его домой. Немецкая овчарка по имени Дом 2024, Novemba
Anonim
Msaidizi wa Bustani Roomba Bot
Msaidizi wa Bustani Roomba Bot

Kiara Myers, Ahmad Alghadeer, na Madison Tippet

Kusudi:

Mafundisho haya yatakufundisha jinsi ya kupanga Bomba la Roomba, ukitumia MATLAB, kupitia bustani, kugundua matunda / mboga zenye umbo la duara ambazo zimeiva vya kutosha kuchukuwa kulingana na saizi yao. Roboti hii pia hukutumia barua pepe, ikikuarifu ni matunda ngapi ambayo yako tayari kuchukuliwa na njia ambayo ilisafiri.

vipengele:

  • Inatumia sensorer nyepesi kugundua kuta na kugeuka kidogo ili kuepusha kuzigonga
  • Inatumia sensorer mapema ili kuvunja programu wakati inagonga mwamba mwishoni mwa bustani
  • Inatumia usindikaji wa picha ili kugundua mduara kwenye bustani kisha uamue eneo lake
  • Inatumia sensorer za mwamba kugundua mkanda wa rangi ambao unaonyesha uwepo wa tunda

Hatua ya 1: Vifaa na Ugavi:

  • Laptop Moja
  • MATLAB 2017
  • Roomba Vaccum
  • Pi ya Raspberry
  • Vitalu vya Mbao
  • Karatasi Nyeupe
  • Karatasi Nyeusi
  • Mkanda wa rangi / ukanda mwembamba wa karatasi ya rangi
  • Mwamba Mkubwa

Hatua ya 2:

Hatua ya 3: Kukusanya "Bustani" yako

Kukusanya yako
Kukusanya yako
  1. Chukua karatasi yako nyeusi na ukate miduara ya saizi anuwai
  2. Piga miduara hii nyeusi kwenye karatasi kubwa nyeupe

    Tofauti hii itakuwa muhimu wakati wa kugundua matunda

  3. Tumia vizuizi vyako vya kuni kujenga njia kama bustani ya maze kwa roboti yako kusafiri

    Tulichagua njia iliyo na umbo la U kama ilivyoonyeshwa hapo juu

  4. Mwisho wa bustani yako ongeza mwamba au mlango au kitu kingine kwa roboti yako kujua imefanywa
  5. Piga karatasi yako nyeupe na mduara kwenye kuta za bustani

    Tulitumia ndoo kuirekodi kwa sababu kuta zetu zilikuwa fupi sana kwa kamera

  6. Weka mkanda wa rangi / ukanda mwembamba wa karatasi ya rangi chini mbele ya tunda

Hatua ya 4: Kuandika Nambari

Kuabiri Bustani

Kutumia Sensorer za Bump: Ili kuendesha programu, tunaweka usimbuaji kwa taarifa ya muda ambayo hupitia anuwai ikiwa ni taarifa hadi nambari itavunjwa. Ikiwa bumpers yoyote itapigwa, itasababisha thamani yao kuwa sawa na kweli (ambayo kwa Boolean ni thamani ya 1). Kauli ikiwa inatumika kuvunja nambari wakati moja ya maadili yao ni sawa na 1.

Kutumia Sensorer za Cliff: Ndani ya taarifa hiyo wakati, tunatumia taarifa ya kuwaambia Roomba ikiwa imefika kwenye eneo la mmea. Roomba hugundua mkanda wa rangi sakafuni kwa kuchunguza kizingiti cha nyekundu ambacho sensorer za mwamba huchukua. Ikiwa sensorer ya mwamba wa kushoto au kulia itagundua rangi iliyo na kizingiti kikubwa kuliko ile ya ardhi, basi itasimamisha roboti kwa sekunde 2 (kwa kutumia amri ya pumziko). Katika sekunde hizi 2, Roomba itachukua na kuonyesha picha ya matunda. Kutumia imfindcircles zilizojengwa kwa amri, weka masafa ya radii za miduara yako, na Roomba yako itapata matunda yako yanayoitwa.

Kutumia Usindikaji wa Picha: Ndani ya taarifa hiyo, tuliweka nyingine ikiwa taarifa ambayo inasema: ikiwa eneo limegunduliwa, radii3, ni kubwa kuliko au sawa na mahitaji yetu ya chini ya tunda lililoiva, r1 (unaamua hii), kisha hesabu na uonyeshe Roomba ni matunda ngapi tayari na kugeuka kuendelea kupitia bustani. Ikiwa sivyo, zamu ya kuendelea kupitia bustani. Kumbuka: unaweza kuhitaji kurekebisha pembe unayogeuka kwa sababu kila Roomba ni tofauti

Kutumia Bumpers za Mwanga Ikiwa upande wa kushoto, kulia, kushoto, katikati kulia, mbele kushoto, au mbele taa ya kulia inapita juu ya kizingiti, basi Roomba itageuka kidogo katika pembe inayofaa ili kuepuka kupiga ukuta. Kwa hivyo, kuabiri maze.

Nambari iliyobaki hutumiwa kupanga njia iliyochukuliwa na Roomba na kisha tuma matokeo kwenye barua pepe yako

Hatua ya 5: Nakili Nambari

Kusudi: Kulingana na saizi yao roomba itapita kwenye bustani na kutofautisha mboga / matunda ambayo yako tayari kuchukuliwa. Pembejeo Nambari hiyo huvunjika wakati roomba inagonga% kitu, inamtuma mwanaanga barua pepe juu ya matunda ngapi yapo tayari kuchukuliwa na ramani ya harakati ya roomba. Matumizi: Ikiwa na wakati taarifa, kupanga amri, nambari ya barua pepe kutoka MATLAB

k = 0

tic

timerVal = tic

wakati ni kweli

v =.2; % kasi r.setDriveVelocity (v, v);% roomba kwenda mbele L = r.getLightBumpers; LC = L. Kituo cha kushoto; Rr = L. sawa; Lf = L. kushoto; RC = L. Kituo cha kulia; LF = L. kushotoFront; RF = L. kulia Mbele; Swali = 75; % kizingiti. RTH = 30; Kizingiti cha juu nyekundu RTL = 10; Kizingiti cha chini nyekundu B = r.getBumpers S = r.getCliffSensors; r1 = 24; r3 = 10; PL1 = 1800; ikiwa S. kushotoFront> PL1 || S.rightFront> PL1% hugundua ikiwa rangi ardhini iko juu ya kizingiti r.stop pause (2) ilipitaTime = toc (timerVal-2) tic timerVal = tic% pause kwa sekunde 2 img = r.getImage; % chukua picha imshow (img)% onyesha picha [vituo3, radii3] = imfindcircles (img, [30 50], 'ObjectPolarity', 'dark', 'Sensitivity', 0.9); h = mizunguko (vituo3, radii3); % tafuta miduara ya radii w / katika anuwai katika picha ikiwa radii3> = r1 T = 1 k = k + 1 dist1 = 0.2. * ilipitaTime% Ikiwa radius imegunduliwa ni kubwa kuliko au sawa na mahitaji ya chini ya% ya matunda yaliyoiva, basi Roomba huhesabu tunda hili lingine ikiwa radii3 <= r3 T = 0 mwingine T = 0 dist2 = 0.2.

ikiwa T == 1 r.setLEDDigits (num2str (k)) r.beep r.beep r.beep r.turnAngle (78)% Ikiwa matunda yaligunduliwa, kisha onyesha nambari kwenye Roomba,% piga kelele, na ugeuke kingine ikiwa T == 2 r.turnAngle (78)% Ikiwa matunda 2 hugunduliwa, basi geuka kuendelea kupitia bustani% nyingine r.turnAngle (78)% Ikiwa hakuna matunda yaliyopatikana, basi geuka kuendelea hadi mwisho wa% bustani ikiwa LC> Q r. simama r. kugeuzaAngle (-7) kingine ikiwa RC> Q r. simama r.turnAngle (7) mwingine ikiwa LF> Q r. simama r. kugeukaAngle (-7) kingine ikiwa RF> Q r. simama r. turnAngle (7) elseif Lf> Q r. stop r.turnAngle (-7) elseif Rr> Q r.stop r.turnAngle (7) end% Ikiwa maadili yoyote ya taa nyepesi huenda juu ya kizingiti, basi% Roomba itageuka kidogo katika mwelekeo unaofaa ili kuepuka% kugonga ukuta

ikiwa B. sawa == 1 || B. kushoto == 1 || B. mbele == 1 dist3 = 0.2. * Muda uliopita r.stop r.beep ('F # * 2, F # * 2, c, F # * 2, F # * 2') r. TurnAngle (360)% Ikiwa kuna moja ya bumbers hupigwa, kisha roomba hucheza sauti, huzunguka,% na huvunja nambari

mwisho wa kuvunja

mwisho kutawanya (0.533, 0, '^') shikilia kutawanya (0.533, dist1, '<') shikilia kutawanya (-dist2, dist1, 'v') shikilia kutawanya (-ist2, 0, 'd') saga (gcf, 'Harakati.png')

kmsg = num2str (k) barua = '[email protected]' password = 'Srsora123 #' host = 'smtp.gmail.com' port = '465'

setpref ('Mtandao', 'E_mail', barua); setpref ('mtandao', 'SMTP_Server', mwenyeji) props = java.lang. System.getProperties; prop.setProperty ('mail.smtp.user', barua); prop.setProperty ('mail.smtp.host', mwenyeji); prop.setProperty ('mail.smtp.port', bandari); props.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 (barua, 'Hello Astronaut! Kuna matunda haya mengi kwenye bustani', kmsg, {'movement.png'})

Ilipendekeza: