INHOUDSOPGAWE:

Roomba Explorer: 4 stappe
Roomba Explorer: 4 stappe

Video: Roomba Explorer: 4 stappe

Video: Roomba Explorer: 4 stappe
Video: Почему робот-пылесос пищит на зарядке 2024, November
Anonim
Roomba Explorer
Roomba Explorer

Deur gebruik te maak van MATLAB en iRobot's Create2 Robot, verken hierdie projek verskillende gebiede van 'n onbekende plek. Ons het die sensors op die robot gebruik om 'n gevaarlike terrein te bestuur. Deur foto's en videostroom van 'n aangehegte framboos Pi te kry, kon ons die struikelblokke waarmee die robot te kampe het, bepaal, en dit sal geklassifiseer word.

Onderdele en materiaal

Vir hierdie projek benodig u

-n rekenaar

-nuutste weergawe van MATLAB (MATLAB R2018b is vir hierdie projek gebruik)

- roomba Installeer gereedskapskas

-iRobot's Create2 -robot

-Raspberry Pi met kamera

Stap 1: Initialisering en sensors

Initialisering en sensors
Initialisering en sensors

Voordat ons begin programmeer, het ons die roombaInstall -gereedskapskis afgelaai, wat toegang tot verskillende komponente van die robot moontlik gemaak het.

Aanvanklik het ons 'n GUI geskep om enige robot te initialiseer. Om dit te kan doen, moet u die nommer van die robot as invoer invoer. Dit gee ons toegang tot ons program na die robot. Ons het daaraan gewerk om die robot te laat beweeg deur die vele terreine wat dit sou teëkom. Ons het die Cliff Sensors, Light Bump Sensors en Physical Bump Sensors geïmplementeer deur hul uitsette te gebruik om die robot uit te skakel om sy spoed en of rigting te verander. As een van die ses ligstampsensors 'n voorwerp opspoor, sal die waarde wat hulle lewer, afneem, wat veroorsaak dat die snelheid van die robot afneem om 'n botsing met 'n volle spoed te voorkom. As die robot uiteindelik met 'n hindernis bots, sal die Physical Bump -sensors 'n waarde groter as nul rapporteer; As gevolg hiervan sal die robot stop, so daar sal geen verdere botsings plaasvind nie en meer funksies kan in werking gestel word. Vir die Cliff Sensors sal hulle die helderheid van die omgewing rondom hulle lees. As die waarde groter as 2800 is, het ons bepaal dat die robot op 'n stabiele grond en veilig is. Maar as die waarde minder as 800 is, sal die kransensors 'n krans opspoor en onmiddellik stop om nie af te val nie. Enige waarde tussenin was vasgestel om water voor te stel en sal veroorsaak dat die robot sy aksie stop. Deur die bogenoemde sensors te gebruik, word die snelheid van die robot verander, sodat ons beter kan bepaal of daar 'n gevaar is.

Hieronder is die kode (van MATLAB R2018b)

%% Inisialisering

dlgPrompts = {'Roomba -nommer'};

dlgTitle = 'Kies u Roomba';

dlgDefaults = {''};

opts. Resize = 'aan';

dlgout = inputdlg (dlgPrompts, dlgTitle, 1, dlgDefaults, opts) % Skep venster wat die gebruiker vra om hul roomba -nommer in te voer

n = str2double (dlgout {1});

r = roomba (n); % Initialiseer deur die gebruiker gespesifiseerde Roomba %% Spoedbepaling van Light Bump Sensors terwyl ware s = r.getLightBumpers; % kry ligte stampsensors

lbumpout_1 = uittrekselveld (e, 'links'); % neem die numeriese waardes van die sensors en maak dit meer bruikbaar lbumpout_2 = extractfield (s, 'leftFront');

lbumpout_3 = extractfield (s, 'leftCenter');

lbumpout_4 = extractfield (s, 'rightCenter');

lbumpout_5 = extractfield (s, 'rightFront');

lbumpout_6 = uittrekselveld (e, 'regs');

lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6] % verander waardes in matriks

sLbump = sort (lbout); %sorteer matriks na die laagste waarde kan onttrek word

lowLbump = sLbump (1); spoed =.05+(lowLbump)*. 005 %met die laagste waarde, wat naby hindernisse verteenwoordig, om spoed te bepaal, hoër spoed wanneer niks opgespoor word nie

r.setDriveVelocity (spoed, spoed)

einde

% Fisiese Bumpers

b = r.getBumpers; %Uitset waar, onwaar

bsen_1 = uittrekselveld (b, 'links')

bsen_2 = uittrekselveld (b, 'regs')

bsen_3 = uittrekselveld (b, 'voor')

bsen_4 = extractfield (b, 'leftWheelDrop')

bsen_5 = extractfield (b, 'rightWheelDrop')

hobbels = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = som (boemelaars)

as tbump> 0 r.setDriveVelocity (0, 0)

einde

% Kransensors

c = r.getCliffSensors %% 2800 veilig, anders water

csen_1 = uittrekselveld (c, 'links')

csen_2 = uittrekselveld (c, 'regs')

csen_3 = extractfield (c, 'leftFront')

csen_4 = extractfield (c, 'rightFront')

kranse = [csen_1, csen_2, csen_3, csen_4]

ordcliff = sorteer (kranse)

as ordcliff (1) <2750

r.setDriveVelocity (0, 0)

as krans <800

disp 'krans'

anders

versprei 'water'

einde

r. TurnAngle (45)

einde

Stap 2: Kry data

Nadat die fisiese stampsensors gestruikel is, implementeer die robot sy boord Raspberry Pi om 'n foto van die hindernis te neem. Na die neem van 'n foto, met behulp van teksherkenning as daar teks in die prentjie is, sal die robot bepaal wat die hindernis is en wat die hindernis sê.

img = r.getImage; imshow (img);

imwrite (img, 'imgfromcamera.jpg')

foto = imread ('imgfromcamera.jpg')

ocrResults = ocr (foto)

unknownText = ocrResults. Text;

figuur;

imshow (foto) teks (220, 0, erkende teks, 'Agtergrondkleur', [1 1 1]);

Stap 3: Afhandeling

As die robot vasstel dat die hindernis HUIS is, voltooi hy sy missie en bly tuis. Na voltooiing van die missie, stuur die robot 'n e-poswaarskuwing dat hy teruggekeer het huis toe, en hy stuur die beelde wat hy tydens sy reis geneem het.

Stuur e-pos

setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com');

setpref ('Internet', 'E_mail', '[email protected]'); % e -pos rekening om van setpref af te stuur ('Internet', 'SMTP_Username', 'enter sender email'); % sender gebruikersnaam setpref ('Internet', 'SMTP_Password', 'voer sender wagwoord in'); % Afsender se wagwoord

rekwisiete = 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 ('Voer ontvangende e -posadres', 'Roomba', 'Roomba is terug huis toe !!', 'imgfromcamera.jpg') % posrekening om na te stuur

Die robot is dan klaar.

Stap 4: Gevolgtrekking

Afsluiting
Afsluiting

Die MATLAB -program wat ingesluit is, word geskei van die hele skrif wat met die Robot gebruik is. In die finale konsep, maak seker dat u al die kode, behalwe die inisialiseringstap, in 'n rukkie loop om seker te maak dat die bumpers voortdurend loop. Hierdie program kan aangepas word volgens die behoeftes van die gebruiker. Die konfigurasie van ons robot word getoon.

*Herinnering: moenie vergeet dat die roombaInstall -gereedskapskas nodig is vir MATLAB om interaksie te hê met die robot en die boord Raspberry Pi.

Aanbeveel: