Indholdsfortegnelse:

MATLAB -styret Roomba: 5 trin
MATLAB -styret Roomba: 5 trin

Video: MATLAB -styret Roomba: 5 trin

Video: MATLAB -styret Roomba: 5 trin
Video: Top 10 Programming Languages 2004-2022 2024, Juli
Anonim
MATLAB -styret Roomba
MATLAB -styret Roomba
MATLAB -styret Roomba
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 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

Dele og materialer
Dele og materialer
Dele og materialer
Dele og materialer
Dele og materialer
Dele og materialer
Dele og materialer
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

Roomba -databasefil
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

Koden
Koden
Koden
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: