Innholdsfortegnelse:
- Trinn 1: Materialer og rekvisita:
- Steg 2:
- Trinn 3: Monter din "hage"
- Trinn 4: Skrive koden
- Trinn 5: Kopier koden
Video: Garden Helper Roomba Bot: 8 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
Kiara Myers, Ahmad Alghadeer og Madison Tippet
Hensikt:
Denne instruksen vil lære deg hvordan du programmerer en Roomba Bot ved hjelp av MATLAB, for å navigere gjennom en hage, og oppdage sirkelformede frukter/grønnsaker som er modne nok til å bli plukket ut fra størrelsen. Denne roboten sender deg også en e -post, som varsler deg hvor mange frukter som er klare til å bli plukket og banen den reiste i.
Funksjoner:
- Bruker lyssensorer til å oppdage vegger og svinge litt for å unngå å treffe dem
- Bruker støtsensorer for å bryte programmet når det treffer berget i enden av hagen
- Bruker bildebehandling for å oppdage en sirkel i hagen og deretter bestemme dens radius
- Bruker klippesensorer til å oppdage en farget tape som indikerer tilstedeværelsen av en frukt
Trinn 1: Materialer og rekvisita:
- En bærbar PC
- MATLAB 2017
- Roomba Vaccum Cleaner
- Bringebær Pi
- Treblokker
- Hvitt papir
- Svart papir
- Farget tape/tynn stripe med farget papir
- Stor stein
Steg 2:
Trinn 3: Monter din "hage"
- Ta svart papir og kutt sirkler i forskjellige størrelser
-
Tape disse svarte sirklene på et stort hvitt papir
Denne kontrasten vil være nødvendig når du oppdager en frukt
-
Bruk treklossene dine til å konstruere en labyrintlignende hagebane som roboten din kan navigere i
Vi valgte en U-formet bane som vist ovenfor
- På slutten av hagen din, legg til en stein eller dør eller et annet objekt for at roboten din skal vite at den er ferdig
-
Tape hvitt papir med sirkelen på veggene i hagen
Vi brukte bøtter til å tape den på fordi veggene våre var for korte til kameraet
- Legg farget tape/tynn stripe farget papir på bakken foran frukten
Trinn 4: Skrive koden
Navigere i hagen
Bruke støtsensorer: For å kjøre programmet plasserer vi kodingen i en while -setning som går gjennom ulike if -setninger til koden er ødelagt. Hvis noen av støtfangerne blir truffet, vil det resultere i at verdien er lik sann (som i boolsk er en verdi på 1). En if -setning brukes til å bryte koden når en av verdiene er lik 1.
Bruke Cliff Sensors: Innenfor while -setningen bruker vi en if -setning for å fortelle Roomba når den har kommet til stedet for et anlegg. Roomba oppdager det fargede båndet på gulvet ved å undersøke terskelen til rødt som klippesensorene tar opp. Hvis venstre eller høyre klippesensor oppdager en farge med en større terskel enn på bakken, vil den stoppe roboten i 2 sekunder (ved hjelp av pause -kommando). I løpet av disse 2 sekundene vil Roomba ta og vise et bilde av frukten. Bruk kommandoen imfindcircles til å angi et område for sirkelenes radier, og Roomba finner din såkalte frukt.
Bruke bildebehandling: I if -setningen legger vi inn en annen if -setning som sier: hvis radius detektert, radii3, er større enn eller lik vårt minimumskrav til en moden frukt, r1 (du bestemmer dette), tell deretter og vis på Roomba hvor mange frukter som er klare og snu for å fortsette gjennom hagen. Hvis ikke, er turen til å fortsette gjennom hagen. Merk: du må kanskje justere vinkelen du snur fordi alle Roomba er forskjellige
Bruke lysstøtfangere: I en annen if -setning analyseres lysstøtfangerne for å være sikker på at ingen av dem blir større enn vår bestemte terskel. Hvis enten venstre, høyre, venstre senter, høyre senter, venstre foran eller høyre frontlyskaster går over terskelen, vil Roomba svinge litt i riktig vinkel for å unngå å treffe en vegg. Derfor navigerer du i labyrinten.
Resten av koden brukes til å plotte banen som Roomba har tatt, og deretter sende resultatene til e -posten din
Trinn 5: Kopier koden
% Formål: Basert på størrelsene vil roomba gå gjennom en hage og skille grønnsaker/frukt som er klare til å bli hentet. % Innganger: Lightbump -sensorer, Cliff -sensorer, Bump -sensorer, bilde fra kamera % Outputs: Når lyssensorer er større enn terskelen, vil roomba snu og ta et bilde, pip hvis radiusen til % grønnsaker/frukt er mellom et bestemt område. Koden brytes når roomba støter på % et objekt, sender astronauten en e -post om hvor mange frukter som er klare til å bli hentet og en kartlegging av roombas bevegelse. % Bruk: Hvis og mens utsagn, plotte kommandoer, e -postkode fra MATLAB
k = 0
tic
timerVal = tic
mens det er sant
v =.2; % velocity r.setDriveVelocity (v, v);% roomba go forward L = r.getLightBumpers; LC = L. venstre senter; Rr = L. høyre; Lf = L. venstre; RC = L.rightCenter; LF = L. venstreFront; RF = L.rightFront; Q = 75; % terskel. RTH = 30; %Høy rød terskel RTL = 10; %Lav rød terskel B = r.getBumpers S = r.getCliffSensors; r1 = 24; r3 = 10; PL1 = 1800; hvis S.leftFront> PL1 || S.rightFront> PL1 % oppdager om fargen på bakken er over terskelen r.stop pause (2) elapsedTime = toc (timerVal-2) tic timerVal = tic % pause i 2 sekunder img = r.getImage; %take image imshow (img)%display image [centers3, radii3] = imfindcircles (img, [30 50], 'ObjectPolarity', 'dark', 'Sensitivity', 0.9); h = viscircles (centre3, radii3); %se etter sirkler med radier m/i angitt område i bildet hvis radii3> = r1 T = 1 k = k+1 dist1 = 0,2.*forløpt Tid %Hvis radius oppdaget er større enn eller lik minimumskravet til en moden frukt, da teller Roomba denne frukten ellers hvis radii3 <= r3 T = 0 annet T = 0 dist2 = 0,2.*elapsedTime %Hvis ikke, teller det ikke fruktenden
hvis T == 1 r.setLEDDigits (num2str (k)) r.beep r.beep r.turnAngle (78) %Hvis en frukt ble oppdaget, viser du tallet på Roomba, %lager en lyd og snur elseif T == 2 r.turnAngle (78) %Hvis det oppdages 2 frukter, snu deretter for å fortsette gjennom %garden ellers r.turnAngle (78) %Hvis det ikke oppdages frukt, så snu for å fortsette gjennom slutten av %garden end hvis 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 %Hvis noen av lysstøtfangernes verdier går over terskelen, så %Roomba vil svinge litt i riktig retning for å unngå at %treffer en vegg
hvis B.right == 1 || B. venstre == 1 || B.front == 1 dist3 = 0,2.*ElapsedTime r.stop r.beep ('F#*2, F#*2, c, F#*2, F#*2') r.turnAngle (360) %Hvis noen av bumbers blir truffet, så spiller roomba lyd, snurrer rundt, %og bryter koden
pause slutt
ende scatter (0.533, 0, '^') hold på scatter (0.533, dist1, '<') hold på scatter (-dist2, dist1, 'v') hold på scatter (-dist2, 0, 'd') saveas (gcf, 'Movement.png')
kmsg = num2str (k) mail = '[email protected]' password = 'Srsora123#' host = 'smtp.gmail.com' port = '465'
setpref ('Internett', 'E_mail', post); setpref ('Internett', 'SMTP_Server', vert) props = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', mail); props.setProperty ('mail.smtp.host', vert); props.setProperty ('mail.smtp.port', port); 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', port); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (mail, 'Hei Astronaut! Det er så mange frukter i hagen', kmsg, {'movement.png'})
Anbefalt:
The Werewolves of Miller's Hollow (狼人 殺) Circuit Helper: 4 trinn
The Werewolves of Miller's Hollow (狼人 殺) Circuit Helper: Dette prosjektet er laget for folk som liker å spille The Werewolves of Miller's Hollow, og denne boksen brukes til å spille med 8 personer, med tre varulver, to landsbyboere og tre spesielle roller (Seer, heks og jeger). Denne boksen er laget for å erstatte
Breadboard Wire Helper: 10 trinn (med bilder)
Breadboard Wire Helper: Denne instruksjonene viser hvordan du bygger et verktøy for å gjøre breadboard prototyping enklere og penere. Jeg kaller det Breadboard Wire Helper
Ultimate Electronics Helper -- Variabel benk -topp -PSU med hjelpende hender: 12 trinn (med bilder)
Ultimate Electronics Helper || Variabel benk -topp -PSU med hjelpende hender: Når du arbeider med elektronikk, er det stort sett alltid behov for to verktøy. I dag skal vi lage disse to viktige elementene. Og vi vil også ta det et skritt videre og slå disse to sammen til den ultimate elektronikkhjelperen! Jeg snakker selvfølgelig om
Trash Built BT Line Drawing Bot - My Bot: 13 trinn (med bilder)
Trash Built BT Line Drawing Bot - My Bot: Hai venner etter et langt gap ca 6 måneder her kommer jeg med et nytt prosjekt. Inntil ferdigstillelsen av Cute Drawing Buddy V1, SCARA Robot - Arduino jeg planlegger en ny tegningsbot, er hovedmålet å dekke et stort område for tegning. Så faste robotarmer
Roomba Bot the Bulider: 5 trinn (med bilder)
Roomba Bot Bulider: Bot the Builder er en roomba, som med " grabbers " festet til fronten vil kunne flytte objekter rundt. Koden med den er satt til å registrere den første satsen med en GUI -boks som du kan kontrollere med bare museklikk. Etter