Sisällysluettelo:

Garden Helper Roomba Bot: 8 vaihetta
Garden Helper Roomba Bot: 8 vaihetta

Video: Garden Helper Roomba Bot: 8 vaihetta

Video: Garden Helper Roomba Bot: 8 vaihetta
Video: RoboVac Party#8: Roomba, Samsung, Neato, LG, Rowenta | PILE of confetti Vol.3 🥳🎊🎊🎊 2024, Marraskuu
Anonim
Puutarhanhoitaja Roomba Bot
Puutarhanhoitaja Roomba Bot

Kiara Myers, Ahmad Alghadeer ja Madison Tippet

Tarkoitus:

Tämä ohje opettaa sinulle, kuinka ohjelmoida Roomba Bot MATLABin avulla navigoimaan puutarhassa ja havaita pyöreitä hedelmiä/vihanneksia, jotka ovat kypsiä kerättäväksi niiden koon perusteella. Tämä robotti lähettää sinulle myös sähköpostiviestin, jossa kerrotaan, kuinka monta hedelmää on valmis poimittavaksi ja miten se kulki.

Ominaisuudet:

  • Tunnistaa seinät ja kääntyy hieman valosensorien avulla, jotta ne eivät osuisi niihin
  • Käyttää törmäysanturia ohjelman katkaisemiseksi, kun se osuu kallioon puutarhan päässä
  • Tunnistaa puutarhan ympyrän ja määrittää sen säteen kuvankäsittelyn avulla
  • Tunnistaa kallioanturit havaitakseen värillisen nauhan, joka osoittaa hedelmän läsnäolon

Vaihe 1: Materiaalit ja tarvikkeet:

  • Yksi kannettava
  • MATLAB 2017
  • Roomba Vaccum Cleaner
  • Raspberry Pi
  • Puupalikat
  • Valkoinen paperi
  • Musta paperi
  • Värillinen teippi/ohut nauha värillistä paperia
  • Suuri rock

Vaihe 2:

Vaihe 3: Puutarhan kokoaminen

Sinun kokoaminen
Sinun kokoaminen
  1. Ota musta paperisi ja leikkaa erikokoisia ympyröitä
  2. Teippaa nämä mustat ympyrät suurelle valkoiselle paperille

    Tämä kontrasti on tarpeen havaittaessa hedelmää

  3. Käytä puupalikoitasi rakentaaksesi labyrintin kaltaisen puutarhapolun robotillesi navigoida

    Valitsimme U-muotoisen polun, kuten yllä olevassa kuvassa

  4. Lisää puutarhanne päähän kivi tai ovi tai muu esine, jotta robotti tietää, että se on tehty
  5. Teippaa valkoinen paperisi ympyrällä puutarhan seinille

    Teipasimme kauhoilla, koska seinät olivat liian lyhyitä kameraa varten

  6. Aseta värillinen teippi/ohut värillinen paperinauha maahan hedelmän eteen

Vaihe 4: Koodin kirjoittaminen

Puutarhassa navigoiminen

Bump -anturien käyttäminen: Ohjelman suorittamiseksi sijoitamme koodauksen hetkeksi -lausekkeeseen, joka kiertää eri lausekkeita, kunnes koodi on rikki. Jos jokin puskureista osuu, niiden arvo on yhtä suuri kuin totuus (joka on Booleanissa arvo 1). Jos lausetta käytetään koodin rikkomiseen, kun jokin niiden arvoista on 1.

Cliff -anturien käyttäminen: while -lausekkeen sisällä käytämme if -lausetta kertoaksemme Roomban, kun se on saapunut tehtaan sijaintiin. Roomba tunnistaa värillisen nauhan lattialla tutkimalla punaisen kynnyksen, jonka kallioanturit ottavat. Jos vasen tai oikea kallioanturi havaitsee värin, jonka kynnys on suurempi kuin maan, se pysäyttää robotin 2 sekunniksi (käyttämällä taukokomentoa). Näiden kahden sekunnin aikana Roomba ottaa kuvan ja näyttää hedelmän. Aseta sisäänrakennetun käskyn avulla ympyriesi säteiden alue, ja Roomba löytää ns.

Kuvankäsittelyn käyttäminen: if -lauseessa upotamme toisen if -lauseen, jossa sanotaan: jos havaittu säde, säteet3, on suurempi tai yhtä suuri kuin vähimmäisvaatimuksemme kypsästä hedelmästä, r1 (päätät tämän), laske ja näytä Roomba, kuinka monta hedelmää on valmis ja käänny jatkaaksesi puutarhan läpi. Jos ei, käänny jatkaaksesi puutarhan läpi. Huomaa: sinun on ehkä säädettävä kääntökulma, koska jokainen Roomba on erilainen

Valopuskureiden käyttäminen: Toisessa if -lausunnossa valopuskurit analysoidaan varmistaaksemme, ettei mikään niistä nouse määritettyä kynnystämme suuremmaksi. Jos vasen, oikea, vasen keskikohta, oikea keskipiste, vasen etu- tai oikea etupuskuri ylittää kynnyksen, Roomba kääntyy hieman sopivaan kulmaan, jotta se ei osu seinään. Siksi sokkelossa navigoiminen.

Loput koodista käytetään Roomban valitseman polun piirtämiseen ja tulosten lähettämiseen sitten sähköpostiisi

Vaihe 5: Kopioi koodi

Tarkoitus: Roomba kulkee koon perusteella puutarhan läpi ja erottaa poimintavalmiita vihanneksia/hedelmiä. % Tulot: Lightbump -anturit, Cliff -anturit, Bump -anturit, kuva kamerasta Koodi rikkoutuu, kun roomba törmää % kohteeseen, lähettää astronautille sähköpostiviestin siitä, kuinka monta hedelmää on valmis noudettavaksi % ja roomban liikkeen kartoitus. % Käyttö: Jos ja kun lausuntoja, piirtämällä komentoja, sähköposti koodi MATLAB

k = 0

tic

timerVal = tic

vaikka totta

v = 0,2; % velocity r.setDriveVelocity (v, v);% roomba mennä eteenpäin L = r.getLightBumpers; LC = L.leftCenter; Rr = L.oikea; Lf = L.vasen; RC = L.oikeuskeskus; LF = L.vasen etuosa; RF = L.oikea etuosa; Q = 75; % kynnys. RTH = 30; %Korkea punainen kynnys RTL = 10; %Alhainen punainen kynnys B = r.getBumpers S = r.getCliffSensors; rl = 24; r3 = 10; PL1 = 1800; jos S.leftFront> PL1 || S.rightFront> PL1 % havaitsee, onko maan väri kynnyksen yläpuolella r. Pysäytystauko (2) kulunut Aika = toc (timerVal-2) tic timerVal = tic % tauko 2 sekunnin ajan img = r.getImage; %ota kuva imshow (img)%näytä kuva [keskukset3, säteet3] = imfindcircles (img, [30 50], 'ObjectPolarity', 'tumma', 'Herkkyys', 0,9); h = viskositeetit (keskukset3, säteet3); %etsi ympyröitä, joilla on säteitä w/määrätyllä alueella kuvassa, jos säteet3> = r1 T = 1 k = k+1 dist1 = 0.2.*elapsedTime %Jos havaittu säde on suurempi tai yhtä suuri kuin kypsän hedelmän vähimmäisprosentti, sitten Roomba laskee tämän hedelmän muuten säteet3 <= r3 T = 0 muuten T = 0 dist2 = 0.2.*kulunut aika %Jos ei, se ei laske hedelmän loppua

jos T == 1 r.setLEDDigits (num2str (k)) r.beep r.beep r.beep r.turnAngle (78) %Jos havaittiin hedelmä, näytä numero Roomban, %tee ääntä ja käännä elseif T == 2 r.turnAngle (78) %Jos havaitaan 2 hedelmää, käänny jatkaaksesi %puutarhan muualla r.turnAngle (78) %Jos hedelmiä ei havaita, käännä jatkaaksesi %puutarhan loppupäätä jos LC> Q r.stop r.turnAngle (-7) elseif RC> Q r.stop r.turnAngle (7) elseif LF> Q r.stop r.turnAngle (-7) elseif RF> Q r.stop r. turnAngle (7) elseif Lf> Q r.stop r.turnAngle (-7) elseif Rr> Q r.stop r.turnAngle (7) end %Jos jokin valopuskurin arvo ylittää kynnyksen, %Roomba kääntyy hieman oikeaan suuntaan, jotta %ei osu seinään

jos B.oikea == 1 || B.vasen == 1 || B. edessä == 1 dist3 = 0.2.*Kulunut aika r.stop r.piip ('F#*2, F#*2, c, F#*2, F#*2') r.turnAngle (360) %Jos jokin bomberit osuvat, sitten roomba toistaa ääntä, pyörii ympäri, %ja rikkoo koodin

tauon loppu

end scatter (0.533, 0, '^') hold on scatter (0.533, dist1, '<') hold on scatter (-dist2, dist1, 'v)) hold on scatter (-dist2, 0,' d ') saveas (gcf, 'Movement.png')

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

setpref ('Internet', 'Sähköposti', posti); setpref ('Internet', 'SMTP_Server', isäntä) props = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', posti); props.setProperty ('mail.smtp.host', isäntä); props.setProperty ('mail.smtp.port', portti); 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', portti); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (mail, 'Hei astronautti! Puutarhassa on paljon hedelmiä', kmsg, {'motion.png'})

Suositeltava: