Cuprins:

Roomba Explorer: 4 pași
Roomba Explorer: 4 pași

Video: Roomba Explorer: 4 pași

Video: Roomba Explorer: 4 pași
Video: ¿Como solucionar el problema cuando la Roomba no carga? Solución en menos de 2 minutos 2023 2024, Noiembrie
Anonim
Roomba Explorer
Roomba Explorer

Prin utilizarea MATLAB și a robotului Create2 iRobot, acest proiect va explora diferite zone ale unei locații necunoscute. Am folosit senzorii de pe robot pentru a ajuta la manevrarea unui teren periculos. Obținând fotografii și fluxuri video de la un Raspberry Pi atașat, am putut determina obstacolele cu care se va confrunta robotul și vor fi clasificate.

Piese și materiale

Pentru acest proiect, veți avea nevoie

-un calculator

-Noua versiune a MATLAB (MATLAB R2018b a fost folosit pentru acest proiect)

- roombaInstall toolbox

Robotul Create2 -iRobot

-Raspberry Pi cu cameră

Pasul 1: inițializare și senzori

Inițializare și senzori
Inițializare și senzori

Înainte de a începe orice programare, am descărcat setul de instrumente roombaInstall, care a permis accesul la diferite componente ale robotului.

Inițial, am creat un GUI pentru a inițializa orice robot. Pentru a face acest lucru, trebuie să introduceți numărul robotului ca intrare. Acest lucru va permite accesul pentru a rula programul nostru la robot. Am lucrat la obținerea robotului de a manevra prin numeroasele terenuri pe care le-ar întâlni. Am implementat senzorii Cliff, Light Bump Sensors și Physical Bump Sensors, folosind ieșirile lor pentru a declanșa robotul pentru a-i schimba viteza și direcția. Atunci când oricare dintre cei șase senzori Light Bump detectează un obiect, valoarea pe care o emit va scădea, determinând scăderea vitezei robotului pentru a evita o coliziune la viteză maximă. Când robotul se ciocnește în cele din urmă cu un obstacol, senzorii Physical Bump vor raporta o valoare mai mare decât zero; din această cauză, robotul se va opri, deci nu vor mai exista coliziuni și mai multe funcții pot fi puse în acțiune. Pentru senzorii Cliff, aceștia vor citi strălucirea zonei din jurul lor. Dacă valoarea este mai mare de 2800, am stabilit că robotul va fi pe un teren stabil și sigur. Dar, dacă valoarea este mai mică de 800, senzorii Cliff vor detecta o stâncă, oprindu-se imediat pentru a nu cădea. Orice valoare intermediară a fost determinată să reprezinte apa și va determina Robotul să-și oprească acțiunea. Prin utilizarea senzorilor de mai sus, viteza robotului este modificată, permițându-ne să determinăm mai bine dacă există vreun pericol.

Mai jos este codul (din MATLAB R2018b)

Inițializare %%

dlgPrompts = {'Roomba Number'};

dlgTitle = 'Selectează-ți camera';

dlgDefaults = {''};

opts. Resize = 'on';

dlgout = inputdlg (dlgPrompts, dlgTitle, 1, dlgDefaults, opts)% Creați fereastră care solicită utilizatorului să introducă numărul camerei sale

n = str2double (dlgout {1});

r = roomba (n); % Inițializează Roomba %% determinat de utilizator Determinarea vitezei de la senzorii Light Bump în timp ce adevărat s = r.getLightBumpers; % obțineți senzori de umflare ușoară

lbumpout_1 = extractfield (s, 'stânga'); % ia valorile numerice ale senzorilor și le face mai ușor de utilizat lbumpout_2 = extractfield (s, 'leftFront');

lbumpout_3 = extractfield (s, 'leftCenter');

lbumpout_4 = extractfield (s, 'rightCenter');

lbumpout_5 = extractfield (s, 'dreaptaFront');

lbumpout_6 = extractfield (s, 'dreapta');

lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6]% convertește valorile în matrice

sLbump = sort (lbout); % sortează matricea la cea mai mică valoare poate fi extrasă

lowLbump = sLbump (1); speed =.05 + (lowLbump) *. 005% folosind cea mai mică valoare, care reprezintă obstacole apropiate, pentru a determina viteza, viteza mai mare atunci când nu este detectat nimic

r.setDriveVelocity (viteză, viteză)

Sfârșit

% Tampoane fizice

b = r.getBumpers; % Ieșire adevărată, falsă

bsen_1 = extractfield (b, 'stânga')

bsen_2 = extractfield (b, 'dreapta')

bsen_3 = extractfield (b, „față”)

bsen_4 = extractfield (b, 'leftWheelDrop')

bsen_5 = extractfield (b, 'rightWheelDrop')

bumps = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = suma (bums)

dacă tbump> 0 r.setDriveVelocity (0, 0)

Sfârșit

% Senzori Cliff

c = r.getCliffSensors %% 2800 sigur, altfel apă

csen_1 = extractfield (c, 'stânga')

csen_2 = extractfield (c, 'dreapta')

csen_3 = extractfield (c, 'leftFront')

csen_4 = extractfield (c, 'dreaptaFront')

stânci = [csen_1, csen_2, csen_3, csen_4]

ordcliff = sortare (stânci)

dacă ordcliff (1) <2750

r.setDriveVelocity (0, 0)

dacă stâncă <800

disp "stâncă"

altceva

disp "apa"

Sfârșit

r. TurnAngle (45)

Sfârșit

Pasul 2: Obținerea datelor

După ce senzorii de lovire fizică sunt declanșați, robotul își va implementa Raspberry Pi la bord pentru a face o fotografie a obstacolului. După realizarea unei fotografii, folosind recunoașterea textului dacă există text în imagine, robotul va determina care este obstacolul și ce spune obstacolul.

img = r.getImage; imshow (img);

imwrite (img, 'imgfromcamera.jpg')

photo = imread ('imgfromcamera.jpg')

ocrResults = ocr (foto)

recunoscutText = ocrResults. Text;

figura;

imshow text (foto) (220, 0, Text recunoscut, „BackgroundColor”, [1 1 1]);

Pasul 3: Finalizarea misiunii

Când robotul stabilește că obstacolul este ACASĂ, își va finaliza misiunea și va rămâne acasă. După finalizarea misiunii, robotul va trimite un e-mail de alertă că s-a întors acasă și va trimite imaginile pe care le-a făcut de-a lungul călătoriei sale.

% Trimiterea e-mailului

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

setpref („Internet”, „E-mail”, „[email protected]”); % cont de e-mail de trimis de la setpref („Internet”, „SMTP_Username”, „introduceți emailul expeditorului”); % senders username setpref ('Internet', 'SMTP_Password', 'introduceți parola expeditorului'); Parola% expeditori

props = 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 („Introduceți e-mailul de primire”, „Roomba”, „Roomba s-a întors acasă !!”, „imgfromcamera.jpg”)% cont de e-mail pentru a trimite

Robotul este apoi terminat.

Pasul 4: Concluzie

Concluzie
Concluzie

Programul MATLAB inclus este separat de întregul script care a fost utilizat cu robotul. În schița finală, asigurați-vă că puneți tot codul, cu excepția pasului de inițializare, într-o buclă de timp pentru a vă asigura că bare de protecție rulează constant. Acest program poate fi editat pentru a se potrivi nevoilor utilizatorului. Este afișată configurația robotului nostru.

* Memento: Nu uitați că este necesară caseta de instrumente roombaInstall pentru ca MATLAB să interacționeze cu robotul și cu Raspberry Pi la bord.

Recomandat: