Sadržaj:
- Korak 1: Materijali i potrepštine:
- Korak 2:
- Korak 3: Sklapanje vašeg "vrta"
- Korak 4: Pisanje koda
- Korak 5: Kopirajte kôd
Video: Vrtni pomagač Roomba Bot: 8 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:37
Kiara Myers, Ahmad Alghadeer i Madison Tippet
Svrha:
Ova instrukcija će vas naučiti kako programirati Roomba Bota, koristeći MATLAB, za navigaciju kroz vrt, otkrivajući voće/povrće kružnog oblika koje je dovoljno zrelo da se može brati na temelju njihove veličine. Ovaj robot također vam šalje e -poruku upozoravajući koliko je voća spremno za branje i put kojim je putovao.
Značajke:
- Koristi svjetlosne senzore za otkrivanje zidova i blago okretanje kako ne bi udario u njih
- Koristi senzore udara kako bi razbio program kada udari o stijenu na kraju vrta
- Koristi obradu slike za otkrivanje kruga u vrtu, a zatim određivanje njegovog radijusa
- Koristi senzore litice za otkrivanje obojene trake koja ukazuje na prisutnost voća
Korak 1: Materijali i potrepštine:
- Jedan laptop
- MATLAB 2017
- Roomba usisavač
- Malina Pi
- Drveni blokovi
- Bijeli papir
- Crni papir
- Traka u boji/tanka traka papira u boji
- Veliki kamen
Korak 2:
Korak 3: Sklapanje vašeg "vrta"
- Uzmite svoj crni papir i izrežite krugove različitih veličina
-
Zalijepite ove crne krugove na veliki bijeli papir
Taj će kontrast biti potreban pri otkrivanju ploda
- Upotrijebite svoje drvene blokove za izgradnju vrtne staze nalik labirintu za kretanje vašeg robota
Odabrali smo put u obliku slova U na gornjoj slici
- Na kraju vašeg vrta dodajte kamen ili vrata ili neki drugi predmet kako bi vaš robot znao da je to učinjeno
- Zalijepite svoj bijeli papir s krugom na zidove vrta
Zalijepili smo ga kantama jer su nam zidovi bili prekratki za kameru
- Stavite obojenu traku/tanku traku obojenog papira na tlo ispred ploda
Korak 4: Pisanje koda
Kretanje po vrtu
Korištenje Bump senzora: Za pokretanje programa, kodiranje stavljamo u naredbu while koja se ponavlja kroz razne if naredbe dok se kôd ne pokvari. Ako je bilo koji od odbojnika pogođen, njihova će vrijednost biti jednaka true (što je u Booleovom značenju vrijednost 1). Naredba if koristi se za razbijanje koda kada je jedna od njihovih vrijednosti jednaka 1.
Korištenje senzora litice: Unutar naredbe while koristimo naredbu if kako bismo Roombi rekli kada je stigla na mjesto postrojenja. Roomba detektira obojenu traku na podu ispitivanjem praga crvene boje koji senzori litice uhvate. Ako lijevi ili desni senzor litice otkrije boju s većim pragom od tla, tada će robota zaustaviti na 2 sekunde (pomoću naredbe pause). Tijekom ove 2 sekunde, Roomba će uzeti i prikazati sliku voća. Pomoću ugrađene naredbe imfindcircles postavite raspon radijusa vaših krugova i vaša će Roomba pronaći vaše takozvano voće.
Korištenje obrade slike: U if naredbu ugrađujemo drugu if izjavu koja kaže: ako je otkriveni radijus, radii3, veći ili jednak našem minimalnom zahtjevu za zrelim plodom, r1 (vi odlučujete o ovome), tada računajte i prikažite na Roomba koliko je voća spremno i okrenite se za nastavak kroz vrt. Ako ne, skrenite na nastavak kroz vrt. Napomena: možda ćete morati prilagoditi kut okretanja jer je svaka Roomba drugačija
Korištenje svjetlosnih odbojnika: U drugom iskazu if, svjetlosni odbojnici se analiziraju kako bi bili sigurni da nijedan od njih ne prelazi naš utvrđeni prag. Ako lijevi, desni, lijevi središnji, desni centar, lijevi prednji ili desni prednji odbojnik svjetla pređu prag, tada će se Roomba malo okrenuti u odgovarajućem kutu kako bi izbjegla udar u zid. Dakle, kretanje labirintom.
Ostatak koda koristi se za iscrtavanje puta kojim je Roomba krenula, a zatim rezultate šalje na vašu e -poštu
Korak 5: Kopirajte kôd
% Svrha: Na temelju svojih veličina roomba će proći kroz vrt i razlikovati povrće/voće koje je spremno za branje. % Ulazi: Lightbump senzori, Cliff senzori, Bump senzori, slika s kamere % Outputs: Kad god su svjetlosni senzori veći od praga, roomba će se okrenuti i snimiti sliku, oglasi se zvučnim signalom ako je radijus % povrća/voća između određenog raspona. Kôd se prekida kad roomba naleti na % objekt, pošalje astronautu e -poruku o tome koliko je plodova spremno za % branje i kartiranje kretanja roombe. % Upotreba: If i while izjave, iscrtavanje naredbi, kôd e -pošte iz MATLAB -a
k = 0
tic
timerVal = tic
dok je istina
v = 0,2; % velocity r.setDriveVelocity (v, v);% roomba ići naprijed L = r.getLightBumpers; LC = L.lijevi centar; Rr = L.desno; Lf = L.lijevo; RC = L.desni centar; LF = L.lijevo sprijeda; RF = L.desno sprijeda; Q = 75; % prag. RTH = 30; %Visoki crveni prag RTL = 10; %Nizak crveni prag B = r.getBumpers S = r.getCliffSensors; r1 = 24; r3 = 10; PL1 = 1800; ako je S.leftFront> PL1 || S.rightFront> PL1 % detektira je li boja na tlu iznad praga r.stop pause (2) elapsedTime = toc (timerVal-2) tic timerVal = tic % pauza 2 sekunde img = r.getImage; %take image imshow (img)%display image [centres3, radii3] = imfindcircles (img, [30 50], 'ObjectPolarity', 'dark', 'Sensitivity', 0,9); h = viscircles (centri3, polumjeri3); %potražite krugove radijusa w/u navedenom rasponu na slici ako su radijusi3> = r1 T = 1 k = k+1 dist1 = 0,2.*elapsedTime %Ako je otkriveni radijus veći ili jednak minimalnom %potrebnom zrelom plodu, tada Roomba broji ovo voće inače ako je radijus3 <= r3 T = 0 ostalo T = 0 dist2 = 0.2.*elapsedTime %Ako nije, ne računa se kraj ploda
ako je T == 1 r.setLEDDigits (num2str (k)) r.beep r.beep r.beep r.turnAngle (78) %Ako je otkriveno voće, tada prikažite broj na Roombi, %napravite buku i okrenite elseif T == 2 r.turnAngle (78) %Ako se otkriju 2 ploda, okrenite za nastavak kroz %vrt else r.turnAngle (78) %Ako se plodovi ne otkriju, okrenite za nastavak kroz %kraja vrta ako je 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 %Ako neka od vrijednosti svjetlosnih odbojnika pređe prag, tada %Roomba lagano će se okrenuti u odgovarajućem smjeru kako bi se izbjeglo %udara u zid
ako je B.desno == 1 || B.lijevo == 1 || B.fronte == 1 dist3 = 0.2.*ElapsedTime r.stop r.beep ('F#*2, F#*2, c, F#*2, F#*2') r.turnAngle (360) %Ako postoji neki od bumbers su pogođeni, tada roomba reproducira zvuk, vrti se, %i razbija kod
prekid kraja
end scatter (0.533, 0, '^') hold on scatter (0.533, dist1, '<') hold on scatter (-dist2, dist1, 'v') hold on scatter (-dist2, 0, 'd') osim (gcf, 'Movement.png')
kmsg = num2str (k) mail = '[email protected]' lozinka = 'Srsora123#' host = 'smtp.gmail.com' port = '465'
setpref ('Internet', 'E_mail', pošta); setpref ('Internet', 'SMTP_Server', host) rekviziti = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', pošta); props.setProperty ('mail.smtp.host', host); props.setProperty ('mail.smtp.port', port); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'istina'); props.setProperty ('mail.smtp.auth', 'istina'); 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 (pošta, 'Zdravo astronaute! U vrtu ima toliko voća', kmsg, {'movement.png'})
Preporučeni:
Automatizirani vrtni sustav izgrađen na Raspberry Pi za vanjske ili unutarnje prostore - MudPi: 16 koraka (sa slikama)
Automatizirani vrtni sustav izgrađen na Raspberry Pi za vanjske ili unutarnje prostore - MudPi: Volite li vrtlarstvo, ali ne možete pronaći vremena za njegovo održavanje? Možda imate neke sobne biljke koje izgledaju pomalo žedno ili traže način da automatiziraju vašu hidroponiku? U ovom ćemo projektu riješiti te probleme i naučiti osnove
Vrtni monitor: 3 koraka
Vrtni monitor: Ovo je najnovija i potpuna verzija mojih vrtnih monitora, napravio sam prethodne verzije s različitim namjenama, poput jedne s LCD -om i druge s ESP8266. Međutim, ja sam bolje dokumentirao ovu verziju pa sam je odlučio prenijeti. Kad c
Gardenduino zvani Vrtni majstor: 4 koraka
Gardenduino zvani Vrtni majstor: pa zar nije dosadno čistiti naše travnjake, zalijevati biljke & što ne! Pa baš vrtlarstvo nije moja šalica čaja. pa sam odlučio napraviti automatski sustav za brigu o svom vrtu! Započnimo
Automatski vrtni zalijevač - 3D ispis - Arduino: 10 koraka (sa slikama)
Automatski sustav za zalijevanje vrta | 3D ispis | Arduino: Oduševljeni sam vrtlar, ali zalijevanje vaših biljaka ručno tijekom sušnih razdoblja traje neko vrijeme. Ovaj me projekt oslobađa zalijevanja, pa mogu raditi na svojim drugim projektima. Također je izvrsno brinuti se o vrtu dok ste daleko od kuće i biljci
Vrtni vlak - Arduino bežični NMRA DCC: 4 koraka (sa slikama)
Vrtni vlak - Arduino bežični NMRA DCC: Nadalje, uz prethodna uputstva s DCC -om na mrtvom kolosijeku, ideju sam dalje razvio ručnom DCC komandnom stanicom s tipkovnicom i LCD zaslonom. Zapovjedna stanica sadrži sve kodiranje potrebno za NMRA DCC upute, međutim