Cuprins:
- Pasul 1: inițializare și senzori
- Pasul 2: Obținerea datelor
- Pasul 3: Finalizarea misiunii
- Pasul 4: Concluzie
Video: Roomba Explorer: 4 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
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
Î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
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:
Roomba Bot the Bulider: 5 pași (cu imagini)
Roomba Bot the Bulider: Bot the Builder este un roomba, care cu „apucători” atașat la față va putea muta obiecte în jur. Codul cu acesta este setat pentru a înregistra prima mișcare cu o casetă GUI pe care o puteți controla cu doar un clic al mouse-ului. După
Comenzi rapide de la tastatură pentru Internet Explorer !!: 4 pași
Comenzi rapide de la tastatură pentru Internet Explorer !!: Acest instructable vă va arăta câteva comenzi rapide de la tastatură pentru Internet Explorer Vă rugăm să vă abonați la canalul meu
Roomba Scout Explorer: 8 pași
Roomba Scout Explorer: Fiind unul dintre cele mai așteptate și mai cercetate proiecte americane, proiectele Mars rover au devenit realizări umane în producția continuă de sisteme autonome de înaltă tehnologie, cu singurul scop de investigare și integrare
De la Roomba la Rover în doar 5 pași !: 5 pași
De la Roomba la Rover, în doar 5 pași! În acest instructabil, vom detalia cum să convertiți un Roomba simplu într-un rover controlabil care analizează simultan împrejurimile sale. Lista pieselor1.) MATLAB2.) Roomb
Bus Pirate 3EEPROM Explorer Board: 5 pași
Bus Pirate 3EEPROM Explorer Board: Dacă aveți unul dintre Piratii de autobuz Hack a Day, ce faceți cu el? Aflați despre EEPROM-uri cu 1 fir, I2C și SPI cu placa de explorare 3EEPROM (o numim THR-EE-PROM). EEPROM este un tip de cip de memorie care stochează date fără o alimentare continuă