Indholdsfortegnelse:
- Trin 1: Dele og materialer
- Trin 2: Roomba -databasefil
- Trin 3: Tilslutning til Roomba
- Trin 4: Koden
- Trin 5: Konklusion
Video: MATLAB -styret Roomba: 5 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
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 klippesensorer, kofangersensorer, lyssensorer og kameraet. Vi brugte disse sensor- og kameramålinger som input, så vi kunne oprette bestemte output, som vi ønsker ved hjælp af MATLAB -kodefunktioner og sløjfer. Vi bruger også MATLAB -mobilenheden og gyroskopet som en måde at oprette forbindelse til iRobot og kontrollere den.
Trin 1: Dele og materialer
MATLAB 2018a
-2018 -versionen af MATLAB er den mest foretrukne version, mest fordi den fungerer bedst med den kode, der opretter forbindelse til den mobile enhed. Dog kan det meste af vores kode fortolkes i de fleste MATLAB -versioner.
iRobot Opret enhed
-Denne enhed er en specialfremstillet enhed, der udelukkende er beregnet til programmering og kodning. (Det er ikke et egentligt vakuum)
Raspberry Pi (med kamera)
- Dette er et ikke-dyrt computerkort, der fungerer som hjernen på iRobot. Det kan være lille, men det er i stand til mange ting. Kameraet er en ekstra tilføjelse. Det bruger også hindbær pi til at få alle dets funktioner og kommandoer. Kameraet afbildet ovenfor er monteret på et 3D -trykt stativ, skabt af afdelingerne Engineering Fundamentals ved University of Tennessee
Trin 2: Roomba -databasefil
Der er en hovedfil, du skal bruge for at bruge de korrekte funktioner og kommandoer til din roomba. Denne fil er, hvor du skrev kode, trækker funktioner fra for at gøre driften af din roomba mere overskuelig.
Du kan downloade filen på dette link eller den fil, der kan downloades herunder
ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php
Trin 3: Tilslutning til Roomba
Først skal du sikre dig, at din robot er forbundet til dit hindbær pi -kort ved hjælp af et mikro -USB -stik. Derefter skal du korrekt tilslutte din computer og robot til den samme WiFi. Når dette er gjort, kan du tænde din robot og oprette forbindelse til den ved hjælp af den givne kommando i robotdatabasefilen. (Nulstil altid din robot hårdt før og efter du har brugt den). For eksempel bruger vi kommandoen "r.roomba (19)" til at oprette forbindelse til vores robot og tildele variablen r til vores enhed. Dette refererer tilbage til databasefilen, der opretter vores variabel som en struktur, som vi kan referere til på et givet tidspunkt.
Trin 4: Koden
Vi har vedhæftet den fulde kode herunder, men her er en kort oversigt, der fremhæver de vigtige elementer i vores script. Vi brugte alle sensorerne samt kameraet til fuldt ud at maksimere vores robots potentiale. Vi inkluderede også kode, der tillod os at forbinde en mobil enhed til vores robot og bruge dens gryoskop til manuelt at styre den.
Vi startede med den enkle kommando "r.setDriveVelocity (.06)", der indstiller robotens fremadgående hastighed til.06 m/s. Dette er bare for at få robotten i gang på forhånd
Derefter startes vores hovedskript med et stykke loop, der henter dataene fra den givne robot ved at oprette strukturer, som vi kan referere til og bruge i betingede udsagn herunder, så vi kan fortælle robotten at udføre en bestemt kommando baseret på strukturdata robotten læser med sine sensorer. Vi satte den op, så robotten læser sine klintsensorer og følger en sort sti
mens sand % mens loop går, indtil der opstår noget "falsk" (i dette tilfælde fortsætter det uendeligt) data = r.getCliffSensors; data2 = r.getBumpers; % henter data løbende om kliffesensorværdierne og tildeler dem en variabel % img = r.getImage; % Tager et billede fra det monterede kamera % billede (img); % Viser det billede, der blev taget % red_mean = mean (mean (img (:,:, 1))); % Tager gennemsnitsværdien for den grønne farve, hvis data.rightFront <2000 r.turnAngle (-2); % drejer Roomba cirka.2 grader CW, når værdien for de højre forreste klippesensorer falder til under 2000 r.setDriveVelocity (.05); elseif data.leftFront data.leftFront && 2000> data.rightFront r.moveDistance (.1); % fortæller Roomba at fortsætte med ca. % fortæller Roomba ikke at dreje, hvis ovennævnte betingelser er sande
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 denne mens loop, indtaster vi en anden while loop, der udløser de data, der er opnået gennem kameraet. Og vi bruger en if -sætning inde i denne while -loop, der genkender et billede ved hjælp af et specifikt program (alexnet), og når det har identificeret billedet, udløser det straks mobilenhedens fjernbetjening
anet = alexnet; % Tildeler alexnet deep learning til en variabel, mens true % Infinite while loop img = r.getImage; img = imresize (img, [227, 227]); label = klassificer (anet, img); hvis etiket == "køkkenrulle" || label == "køleskab" label = "vand"; slutbillede (img); titel (char (label)); tegning;
Mens loop, der giver os mulighed for at styre enheden med vores telefon, henter disse data fra telefonens gyroskop, og vi tilslutter det til en matrix, der løbende streamer data tilbage til MATLAB på computeren. Vi bruger en if -sætning, der læser matrixens data og giver et output, der flytter enheden baseret på bestemte værdier af telefonens gyroskop. Det er vigtigt at vide, at vi brugte orienteringssensorerne på den mobile enhed. Den ene efter tre matrix, der er nævnt ovenfor, er kategoriseret efter hvert element i telefonens orienteringssensorer, som er azimut, tonehøjde og side. If -sætningerne skabte betingelser, der angav, når siden overstiger værdierne 50 eller falder under -50, så bevæger robotten sig en vis afstand frem (positiv 50) eller baglæns (negativ 50). Og det samme gælder pitchværdien. Hvis pitch -værdien overstiger værdien 25 af falder under -25, drejer robotten i en vinkel på 1 grader (positiv 25) eller negativ 1 grader (negativ 25)
mens sand pause (.1) % Pause på.5 sekunder før hver værdi tages Controller = iphone. Orientation; % Tildeler matrixen for værdierne for iPhones orientering til en variabel Azimuthal = Controller (1); % Tildeler matrixens første værdi til en variabel Pitch = Controller (2); % Tildeler matrixens anden værdi til en variabel (vippe frem og tilbage, når iPhone holdes sidelæns) Side = Controller (3); % Tildeler matrixens tredje værdi til en variabel (vippe til venstre og højre, når iPhone holdes sidelæns) % Forårsager et output baseret på telefonens retning, hvis Side> 130 || Side 25 r.moveDistance (-. 1) % Bevæger Roomba ca. 0,1 meter baglæns, hvis iPhone vippes bagud mindst 25 grader, hvis siden 25 r.turnAngle (-1) % Drejer Roomba cirka 1 grad CCW, hvis iPhone er vippet til venstre mindst 25 grader ellershøjde <-25 r.turnAngle (1) % Drejer Roomba cirka 1 grad CW, hvis iPhone vippes mindst 25 graders ende
Dette er blot højdepunkterne i de store dele af vores kode, som vi inkluderede, hvis du hurtigt skal kopiere og indsætte et afsnit til din fordel. Hele vores kode er dog vedhæftet nedenfor, hvis det er nødvendigt
Trin 5: Konklusion
Denne kode, som vi skrev, er specielt designet til vores robot samt vores overordnede vision om projektet. Vores mål var at bruge alle vores MATLAB -kodningsevner for at lave et brøndesign -script, der udnytter de fleste af robotens funktioner. Det er ikke så svært at bruge telefonens controller, som du måske tror, og vi håber, at vores kode kan hjælpe dig med bedre at forstå konceptet bag kodning af en iRobot.
Anbefalede:
Gør din Roomba til en Mars Rover: 5 trin
Gør din Roomba til en Mars Rover:
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
Roomba MATLAB -projekt: 5 trin
Roomba MATLAB -projekt: Den nuværende plan, som NASA har for Mars -roveren, er, at den skal være en dataindsamler og vandre rundt på Mars og indsamle prøver af jorden for at bringe den tilbage til Jorden, så forskere kan se, om der var nogen tidligere livsformer på Planeten. Ekstra
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
Roomba With MATLAB: 4 trin (med billeder)
Roomba With MATLAB: Dette projekt gør brug af MATLAB og en iRobot Create2 programmerbar robot. Ved at sætte vores viden om MATLAB på prøve kan vi programmere Create2 til at fortolke billeder og registrere signaler. Robotens funktionalitet afhænger hovedsageligt af