Innehållsförteckning:
- Steg 1: Delar och material
- Steg 2: Roomba -databasfil
- Steg 3: Ansluter till Roomba
- Steg 4: Koden
- Steg 5: Slutsats
Video: MATLAB -kontrollerad Roomba: 5 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
Målet med detta projekt är att använda både MATLAB och 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ångarsensorer, ljussensorer och kameran. Vi använde dessa sensor- och kameravläsningar som ingångar, så att vi kunde skapa vissa utgångar som vi vill använda med MATLAB -kodfunktioner och loopar. Vi använder också MATLAB -mobilenheten och gyroskopet som ett sätt att ansluta till iRobot och styra den.
Steg 1: Delar och material
MATLAB 2018a
-2018 -versionen av MATLAB är den mest föredragna versionen, mest för att den fungerar bäst med koden som ansluts till den mobila enheten. De flesta av våra koder kan dock tolkas i de flesta MATLAB -versioner.
iRobot Skapa enhet
-Denna enhet är en specialtillverkad enhet som enda syfte är för programmering och kodning. (Det är inte ett verkligt vakuum)
Raspberry Pi (med kamera)
- Det här är ett dyrt datorkort som fungerar som hjärnan i iRobot. Den kan vara liten, men kan många saker. Kameran är ett extra tillägg. Den använder också hallon pi för att få alla dess funktioner och kommandon. Kameran på bilden ovan är monterad på ett 3D -tryckt stativ, skapat av Engineering Fundamentals -avdelningarna vid University of Tennessee
Steg 2: Roomba -databasfil
Det finns en huvudfil som du behöver för att använda rätt funktioner och kommandon för din roomba. Den här filen är där du skrev koden hämtar funktioner från för att göra driften av din roomba mer hanterbar.
Du kan ladda ner filen på denna länk eller den nedladdningsbara filen nedan
ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php
Steg 3: Ansluter till Roomba
Först måste du se till att din robot är ansluten till ditt hallon pi -kort med hjälp av en mikro -USB -kontakt. Då måste du korrekt ansluta din dator och robot till samma WiFi. När detta har gjorts kan du slå på din robot och ansluta till den med det angivna kommandot i robotdatabasfilen. (Återställ alltid din robot hårt före och efter att du har använt den). Till exempel använder vi kommandot "r.roomba (19)" för att ansluta till vår robot och tilldela variabeln r till vår enhet. Detta refererar tillbaka till databasfilen, som sätter upp vår variabel som en struktur som vi kan referera till när som helst.
Steg 4: Koden
Vi har bifogat hela koden nedan, men här är en kort översikt som belyser de viktiga elementen i vårt manus. Vi använde alla sensorer samt kameran för att maximera vår robots potential fullt ut. Vi inkluderade också kod som tillät oss att ansluta en mobil enhet till vår robot och använda dess gryoskop för att manuellt styra den.
Vi började med det enkla kommandot "r.setDriveVelocity (.06)" som sätter robotens framhastighet till.06 m/s. Detta är bara för att få roboten i rörelse i förväg
Sedan startas vårt huvudskript med en stundslinga som hämtar data från den givna roboten genom att skapa strukturer som vi kan referera till och använda i villkorliga uttalanden nedan, så att vi kan berätta för roboten att utföra ett visst kommando baserat på strukturdata roboten läser med sina sensorer. Vi ställer in den så att roboten läser sina klippsensorer och följer en svart väg
medan true % medan loop går tills något "falskt" inträffar (i detta fall fortsätter det oändligt) data = r.getCliffSensors; data2 = r.getBumpers; % hämtar data kontinuerligt om klippsensorns värden och tilldelar dem en variabel % img = r.getImage; % Tar en bild från den monterade kameran % image (img); % Visar bilden som togs % red_mean = medelvärde (medelvärde (img (:,:, 1))); % Tar medelvärdet för den gröna färgen om data.rightFront <2000 r.turnAngle (-2); % vrider Roomba ungefär 0,2 grader CW när värdet för höger främre klippsensorer faller under 2000 r.setDriveVelocity (.05); elseif data.leftFront data.leftFront && 2000> data.rightFront r.moveDistance (.1); % uppmanar Roomba att fortsätta framåt med cirka 0,2 m/s om båda värdena från höger fram- och vänster frontsensorer faller under 2000 % r.turnAngle (0); % uppmanar Roomba att inte vända sig om ovanstående villkor är sanna
elseif data2.right == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (.05); elseif data2.left == 1 r.moveDistance (-. 2); r.turnAngle (5); r.setDriveVelocity (.05); elseif data2.front == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (.05);
Efter denna medan loop, anger vi en annan while loop som utlöser data som erhållits genom kameran. Och vi använder en if -sats i denna medan loop som känner igen en bild med ett specifikt program (alexnet), och när den identifierar bilden utlöser den omedelbart den mobila enhetens fjärrkontroll
anet = alexnet; % Tilldelar alexnet deep learning till en variabel medan true % Infinite while loop img = r.getImage; img = imresize (img, [227, 227]); label = classify (anet, img); om etikett == "pappershandduk" || label == "kylskåp" label = "vatten"; slutbild (img); titel (char (etikett)); drawow;
While loop som gör att vi kan styra enheten med vår telefon hämtar data från telefonens gyroskop och vi ansluter den till en matris som kontinuerligt strömmar data tillbaka till MATLAB på datorn. Vi använder en if -sats som läser matrisens data och ger en utgång som flyttar enheten baserat på vissa värden i telefonens gyroskop. Det är viktigt att veta att vi använde orienteringssensorerna för den mobila enheten. Den en efter tre matrisen som nämns ovan kategoriseras av varje element i telefonens orienteringssensorer, som är azimut, tonhöjd och sida. If -uttalandena skapade förhållanden som angav när sidan överskrider värdena 50 eller faller under -50, då rör sig roboten ett visst avstånd framåt (positivt 50) eller bakåt (negativt 50). Och detsamma gäller pitchvärdet. Om pitchvärdet överstiger värdet 25 av faller under -25, vänder roboten i en vinkel på 1 grader (positiv 25) eller negativ 1 grader (negativ 25)
medan sann paus (.1) % Paus på.5 sekunder innan varje värde tas Controller = iphone. Orientation; % Tilldelar matrisen för värdena för iPhone -orienteringen till en variabel Azimuthal = Controller (1); % Tilldelar matrisens första värde till en variabel Pitch = Controller (2); % Tilldelar matrisens andra värde till en variabel (luta framåt och bakåt när iPhone hålls i sidled) Sida = Controller (3); % Tilldelar matrisens tredje värde till en variabel (luta åt vänster och höger när iPhone hålls i sidled) % Orsakar en utgång baserad på telefonens orientering om Sida> 130 || Sida 25 r.moveDistance (-. 1) % Flyttar Roomba cirka 0,1 meter bakåt om iPhone lutas bakåt minst 25 grader annars om sidan 25 r.turnAngle (-1) % Vänder Roomba cirka 1 grad CCW om iPhone lutas åt vänster minst 25 grader annars om Pitch <-25 r.turnAngle (1) % Vänder Roomba cirka 1 grad CW om iPhone lutar minst 25 grader
Det här är bara höjdpunkterna i de viktigaste delarna av vår kod, som vi inkluderade om du snabbt behöver kopiera och klistra in ett avsnitt till din fördel. Hela vår kod är dock bifogad nedan om det behövs
Steg 5: Slutsats
Den här koden som vi skrev är speciellt utformad för vår robot samt vår övergripande vision av projektet. Vårt mål var att använda alla våra MATLAB -kodningskunskaper för att skapa ett väldesignat manus som använder de flesta av robotens funktioner. Att använda telefonkontrollen är inte så svårt som du kanske tror, och vi hoppas att vår kod kan hjälpa dig att bättre förstå konceptet bakom kodning av en iRobot.
Rekommenderad:
Förvandla din Roomba till en Mars Rover: 5 steg
Förvandla din Roomba till en Mars Rover:
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
Roomba MATLAB -projekt: 5 steg
Roomba MATLAB -projekt: Den nuvarande planen som NASA har för Mars -rovern är att den ska vara en datainsamlare och vandra runt på Mars och samla in prover av jorden för att föra tillbaka den till jorden så att forskare kan se om det fanns några tidigare livsformer på planeten. Ytterligare
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
Roomba med MATLAB: 4 steg (med bilder)
Roomba med MATLAB: Detta projekt använder sig av MATLAB och en iRobot Create2 programmerbar robot. Genom att testa vår kunskap om MATLAB kan vi programmera Create2 för att tolka bilder och upptäcka signaler. Robotens funktionalitet beror huvudsakligen på