Innholdsfortegnelse:
- Trinn 1: Initialisering og sensorer
- Trinn 2: Få data
- Trinn 3: Fullføringsoppgave
- Trinn 4: Konklusjon
Video: Roomba Explorer: 4 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
Ved å bruke MATLAB og iRobot's Create2 Robot, vil dette prosjektet utforske forskjellige områder på et ukjent sted. Vi brukte sensorene på roboten for å hjelpe til med å manøvrere et farlig terreng. Ved å få fotografier og videofeed fra en Raspberry Pi som er vedlagt, klarte vi å bestemme hindringene Roboten vil møte, og de vil bli klassifisert.
Deler og materialer
For dette prosjektet trenger du
-en datamaskin
-nyeste versjon av MATLAB (MATLAB R2018b ble brukt til dette prosjektet)
- roombaInstall verktøykasse
-iRobot's Create2 -robot
-Raspberry Pi med kamera
Trinn 1: Initialisering og sensorer
Før vi begynte å programmere, lastet vi ned roombaInstall -verktøykassen, som ga tilgang til forskjellige komponenter i roboten.
I utgangspunktet opprettet vi en GUI for å initialisere enhver robot. For å gjøre dette må du skrive inn nummeret på roboten som en inngang. Dette vil gi tilgang til å kjøre programmet vårt til roboten Vi jobbet med å få roboten til å manøvrere gjennom de mange terrengene den ville støte på. Vi implementerte Cliff Sensors, Light Bump Sensors og Physical Bump Sensors ved å bruke utgangene til å utløse roboten for å endre hastighet og eller retning. Når noen av de seks lysstøtsensorene oppdager et objekt, reduseres verdien de sender ut, noe som får Robotens hastighet til å redusere for å unngå kollisjon i full hastighet. Når roboten endelig kolliderer med en hindring, vil Physical Bump -sensorene rapportere en verdi større enn null; på grunn av dette vil roboten stoppe, så det blir ingen flere kollisjoner og flere funksjoner kan settes i verk. For Cliff Sensors vil de lese lysstyrken i området rundt dem. Hvis verdien er større enn 2800, bestemte vi at roboten ville være på stabilt underlag og trygg. Men hvis verdien er mindre enn 800, vil Cliff Sensors oppdage en klippe og stoppe umiddelbart for ikke å falle av. Enhver verdi mellom ble bestemt for å representere vann og vil få roboten til å stoppe handlingen. Ved å bruke sensorene ovenfor, endres hastigheten på roboten slik at vi bedre kan avgjøre om det er fare.
Nedenfor er koden (fra MATLAB R2018b)
%% initialisering
dlgPrompts = {'Roomba Number'};
dlgTitle = 'Velg din Roomba';
dlgDefaults = {''};
opts. Resize = 'på';
dlgout = inputdlg (dlgPrompts, dlgTitle, 1, dlgDefaults, opts) % Opprett vindu som ber brukeren om å skrive inn sitt romba -nummer
n = str2double (dlgout {1});
r = roomba (n); % Initialiserer bruker spesifisert Roomba %% Hastighetsbestemmelse fra Light Bump Sensors mens true s = r.getLightBumpers; % får lysstøtsensorer
lbumpout_1 = extractfield (s, 'left'); % tar de numeriske verdiene til sensorene og gjør dem mer brukbare lbumpout_2 = extractfield (s, 'leftFront');
lbumpout_3 = extractfield (s, 'leftCenter');
lbumpout_4 = extractfield (s, 'rightCenter');
lbumpout_5 = extractfield (s, 'rightFront');
lbumpout_6 = extractfield (s, 'høyre');
lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6] % konverterer verdier til matrise
sLbump = sort (lbout); %sorterer matrisen til laveste verdi kan trekkes ut
lowLbump = sLbump (1); hastighet =.05+(lowLbump)*. 005 %ved å bruke laveste verdi, som representerer nære hindringer, for å bestemme hastighet, høyere hastighet når ingenting oppdages
r.setDriveVelocity (hastighet, hastighet)
slutt
% Fysiske støtfangere
b = r.getBumpers; %Output sant, usant
bsen_1 = ekstraktfelt (b, 'venstre')
bsen_2 = ekstraktfelt (b, 'høyre')
bsen_3 = extractfield (b, 'front')
bsen_4 = extractfield (b, 'leftWheelDrop')
bsen_5 = extractfield (b, 'rightWheelDrop')
støt = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = sum (bums)
hvis tbump> 0 r.setDriveVelocity (0, 0)
slutt
% Cliff Sensors
c = r.getCliffSensors %% 2800 safe, ellers vann
csen_1 = ekstraktfelt (c, 'venstre')
csen_2 = ekstraktfelt (c, 'høyre')
csen_3 = extractfield (c, 'leftFront')
csen_4 = extractfield (c, 'rightFront')
klipper = [csen_1, csen_2, csen_3, csen_4]
ordcliff = sorter (klipper)
hvis ordcliff (1) <2750
r.setDriveVelocity (0, 0)
hvis klippe <800
disp 'klippe'
ellers
disponere 'vann'
slutt
r. TurnAngle (45)
slutt
Trinn 2: Få data
Etter at de fysiske støtsensorene er utløst, vil roboten implementere Raspberry Pi ombord for å ta et fotografi av hindringen. Etter å ha tatt et fotografi, ved hjelp av tekstgjenkjenning hvis det er tekst i bildet, vil roboten avgjøre hva hindringen er og hva hindringen sier.
img = r.getImage; imshow (img);
imwrite (img, 'imgfromcamera.jpg')
foto = imread ('imgfromcamera.jpg')
ocrResults = ocr (foto)
anerkjent tekst = ocrResults. Text;
figur;
imshow (foto) tekst (220, 0, anerkjent tekst, 'Bakgrunnsfarge', [1 1 1]);
Trinn 3: Fullføringsoppgave
Når roboten bestemmer at hindringen er HJEM, fullfører den oppdraget og blir hjemme. Etter at oppdraget er fullført, vil roboten sende en e-postvarsel om at den har kommet hjem, og den vil sende bildene som den tok under turen.
% Sender e-post
setpref ('Internett', 'SMTP_Server', 'smtp.gmail.com');
setpref ('Internett', 'E_mail', '[email protected]'); % e -postkonto som skal sendes fra setpref ('Internett', 'SMTP_Username', 'enter sender email'); % avsendere brukernavn setpref ('Internett', 'SMTP_Password', 'skriv inn avsenderpassord'); % Avsenderpassord
rekvisitter = java.lang. System.getProperties; props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.port', '465');
sendmail ('Skriv inn mottakende e -post', 'Roomba', 'Roomba har kommet hjem !!', 'imgfromcamera.jpg') % e -postkonto å sende til
Roboten er deretter ferdig.
Trinn 4: Konklusjon
MATLAB -programmet som er inkludert, er atskilt fra hele skriptet som ble brukt med roboten. I det siste utkastet, sørg for å legge all koden, bortsett fra initialiseringstrinnet, i en stund -sløyfe for å sikre at støtfangerne stadig kjører. Dette programmet kan redigeres for å passe brukerens behov. Konfigurasjonen av vår robot er vist.
*Påminnelse: Ikke glem at roombaInstall -verktøykassen er nødvendig for at MATLAB skal samhandle med roboten og Raspberry Pi ombord.
Anbefalt:
Gjør Roomba til en Mars Rover: 5 trinn
Gjør Roomba til en Mars Rover:
Tastatursnarveier for Internet Explorer !!: 4 trinn
Tastatursnarveier for Internet Explorer !!: Denne instruksen viser deg noen nyttige hurtigtaster for internet explorer. Abonner på kanalen min Takk
Roomba Scout Explorer: 8 trinn
Roomba Scout Explorer: Som et av de mest etterlengtede og sterkt undersøkte amerikanske prosjektene, har Mars rover-prosjektene blitt menneskelige prestasjoner i den stadig fremskridende produksjonen av høyteknologiske autonome systemer med det ene formål å undersøke og integrere
Fra Roomba til Rover på bare 5 trinn !: 5 trinn
Fra Roomba til Rover på bare 5 trinn !: Roomba -roboter er en morsom og enkel måte å dyppe tærne i robotikkens verden. I denne instruksen vil vi detaljere hvordan du konverterer en enkel Roomba til en kontrollerbar rover som samtidig analyserer omgivelsene. Deleliste1.) MATLAB2.) Roomb
Bus Pirate 3EEPROM Explorer Board: 5 trinn
Bus Pirate 3EEPROM Explorer Board: Hvis du har en av Hack a Day's Bus Pirates, hva gjør du med den? Lær om 1-wire, I2C og SPI EEPROM med 3EEPROM explorer board (vi kaller det THR-EE-PROM). EEPROM er en type minnebrikke som lagrer data uten kontinuerlig strøm