Indholdsfortegnelse:
- Trin 1: Initialisering og sensorer
- Trin 2: Hentning af data
- Trin 3: Afslutning af mission
- Trin 4: Konklusion
Video: Roomba Explorer: 4 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
Ved at bruge MATLAB og iRobot's Create2 Robot vil dette projekt udforske forskellige områder af et ukendt sted. Vi brugte sensorerne på robotten til at hjælpe med at manøvrere et farligt terræn. Ved at få fotografier og videofeed fra en Raspberry Pi, der er vedhæftet, var vi i stand til at bestemme de forhindringer, robotten vil møde, og de vil blive klassificeret.
Dele og materialer
Til dette projekt har du brug for
-en computer
-nyeste version af MATLAB (MATLAB R2018b blev brugt til dette projekt)
- roombaInstallere værktøjskasse
-iRobot's Create2 -robot
-Raspberry Pi med kamera
Trin 1: Initialisering og sensorer
Inden programmeringen startede, downloadede vi roombaInstall -værktøjskassen, som gav adgang til forskellige komponenter i robotten.
Oprindeligt oprettede vi en GUI for at initialisere enhver robot. For at gøre dette skal du indtaste Robotens nummer som input. Dette vil give adgang til at køre vores program til robotten Vi arbejdede på at få robotten til at manøvrere gennem de mange terræn, den ville støde på. Vi implementerede Cliff Sensors, Light Bump Sensors og Physical Bump Sensors ved at bruge deres output til at udløse Robotten for at ændre dens hastighed og eller retning. Når en af de seks lysstødsensorer registrerer et objekt, vil værdien, de udsender, falde, hvilket får Robotens hastighed til at falde for at undgå en kollision med fuld hastighed. Når robotten endelig kolliderer med en forhindring, vil Physical Bump -sensorerne rapportere en værdi større end nul; på grund af dette stopper robotten, så der ikke kommer flere kollisioner, og flere funktioner kan sættes i værk. For Cliff Sensors vil de aflæse lysstyrken i området omkring dem. Hvis værdien er større end 2800, fastslog vi, at robotten ville være på stabil grund og sikker. Men hvis værdien er mindre end 800, registrerer Cliff Sensors en klippe og stopper øjeblikkeligt for ikke at falde af. Enhver værdi imellem blev bestemt til at repræsentere vand og vil få robotten til at stoppe sin handling. Ved at bruge ovenstående sensorer ændres robotens hastighed, så vi bedre kan afgøre, om der er nogen fare.
Nedenfor er koden (fra MATLAB R2018b)
%% initialisering
dlgPrompts = {'Roomba -nummer'};
dlgTitle = 'Vælg din Roomba';
dlgDefaults = {''};
opts. Resize = 'on';
dlgout = inputdlg (dlgPrompts, dlgTitle, 1, dlgDefaults, opts) % Opret vindue, der beder brugeren om at indtaste sit roomba -nummer
n = str2double (dlgout {1});
r = roomba (n); % Initialiserer bruger specificeret Roomba %% Hastighedsbestemmelse fra Light Bump Sensors, mens true s = r.getLightBumpers; % får lysstødsensorer
lbumpout_1 = ekstraktfelt (r, 'venstre'); % tager sensorernes numeriske værdier og gør dem mere anvendelige lbumpout_2 = extractfield (s, 'leftFront');
lbumpout_3 = ekstraktfelt (r, 'leftCenter');
lbumpout_4 = ekstraktfelt (r, 'rightCenter');
lbumpout_5 = ekstraktfelt (r, 'rightFront');
lbumpout_6 = ekstraktfelt (r, 'højre');
lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6] % konverterer værdier til matrix
sLbump = sort (lbout); %sorterer matrix til laveste værdi kan ekstraheres
lowLbump = sLbump (1); hastighed =.05+(lowLbump)*. 005 %ved hjælp af laveste værdi, som repræsenterer tætte forhindringer, for at bestemme hastighed, højere hastighed, når intet blev registreret
r.setDriveVelocity (hastighed, hastighed)
ende
% Fysiske kofangere
b = r.getBumpers; %Output sand, falsk
bsen_1 = ekstraktfelt (b, 'venstre')
bsen_2 = ekstraktfelt (b, 'højre')
bsen_3 = ekstraktfelt (b, 'front')
bsen_4 = ekstraktfelt (b, 'leftWheelDrop')
bsen_5 = extractfield (b, 'rightWheelDrop')
bump = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = sum (bums)
hvis tbump> 0 r.setDriveVelocity (0, 0)
ende
% Cliff Sensors
c = r.getCliffSensors %% 2800 sikkert, ellers vand
csen_1 = ekstraktfelt (c, 'venstre')
csen_2 = ekstraktfelt (c, 'højre')
csen_3 = ekstraktfelt (c, 'leftFront')
csen_4 = ekstraktfelt (c, 'rightFront')
klipper = [csen_1, csen_2, csen_3, csen_4]
ordcliff = sort (klipper)
hvis ordcliff (1) <2750
r.setDriveVelocity (0, 0)
hvis klippe <800
disp 'klint'
andet
disp 'vand'
ende
r. TurnAngle (45)
ende
Trin 2: Hentning af data
Når de fysiske stødsensorer er udløst, vil robotten implementere sin indbyggede Raspberry Pi for at tage et fotografi af forhindringen. Efter at have taget et fotografi, ved hjælp af tekstgenkendelse, hvis der er tekst i billedet, bestemmer robotten, hvad forhindringen er, og hvad forhindringen siger.
img = r.getImage; imshow (img);
imwrite (img, 'imgfromcamera.jpg')
foto = imread ('imgfromcamera.jpg')
ocrResults = ocr (foto)
anerkendt tekst = ocrResults. Text;
figur;
imshow (foto) tekst (220, 0, anerkendt tekst, 'Baggrundsfarve', [1 1 1]);
Trin 3: Afslutning af mission
Når robotten afgør, at forhindringen er HJEM, vil den fuldføre sin mission og blive hjemme. Efter afslutningen af missionen sender robotten en e-mail-advarsel om, at den er vendt hjem, og den sender de billeder, den tog under sin rejse.
% Sender e-mail
setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com');
setpref ('Internet', 'E_mail', '[email protected]'); % mailkonto, der skal sendes fra setpref ('Internet', 'SMTP_Username', 'enter sender email'); % afsendere brugernavn setpref ('Internet', 'SMTP_Password', 'indtast afsenderadgangskode'); % Afsenderadgangskode
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 ('Indtast modtagende e -mail', 'Roomba', 'Roomba er vendt hjem !!', 'imgfromcamera.jpg') % mailkonto, der skal sendes til
Robotten er derefter færdig.
Trin 4: Konklusion
Det inkluderede MATLAB -program er adskilt fra hele scriptet, der blev brugt med robotten. I det sidste udkast skal du sørge for at lægge al koden, bortset fra initialiseringstrinnet, i et stykke loop for at sikre, at kofangerne konstant kører. Dette program kan redigeres, så det passer til brugerens behov. Konfigurationen af vores robot er vist.
*Påmindelse: Glem ikke, at roombaInstall -værktøjskassen er nødvendig for, at MATLAB kan interagere med robotten og den indbyggede Raspberry Pi.
Anbefalede:
Gør din Roomba til en Mars Rover: 5 trin
Gør din Roomba til en Mars Rover:
Tastaturgenveje til Internet Explorer !!: 4 trin
Tastaturgenveje til Internet Explorer !!: Denne instruktion viser dig nogle nyttige tastaturgenveje til internet explorer Abonner venligst på min kanal Tak
Roomba Scout Explorer: 8 trin
Roomba Scout Explorer: Som et af de mest forventede og stærkt undersøgte amerikanske projekter er Mars rover-projekterne blevet menneskelige præstationer i den stadigt fremskridende produktion af højteknologiske autonome systemer med det ene formål at undersøge og integrere
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
Bus Pirate 3EEPROM Explorer Board: 5 trin
Bus Pirate 3EEPROM Explorer Board: Hvis du har en af Hack a Day's Bus Pirates, hvad gør du med det? Lær mere om 1-wire, I2C og SPI EEPROM'er med 3EEPROM explorer board (vi kalder det THR-EE-PROM). EEPROM er en type hukommelseschip, der lagrer data uden kontinuerlig strøm