Innehållsförteckning:
- Steg 1: Material och tillbehör:
- Steg 2:
- Steg 3: Montera din "trädgård"
- Steg 4: Skriva koden
- Steg 5: Kopiera koden
Video: Trädgårdshjälpare Roomba Bot: 8 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:46
Kiara Myers, Ahmad Alghadeer och Madison Tippet
Ändamål:
Den här instruerbara lär dig hur du programmerar en Roomba Bot med MATLAB för att navigera genom en trädgård och upptäcka cirkulär formade frukter/grönsaker som är mogna nog att plockas baserat på deras storlek. Den här roboten skickar dig också ett e -postmeddelande som varnar dig för hur många frukter som är redo att plockas och på vilken väg den gick.
Funktioner:
- Använder ljussensorer för att upptäcka väggar och svänga något för att undvika att träffa dem
- Använder stötsensorer för att bryta programmet när det träffar berget i slutet av trädgården
- Använder bildbehandling för att upptäcka en cirkel i trädgården och sedan bestämma dess radie
- Använder klippsensorer för att upptäcka en färgad tejp som indikerar närvaron av en frukt
Steg 1: Material och tillbehör:
- En bärbar dator
- MATLAB 2017
- Roomba Vaccum Cleaner
- Raspberry Pi
- Träblock
- Vitt papper
- Svart papper
- Färgad tejp/tunn remsa av färgat papper
- Stor sten
Steg 2:
Steg 3: Montera din "trädgård"
- Ta ditt svarta papper och skär cirklar i olika storlekar
-
Tejpa dessa svarta cirklar på ett stort vitt papper
Denna kontrast kommer att vara nödvändig när man upptäcker en frukt
- Använd dina träklossar för att bygga en labyrintliknande trädgårdsväg för din robot att navigera
Vi valde en U-formad väg som bilden ovan
- Lägg till en sten eller dörr eller ett annat föremål i slutet av din trädgård för att din robot ska veta att den är klar
-
Tejpa ditt vita papper med cirkeln på väggarna i trädgården
Vi använde hinkar för att tejpa fast den eftersom våra väggar var för korta för kameran
- Lägg färgad tejp/tunn remsa av färgat papper på marken framför frukten
Steg 4: Skriva koden
Navigera i trädgården
Använda stötsensorer: För att köra programmet lägger vi kodningen i en stund -sats som går igenom olika if -satser tills koden bryts. Om någon av stötfångarna träffas kommer det att resultera i att deras värde är lika med sant (vilket i booleskt är ett värde på 1). En if -sats används för att bryta koden när ett av deras värden är 1.
Använda Cliff Sensors: Inom while -uttalandet använder vi ett if -uttalande för att berätta för Roomba när det har kommit till platsen för en anläggning. Roomba upptäcker den färgade tejpen på golvet genom att undersöka tröskeln för rött som klippsensorerna tar upp. Om den vänstra eller högra klippsensorn detekterar en färg med ett högre tröskelvärde än markens, stoppar den roboten i 2 sekunder (med pauskommando). Under dessa 2 sekunder tar Roomba och visar en bild av frukten. Med hjälp av kommandot imfindcircles, ställ in ett intervall för dina cirkels radier, och din Roomba hittar din så kallade frukt.
Använda bildbehandling: Inom if -satsen bäddar vi in en annan if -sats som säger: om radien detekteras, radii3, är större än eller lika med vårt minimikrav på en mogen frukt, r1 (du bestämmer detta), räkna sedan och visa på Roomba hur många frukter som är klara och vänder för att fortsätta genom trädgården. Om inte, tur att fortsätta genom trädgården. Obs! Du kan behöva justera vinkeln som du vrider eftersom varje Roomba är olika
Använda ljusstötfångare: I ett annat if -uttalande analyseras ljusstötfångarna för att vara säker på att ingen av dem blir större än vår bestämda tröskel. Om antingen vänster, höger, vänster mitt, höger mitt, vänster fram eller höger främre stötfångare går över tröskeln, kommer Roomba att svänga något i lämplig vinkel för att undvika att träffa en vägg. Därför navigerar du i labyrinten.
Resten av koden används för att plotta den väg som Roomba tagit och sedan skicka resultaten till din e -post
Steg 5: Kopiera koden
% Syfte: Baserat på deras storlekar kommer roomba att gå igenom en trädgård och skilja grönsaker/frukter som är redo att plockas upp. % Ingångar: Lightbump -sensorer, Cliff -sensorer, Bump -sensorer, bild från kameran % Outputs: När ljussensorerna är större än tröskeln kommer roomba att vända och ta en bild, pip om radien för % grönsaker/frukt ligger mellan ett specifikt intervall. Koden går sönder när roomba stöter på % ett objekt, skickar astronauten ett mejl om hur många frukter som är redo att hämtas % och en kartläggning av roombas rörelse. % Användning: Om och medan uttalanden, plottningskommandon, e -postkod från MATLAB
k = 0
tic
timerVal = tic
medan det är sant
v =.2; % velocity r.setDriveVelocity (v, v);% roomba gå framåt L = r.getLightBumpers; LC = L. leftCenter; Rr = L. rätt; Lf = L. vänster; RC = L.rightCenter; LF = L. leftFront; RF = L.rightFront; Q = 75; % tröskel. RTH = 30; %Hög röd tröskel RTL = 10; %Låg röd tröskel B = r.getBumpers S = r.getCliffSensors; r1 = 24; r3 = 10; PL1 = 1800; om S.leftFront> PL1 || S.rightFront> PL1 % upptäcker om färgen på marken är över tröskelvärdet r.stoppaus (2) elapsedTime = toc (timerVal-2) tic timerVal = tic % paus i 2 sekunder img = r.getImage; %ta bild imshow (img)%visa bild [centers3, radii3] = imfindcircles (img, [30 50], 'ObjectPolarity', 'dark', 'Sensitivity', 0.9); h = viscirkler (centra3, radii3); %leta efter cirklar av radier w/inom angivet intervall i bilden om radii3> = r1 T = 1 k = k+1 dist1 = 0,2.*förfluten tid %Om radie detekteras är större än eller lika med minimikravet på %av en mogen frukt, då räknar Roomba denna frukt annars om radii3 <= r3 T = 0 annars T = 0 dist2 = 0,2.*elapsedTime %Om inte, räknas inte fruktänden
om T == 1 r.setLEDDigits (num2str (k)) r.beep r.beep r.turnAngle (78) %Om en frukt detekterades, visa numret på Roomba, %gör ett ljud och vrid elseif T == 2 r.turnAngle (78) %Om 2 frukter detekteras, vänd sedan för att fortsätta genom %garden annars r.turnAngle (78) %Om inga frukter detekteras, vrid sedan för att fortsätta genom %garden end end om 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 %Om någon av ljusstötfångarnas värden går över tröskeln, då %Roomba kommer att svänga något i rätt riktning för att undvika att %träffar en vägg
om B.right == 1 || B.vänster == 1 || B.front == 1 dist3 = 0,2.*ElapsedTime r.stop r.beep ('F#*2, F#*2, c, F#*2, F#*2') r.turnAngle (360) %Om någon av bumbers träffas, sedan spelar roomba ljud, snurrar runt, %och bryter koden
bryta slutet
slutspridning (0,533, 0, '^') håll på spridning (0,533, dist1, '<') håll kvar på spridning (-dist2, dist1, 'v') håll kvar 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', e -post); setpref ('Internet', 'SMTP_Server', host) props = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', mail); props.setProperty ('mail.smtp.host', värd); 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! Det finns så många frukter i trädgården", kmsg, {'movement.png'})
Rekommenderad:
Förvandla din Roomba till en Mars Rover: 5 steg
Förvandla din Roomba till en Mars Rover:
Trash Built BT Line Drawing Bot - My Bot: 13 steg (med bilder)
Trash Built BT Line Drawing Bot - My Bot: Hai vänner efter ett långt gap cirka 6 månader här kommer jag med ett nytt projekt. Fram till slutförandet av Cute Drawing Buddy V1, SCARA Robot - Arduino planerar jag för en annan ritbot, huvudsyftet är att täcka ett stort utrymme för teckning. Så fixade robotarmar
Roomba Bot the Bulider: 5 steg (med bilder)
Roomba Bot Bulider: Bot the Builder är en roomba, som med " grabbers " fäst på framsidan kommer att kunna flytta föremål runt. Koden med den är inställd för att spela in den första satsen med en GUI -låda som du kan styra med bara ett musklick. Efter
MATLAB -kontrollerad Roomba: 5 steg
MATLAB -styrd Roomba: Målet med detta projekt är att använda MATLAB samt en modifierad iRobot programmerbar robot. Vår grupp kombinerade våra kodningskunskaper för att skapa ett MATLAB -skript som använder många funktioner i iRobot, inklusive klippsensorer, stötfångare
Från Roomba till Rover på bara 5 steg !: 5 steg
Från Roomba till Rover i bara fem steg !: Roomba -robotar är ett roligt och enkelt sätt att doppa tårna i robotikens värld. I denna instruktionsbok kommer vi att beskriva hur man konverterar en enkel Roomba till en kontrollerbar rover som samtidigt analyserar sin omgivning.Parts lista1.) MATLAB2.) Roomb