Sisukord:

Roomba Explorer: 4 sammu
Roomba Explorer: 4 sammu

Video: Roomba Explorer: 4 sammu

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

Kasutades MATLABi ja iRoboti loodud robotit Create2, uurib see projekt tundmatu asukoha erinevaid piirkondi. Kasutasime robotil olevaid andureid, et aidata manööverdada ohtlikul maastikul. Lisatud Raspberry Pi -lt fotode ja videovoogude abil saime kindlaks teha takistused, millega robot silmitsi seisab, ja need klassifitseeritakse.

Osad ja materjalid

Selle projekti jaoks vajate

-arvuti

-MATLABi uusim versioon (selle projekti jaoks kasutati MATLAB R2018b)

- roombaInstal tööriistakast

-iRoboti loodud robot 2

-Vaarika Pi kaameraga

Samm: lähtestamine ja andurid

Initsialiseerimine ja andurid
Initsialiseerimine ja andurid

Enne mis tahes programmeerimise alustamist laadisime alla tööriistakasti roombaInstall, mis võimaldas juurdepääsu roboti erinevatele komponentidele.

Algselt lõime GUI, et lähtestada mis tahes robot. Selleks peate sisestama sisendina roboti numbri. See võimaldab juurdepääsu meie programmi käivitamisele robotile. Töötasime selle nimel, et robot saaks manööverdada paljudel maastikel, millega see kokku puutuks. Rakendasime Cliff Sensors, Light Bump Sensors ja Physical Bump Sensors, kasutades nende väljundeid, et robot välja lülitada, et muuta selle kiirust ja suunda. Kui mõni kuuest kerge põrkamise andurist tuvastab objekti, väheneb nende väljundväärtus, mis põhjustab roboti kiiruse vähenemise, et vältida kokkupõrget täiskiirusel. Kui robot lõpuks takistusega kokku põrkab, teatavad Physical Bump andurid väärtusest, mis on suurem kui null; seetõttu robot peatub, nii et enam kokkupõrkeid ei toimu ja rohkem funktsioone saab kasutusele võtta. Cliff Sensorite jaoks loevad nad ümbritseva ala heledust. Kui väärtus on suurem kui 2800, otsustasime, et robot on stabiilsel pinnal ja ohutu. Kuid kui väärtus on väiksem kui 800, tuvastavad kaljuandurid kalju ja peatuvad kohe, et mitte maha kukkuda. Mis tahes vahepealne väärtus oli määratud kujutama vett ja paneb roboti oma tegevuse peatama. Ülaltoodud andureid kasutades muudetakse roboti kiirust, mis võimaldab meil paremini kindlaks teha, kas on oht.

Allpool on kood (MATLAB R2018b)

%% Initsialiseerimine

dlgPrompts = {'Roomba number'};

dlgTitle = 'Vali oma Roomba';

dlgDefaults = {''};

valib. Resize = 'on';

dlgout = inputdlg (dlgPrompts, dlgTitle, 1, dlgDefaults, opts) % Loo aken, mis palub kasutajal sisestada oma roomba number

n = str2double (dlgout {1});

r = roomba (n); % Initsialiseerib kasutaja määratud Roomba %% Kiiruse määramine Light Bump Sensorite abil, samas kui s = r.getLightBumpers; % hankivad kergete löökide andureid

lbumpout_1 = ekstraheerimisväli (s, 'vasak'); % võtab andurite arvväärtused ja muudab need paremini kasutatavaks. lbumpout_2 = extractfield (s, 'leftFront');

lbumpout_3 = ekstraheerimisväli (s, 'leftCenter');

lbumpout_4 = ekstraheerimisväli (s, 'rightCenter');

lbumpout_5 = ekstraheerimisväli (s, 'rightFront');

lbumpout_6 = ekstraheerimisväli (s, 'parem');

lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6] % teisendab väärtused maatriksiks

sLbump = sorteerimine (lbout); %sorteerib maatriksi madalaima väärtuseni

lowLbump = sLbump (1); kiirus =.05+(lowLbump)*. 005 %, kasutades madalaimat väärtust, mis kujutab endast lähedasi takistusi, kiiruse määramiseks, suuremat kiirust, kui midagi ei tuvastata

r.setDriveVelocity (kiirus, kiirus)

lõpp

% Füüsilised kaitserauad

b = r.getBumpers; %Väljund õige, vale

bsen_1 = väljatõmbeväli (b, 'vasak')

bsen_2 = väljatõmbeväli (b, 'parem')

bsen_3 = ekstraheerimisväli (b, 'ees')

bsen_4 = väljatõmbeväli (b, 'leftWheelDrop')

bsen_5 = väljatõmbeväli (b, 'rightWheelDrop')

muhke = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = summa (pätt)

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

lõpp

% Kaljuandurid

c = r.getCliffSensors %% 2800 ohutu, muidu vesi

csen_1 = väljatõmbeväli (c, 'vasak')

csen_2 = väljatõmbeväli (c, 'parem')

csen_3 = väljatõmbeväli (c, 'leftFront')

csen_4 = väljatõmbeväli (c, 'rightFront')

kaljud = [csen_1, csen_2, csen_3, csen_4]

ordcliff = sorteeri (kaljud)

kui ordcliff (1) <2750

r.setDriveVelocity (0, 0)

kui kalju <800

disp 'kalju'

muidu

"vesi"

lõpp

r. Pöördenurk (45)

lõpp

2. samm: andmete hankimine

Pärast füüsiliste löögisensorite käivitamist rakendab robot oma Raspberry Pi pardal oleva takistuse pildistamiseks. Pärast pildistamist, kasutades tekstituvastust, kui pildil on teksti, määrab robot kindlaks, mis on takistus ja mida takistus ütleb.

img = r.getImage; imshow (img);

imwrite (img, 'imgfromcamera.jpg')

foto = imread ('imgfromcamera.jpg')

ocrResults = ocr (foto)

tunnistatudTeksti = ocrResults. Text;

joonis;

imshow (foto) tekst (220, 0, tunnustatud tekst, 'BackgroundColor', [1 1 1]);

3. samm: missiooni lõpetamine

Kui robot teeb kindlaks, et takistus on KODU, täidab ta oma ülesande ja jääb koju. Pärast missiooni lõpetamist saadab robot e-posti teel hoiatuse, et ta on koju naasnud, ja saadab pildid, mis ta oma reisi ajal tegi.

% E-kirja saatmine

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

setpref ('Internet', 'E_mail', '[email protected]'); % e -posti konto saatmiseks aadressilt setpref ('Internet', 'SMTP_Username', 'enter sender email'); % saatjate kasutajanimi setpref ('Internet', 'SMTP_Password', 'sisesta saatja parool'); % Saatjate parool

rekvisiidid = 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 ('Sisestage e -posti saamine', 'Roomba', 'Roomba on koju naasnud !!', 'imgfromcamera.jpg') % meilikonto saatmiseks

Seejärel on robot valmis.

4. samm: järeldus

Järeldus
Järeldus

Kaasas olev MATLAB programm on eraldatud kogu skriptiga, mida Robotiga kasutati. Lõplikus mustandis sisestage kindlasti kogu kood, välja arvatud lähtestamisetapp, mõnda aega, et veenduda, et kaitserauad töötavad pidevalt. Seda programmi saab muuta vastavalt kasutaja vajadustele. Kuvatakse meie roboti konfiguratsioon.

*Meeldetuletus: ärge unustage, et RoombaInstalli tööriistakasti on vaja selleks, et MATLAB suhelda roboti ja pardal oleva Raspberry Pi -ga.

Soovitan: