Indholdsfortegnelse:

Roomba Explorer: 4 trin
Roomba Explorer: 4 trin

Video: Roomba Explorer: 4 trin

Video: Roomba Explorer: 4 trin
Video: Roomba i3 — обзор робота-пылесоса от iRobot 2024, November
Anonim
Roomba Explorer
Roomba Explorer

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

Initialisering og sensorer
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

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