Indholdsfortegnelse:
- Trin 1: Materialer og forsyninger:
- Trin 2:
- Trin 3: Montering af din "have"
- Trin 4: Skrivning af koden
- Trin 5: Kopier koden
Video: Havehjælper Roomba Bot: 8 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:29
Kiara Myers, Ahmad Alghadeer og Madison Tippet
Formål:
Denne instruktive vil lære dig, hvordan du programmerer en Roomba Bot ved hjælp af MATLAB til at navigere gennem en have og opdage cirkulære frugter/grøntsager, der er modne nok til at blive plukket baseret på deres størrelse. Denne robot sender dig også en e -mail, der advarer dig om, hvor mange frugter, der er klar til at blive plukket, og den vej, den kørte i.
Funktioner:
- Bruger lyssensorer til at registrere vægge og dreje let for at undgå at ramme dem
- Bruger bump sensorer for at bryde programmet, når det rammer klippen for enden af haven
- Bruger billedbehandling til at registrere en cirkel i haven og derefter bestemme dens radius
- Bruger klippesensorer til at registrere et farvet tape, der angiver tilstedeværelsen af en frugt
Trin 1: Materialer og forsyninger:
- En bærbar computer
- MATLAB 2017
- Roomba Vaccum Cleaner
- Hindbær Pi
- Træblokke
- Hvidt papir
- Sort papir
- Farvet tape/tynd strimmel farvet papir
- Stor sten
Trin 2:
Trin 3: Montering af din "have"
- Tag dit sorte papir og skær cirkler i forskellige størrelser
-
Tape disse sorte cirkler på et stort hvidt papir
Denne kontrast vil være nødvendig, når man påviser en frugt
-
Brug dine træblokke til at konstruere en labyrintlignende havesti, som din robot kan navigere i
Vi valgte en U-formet sti som vist på billedet ovenfor
- For enden af din have tilføj en sten eller dør eller et andet objekt, så din robot kan vide, at den er færdig
-
Tape dit hvide papir med cirklen på havens vægge
Vi brugte spande til at tape den på, fordi vores vægge var for korte til kameraet
- Læg farvet tape/tynd strimmel farvet papir på jorden foran frugten
Trin 4: Skrivning af koden
Navigering i haven
Brug af stødsensorer: For at køre programmet placerer vi kodningen i en while -sætning, der går igennem forskellige if -sætninger, indtil koden er brudt. Hvis nogen af kofangerne bliver ramt, vil det resultere i, at deres værdi er sand (som i boolsk er en værdi på 1). En if -sætning bruges til at bryde koden, når en af deres værdier er lig med 1.
Brug af klippesensorer: Inden for udsagn fra while bruger vi en if -sætning til at fortælle Roomba, hvornår den er ankommet til placeringen af et anlæg. Roomba registrerer det farvede tape på gulvet ved at undersøge den tærskel for rødt, som klippesensorerne opfanger. Hvis venstre eller højre klippesensor registrerer en farve med en større tærskel end jordens, stopper den robotten i 2 sekunder (ved hjælp af pausekommando). I løbet af disse 2 sekunder vil Roomba tage og vise et billede af frugten. Brug den indbyggede kommando imfindcircles til at indstille et område for dine cirkels radier, og din Roomba finder din såkaldte frugt.
Brug af billedbehandling: I if -sætningen integrerer vi en anden if -sætning, der siger: hvis radius detekteret, radii3, er større end eller lig med vores minimumskrav til en moden frugt, r1 (du bestemmer dette), tæl derefter og vis på Roomba hvor mange frugter er klar og vender for at fortsætte gennem haven. Hvis ikke, skal turen fortsætte gennem haven. Bemærk: du skal muligvis justere den vinkel, du drejer, fordi hver Roomba er forskellig
Brug af lysstøddæmpere: I en anden if -erklæring analyseres lysstøddæmperne for at være sikker på, at ingen af dem bliver større end vores bestemte tærskel. Hvis enten venstre, højre, venstre center, højre center, venstre front eller højre forlygte kofanger går over tærsklen, så vil Roomba dreje lidt i den passende vinkel for at undgå at ramme en væg. Derfor navigerer du i labyrinten.
Resten af koden bruges til at plotte den sti, Roomba har taget, og derefter sende resultaterne til din e -mail
Trin 5: Kopier koden
% Formål: Baseret på deres størrelser vil roomba gå gennem en have og skelne grøntsager/frugter, der er klar til at blive hentet. % Indgange: Lightbump -sensorer, Cliff -sensorer, Bump -sensorer, billede fra kamera % Outputs: Når lyssensorer er større end tærsklen, drejer roomba og tager et billede, bipper, hvis radius af % grøntsager/frugter er mellem et bestemt område. Koden bryder, når roomba støder ind i % et objekt, sender astronauten en e -mail om, hvor mange frugter der er klar til at blive afhentet og en kortlægning af roombas bevægelse. % Anvendelse: Hvis og mens udsagn, plotte kommandoer, e -mail kode fra MATLAB
k = 0
tic
timerVal = tic
mens det er sandt
v =.2; % velocity r.setDriveVelocity (v, v);% roomba gå frem L = r.getLightBumpers; LC = L. venstre center; Rr = L. højre; Lf = L. venstre; RC = L.rightCenter; LF = L. venstreFront; RF = L.rightFront; Q = 75; % Grænseværdi. RTH = 30; %Høj rød tærskel RTL = 10; %Lav rød tærskel B = r.getBumpers S = r.getCliffSensors; r1 = 24; r3 = 10; PL1 = 1800; hvis S.leftFront> PL1 || S.rightFront> PL1 % registrerer, om farven på jorden er over tærsklen r. Stop pause (2) forløbetTid = toc (timerVal-2) tic timerVal = tic % pause i 2 sekunder img = r.getImage; %tag billede imshow (img)%vis billede [centre3, radii3] = imfindcircles (img, [30 50], 'ObjectPolarity', 'dark', 'Sensitivity', 0.9); h = cirkler (centre3, radius3); %kig efter cirkler med radier m/i angivet område i billedet, hvis radii3> = r1 T = 1 k = k+1 dist1 = 0,2.*forløbet Tid %Hvis radius detekteret er større end eller lig med minimum %-kravet for en moden frugt, så tæller Roomba denne frugt elseif radii3 <= r3 T = 0 else T = 0 dist2 = 0.2.*elapsedTime %Hvis ikke, tæller den ikke frugtenden
hvis T == 1 r.setLEDDigits (num2str (k)) r.beep r.beep r.turnAngle (78) %Hvis der blev registreret en frugt, skal du vise nummeret på Roomba, %lave en støj og dreje elseif T == 2 r.turnAngle (78) %Hvis der registreres 2 frugter, skal du dreje for at fortsætte gennem %garden ellers r.turnAngle (78) %Hvis der ikke registreres nogen frugt, skal du dreje for at fortsætte gennem %haveenden 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 nogen af lysstødfangerens værdier går over tærsklen, så %Roomba vil dreje lidt i den rigtige retning for at undgå at %rammer en væg
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 nogen af bumbers bliver ramt, derefter spiller roomba lyd, drejer rundt, %og bryder koden
pause ende
slutspredning (0,533, 0, '^') hold på spredning (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 ('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', vært); 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, 'Hej Astronaut! Der er så mange frugter i haven', kmsg, {'movement.png'})
Anbefalede:
Gør din Roomba til en Mars Rover: 5 trin
Gør din Roomba til en Mars Rover:
Papirkurv Bygget BT Line Drawing Bot - Min Bot: 13 trin (med billeder)
Papirkurv Bygget BT Line Drawing Bot - Min Bot: Hej venner efter et langt mellemrum omkring 6 måneder her kommer jeg med et nyt projekt. Indtil færdiggørelsen af Cute Drawing Buddy V1, SCARA Robot - Arduino planlægger jeg en anden tegnebot, hovedformålet er at dække et stort rum til tegning. Så fikserede robotarme
Roomba Bot the Bulider: 5 trin (med billeder)
Roomba Bot Bulider: Bot the Builder er en roomba, der med " grabbers " fastgjort til fronten vil kunne flytte objekter rundt. Koden med den er indstillet til at optage den første sats med en GUI -boks, som du kan styre med bare et klik med musen. Efter
MATLAB -styret Roomba: 5 trin
MATLAB -styret Roomba: Målet med dette projekt er at udnytte MATLAB samt en modificeret iRobot programmerbar robot. Vores gruppe kombinerede vores kodningsevner for at oprette et MATLAB -script, der bruger mange funktioner i iRobot, herunder cliff -sensorer, kofanger -sensorer
Fra Roomba til Rover på bare 5 trin !: 5 trin
Fra Roomba til Rover på bare 5 trin !: Roomba -robotter er en sjov og nem måde at dyppe tæerne i robotikens verden. I denne Instructable vil vi detaljeret beskrive, hvordan man konverterer en simpel Roomba til en kontrollerbar rover, der samtidigt analyserer sine omgivelser. Deleliste1.) MATLAB2.) Roomb