Talaan ng mga Nilalaman:
- Hakbang 1: Mga Materyales at Kagamitan:
- Hakbang 2:
- Hakbang 3: Pagtitipon ng Iyong "Hardin"
- Hakbang 4: Pagsulat ng Code
- Hakbang 5: Kopyahin ang Code
Video: Garden Helper Roomba Bot: 8 Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:14
Kiara Myers, Ahmad Alghadeer, at Madison Tippet
Layunin:
Ang magtuturo na ito ay magtuturo sa iyo kung paano magprogram ng isang Roomba Bot, gamit ang MATLAB, upang mag-navigate sa isang hardin, na mahahanap ang mga pabilog na hugis na prutas / gulay na hinog na sapat upang makuha batay sa kanilang laki. Nagpapadala sa iyo ang robot na ito ng isang email, binabalaan ka kung gaano karaming mga prutas ang handa na pumili at ang landas kung saan ito naglakbay.
Mga Tampok:
- Gumagamit ng mga light sensor upang makita ang mga pader at bahagyang lumiko upang maiwasan ang pagpindot sa mga ito
- Gumagamit ng mga sensor ng bunggo upang masira ang programa kapag tumama ito sa bato sa dulo ng hardin
- Gumagamit ng pagproseso ng imahe upang makita ang isang bilog sa hardin at pagkatapos ay matukoy ang radius nito
- Gumagamit ng mga cliff sensor upang makakita ng isang kulay na tape na nagsasaad ng pagkakaroon ng isang prutas
Hakbang 1: Mga Materyales at Kagamitan:
- Isang Laptop
- MATLAB 2017
- Roomba Vaccum Cleaner
- Raspberry Pi
- Mga Bloke ng Kahoy
- Puting papel
- Itim na Papel
- May kulay na tape / manipis na guhit ng may kulay na papel
- Malaking Bato
Hakbang 2:
Hakbang 3: Pagtitipon ng Iyong "Hardin"
- Kunin ang iyong itim na papel at gupitin ang mga bilog ng iba't ibang laki
-
I-tape ang mga itim na bilog sa isang malaking puting papel
Kakailanganin ang kaibahan na ito kapag nakakita ng isang prutas
-
Gamitin ang iyong mga woodblocks upang makabuo ng mala-hardin na landas sa hardin para makapag-navigate ang iyong robot
Pumili kami ng isang hugis-U na landas tulad ng nakalarawan sa itaas
- Sa dulo ng iyong hardin magdagdag ng isang bato o pintuan o ibang bagay para malaman ng iyong robot na tapos na ito
-
I-tape ang iyong puting papel na may bilog papunta sa mga dingding ng hardin
Gumamit kami ng mga balde upang i-tape ito dahil ang aming mga dingding ay masyadong maikli para sa camera
- Ilagay ang may kulay na tape / manipis na guhit ng kulay na papel sa lupa sa harap ng prutas
Hakbang 4: Pagsulat ng Code
Pagna-navigate sa Hardin
Paggamit ng Mga Bump Sensor: Upang patakbuhin ang programa, inilalagay namin ang pag-coding sa isang habang pahayag na umikot sa iba't ibang kung mga pahayag hanggang sa masira ang code. Kung ang alinman sa mga bumper ay na-hit, magreresulta ito sa kanilang halaga na katumbas ng totoo (na sa Boolean ay isang halaga ng 1). Ginagamit ang isang if statement upang masira ang code kapag ang isa sa kanilang mga halaga ay katumbas ng 1.
Paggamit ng Mga Cliff Sensor: Sa loob ng pahayag na pansamantala, gumagamit kami ng isang pahayag kung sasabihin sa Roomba pagdating sa lokasyon ng isang halaman. Nakita ng Roomba ang may kulay na tape sa sahig sa pamamagitan ng pagsusuri sa threshold ng pula na kukunin ng mga sensor ng bangin. Kung ang kaliwa o kanang cliff sensor ay nakakita ng isang kulay na may mas malaking threshold kaysa sa lupa, ititigil nito ang robot sa loob ng 2 segundo (gamit ang pause command). Sa loob ng 2 segundo na ito, kukuha at magpapakita ang Roomba ng isang imahe ng prutas. Gamit ang mga imfindcircle na built in na utos, magtakda ng isang saklaw para sa radii ng iyong mga lupon, at mahahanap ng iyong Roomba ang iyong tinaguriang prutas.
Paggamit ng Pagproseso ng Imahe: Sa loob ng pahayag kung, maglalagay kami ng isa pa kung pahayag na nagsasabing: kung nakita ang radius, ang radii3, ay mas malaki kaysa o katumbas ng aming minimum na kinakailangan ng isang hinog na prutas, r1 (magpasya ka dito), pagkatapos ay bilangin at ipakita sa ang Roomba kung gaano karaming mga prutas ang handa at lumiko upang magpatuloy sa hardin. Kung hindi, ang pagliko upang magpatuloy sa hardin. Tandaan: maaaring kailanganin mong ayusin ang anggulo na iyong babaling sapagkat ang bawat Roomba ay magkakaiba
Paggamit ng Light Bumpers: Sa isa pang pahayag, ang mga light bumper ay sinusuri upang matiyak na wala sa kanila ang magiging mas malaki kaysa sa aming tinukoy na threshold. Kung alinman sa kaliwa, kanan, kaliwang gitna, kanang gitna, kaliwang harap, o kanang front light bumper ay napupunta sa itaas ng threshold, pagkatapos ang Roomba ay bahagyang lumiliko sa naaangkop na anggulo upang maiwasan ang pagpindot sa isang pader. Samakatuwid, pag-navigate sa maze.
Ang natitirang code ay ginagamit upang magbalak ng landas na tinahak ng Roomba at pagkatapos ay ipadala ang mga resulta sa iyong email
Hakbang 5: Kopyahin ang Code
% Layunin: Batay sa kanilang laki ang roomba ay dumaan sa isang hardin at makikilala ang mga gulay / prutas na handa nang kunin. % Input: Lightbump sensors, Cliff sensors, Bump sensors, imahe mula sa camera% Mga Output: Sa tuwing ang mga light sensor ay mas malaki kaysa sa threshold ang roomba ay liliko at kukuha ng isang imahe, beep kung ang radius ng% gulay / prutas ay nasa pagitan ng isang tukoy na saklaw. Masisira ang code kapag ang roomba ay nabunggo sa% isang bagay, nagpapadala sa astronaut ng isang email tungkol sa kung gaano karaming mga prutas ang handa nang makuha at isang pagmamapa ng paggalaw ng roomba. % Paggamit: Kung at habang ang mga pahayag, paglalagay ng mga utos, email code mula sa MATLAB
k = 0
tic
timerVal = tic
habang totoo
v =.2; % tulin r.setDriveVelocity (v, v);% roomba magpatuloy L = r.getLightBumpers; LC = L.leftCenter; Rr = L. tama; Lf = L. kaliwa; RC = L. RightCenter; LF = L.leftFront; RF = L. RightFront; Q = 75; % threshold. RTH = 30; % Mataas na pulang threshold RTL = 10; % Mababang pulang threshold B = r.getBumpers S = r.getCliffSensors; r1 = 24; r3 = 10; PL1 = 1800; kung S.leftFront> PL1 || S. RightFront> Nakita ng PL1% kung ang kulay sa lupa ay nasa itaas ng threshold r.stop pause (2) elapsedTime = toc (timerVal-2) tic timerVal = tic% pause for 2 segundo img = r.getImage; % kumuha ng imshow ng imahe (img)% display image [center3, radii3] = imfindcircles (img, [30 50], 'ObjectPolarity', 'dark', 'Sensitivity', 0.9); h = viscircles (center3, radii3); % hanapin ang mga bilog ng radii w / sa tinukoy na saklaw ng imahe kung radii3> = r1 T = 1 k = k + 1 dist1 = 0.2. * lumipasTime% Kung nakita ang radius ay mas malaki kaysa o katumbas ng minimum na% na kinakailangan ng isang hinog na prutas, pagkatapos ay binibilang ng Roomba ang prutas na ito kung hindi radii3 <= r3 T = 0 pa T = 0 dist2 = 0.2. * elapsedTime% Kung hindi, kung gayon hindi ito bibilangin ang bunga ng bunga
kung T == 1 r.setLEDDigits (num2str (k)) r.beep r.beep r.beep r.turnAngle (78)% Kung ang isang prutas ay napansin, pagkatapos ay ipakita ang numero sa Roomba,% gumawa ng isang ingay, at i-on kung hindi T == 2 r.turnAngle (78)% Kung ang 2 prutas ay nakita, pagkatapos ay i-on upang magpatuloy sa pamamagitan ng% hardin pa r.turnAngle (78)% Kung walang mga prutas na napansin, pagkatapos ay i-on upang magpatuloy sa% dulo ng hardin kung LC> Q r.stop r.turnAngle (-7) kung iba pa RC> Q r.stop r.turnAngle (7) kung hindi LF> Q r.stop r.turnAngle (-7) kung hindi RF> Q r.stop r. turnAngle (7) ifif Lf> Q r.stop r.turnAngle (-7) elseif Rr> Q r.stop r.turnAngle (7) end% Kung ang alinman sa mga halaga ng light bumpers ay napupunta sa itaas ng threshold, pagkatapos% ang Roomba bahagyang liliko sa naaangkop na direksyon upang maiwasan ang% pagpindot sa isang pader
kung B. tama == 1 || B.kaliwang == 1 || B.front == 1 dist3 = 0.2. * ElapsedTime r.stop r.beep ('F # * 2, F # * 2, c, F # * 2, F # * 2') r.turnAngle (360)% Kung alinman sa Ang mga bumber ay na-hit, pagkatapos ay tumugtog ang roomba ng tunog, umiikot,% at binabasag ang code
break end
tapusin ang pagkalat (0.533, 0, '^') hawakan ang pagkalat (0.533, dist1, '<') hawakan ang pagkalat (-dist2, dist1, 'v') hawakan ang mga pagsabog (-dist2, 0, 'd') saveas (gcf, 'Kilusan.png')
kmsg = num2str (k) mail = '[email protected]' password = 'Srsora123 #' host = 'smtp.gmail.com' port = '465'
setpref ('Internet', 'E_mail', mail); setpref ('Internet', 'SMTP_Server', host) props = java.lang. System.getProperties; 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', 'totoo'); props.setProperty ('mail.smtp.auth', 'totoo'); 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 (mail, 'Hello Astronaut! Maraming mga prutas na ito sa hardin', kmsg, {'movement.png'})
Inirerekumendang:
Ang Werewolves ng Miller's Hollow (狼人 殺) Circuit Helper: 4 na Hakbang
Ang Werewolves ng Miller's Hollow (狼人 殺) Circuit Helper: Ang proyektong ito ay ginawa para sa mga taong gustong maglaro ng The Werewolves of Miller's Hollow, at ang kahon na ito ay ginagamit upang maglaro kasama ang 8 katao, na may tatlong werewolves, dalawang nayon, at tatlong espesyal na tungkulin (Tagakita, Witch, at Hunter). Ang kahon na ito ay ginawa upang mapalitan ang
Breadboard Wire Helper: 10 Hakbang (na may Mga Larawan)
Breadboard Wire Helper: Ipinapakita ng mga tagubilin na ito kung paano bumuo ng isang tool upang matulungan na gawing mas madali at mas madali ang prototyping ng breadboard. Tinawag ko itong Breadboard Wire Helper
Ultimate Electronics Helper -- Variable Bench Top PSU Sa Mga Makatutulong: 12 Hakbang (na may Mga Larawan)
Ultimate Electronics Helper || Variable Bench Top PSU With Helping Hands: Kapag nagtatrabaho sa electronics ang dalawang mga tool ay halos palaging kinakailangan. Ngayon ay malilikha namin ang dalawang mahahalagang bagay na ito. At gagawin din namin ito ng isang hakbang pa at pagsasama-sama ang dalawang ito sa panghuli na tumutulong sa electronics! Siyempre nakikipag-usap ako
Shrimping Helper: 6 na Hakbang
Shrimping Helper: Ang shrimping, na kilala rin bilang 釣 蝦 sa Chinese, ay isa sa pinakatangi at tanyag na libangan para sa Taiwanese. Maraming mga Taiwanese ang pumupunta sa pag-hipon tuwing katapusan ng linggo. Mula sa kasiyahan sa pakikipaglaban sa mga hipon at pagkain ng mga hipon, ang hipon ay tiyak na isa sa mga bes
Mountainbike Helper para sa Mga Pasyente sa Hemiplegia: 4 na Hakbang
Mountainbike Helper para sa Mga Pasyente sa Hemiplegia: Ang mga pasyente na Hemiplegia ay mga taong nagdurusa mula sa isang kanan o kaliwang panig (bahagyang) pagkalumpo, na nagdudulot sa kanila ng kaunting lakas at mahigpit na pagkakahawak. Para sa mga taong ito, mahirap talagang magbisikleta, dahil nahihirapan silang kumapit sa manibela,