Cuprins:
- Pasul 1: consumabile
- Pasul 2: Declarația de problemă
- Pasul 3: telecomandă Bluetooth
- Pasul 4: Recunoașterea impactului
- Pasul 5: Recunoașterea vieții
- Pasul 6: Rulați-l
Video: Marte Roomba: 6 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
Acest instructable vă va ghida în direcțiile de operare a unui robot aspirator Roomba controlat de Raspberry Pi. Sistemul de operare pe care îl vom folosi este prin MATLAB.
Pasul 1: consumabile
Ce va trebui să strângeți pentru a realiza acest proiect:
- Botul aspiratorului Create2 Roomba iRobot
- Raspberry Pi
- Camera Raspberry Pi
- Cea mai recentă versiune a MATLAB
- Setul de instrumente de instalare Roomba pentru MATLAB
- Aplicație MATLAB pentru un dispozitiv celular
Pasul 2: Declarația de problemă
Ni s-a însărcinat să folosim MATLAB pentru a dezvolta un rover care să poată fi folosit pe Marte pentru a ajuta oamenii de știință să colecteze date despre planetă. Funcțiile pe care le-am abordat în proiectul nostru au fost controlul de la distanță, recunoașterea impactului obiectelor, recunoașterea apei, recunoașterea vieții și procesarea imaginilor. Pentru a realiza aceste fapte, am codat folosind comenzile din cutia de instrumente Roomba pentru a manipula numeroasele funcții ale Create2 Roomba ale iRobot.
Pasul 3: telecomandă Bluetooth
Acest diapozitiv va parcurge codul pentru a controla mișcarea Roomba utilizând funcțiile Bluetooth ale dispozitivului dvs. smartphone. Pentru început, descărcați aplicația MATLAB pe telefonul smartphone și conectați-vă la contul dvs. Mathworks. Odată conectat, accesați „mai multe”, „setări” și conectați-vă la computer utilizând adresa IP a acestuia. După conectare, reveniți la „mai multe” și selectați „senzori”. Apăsați pe al treilea senzor din bara de instrumente de sus a ecranului și atingeți Start. Acum, smartphone-ul dvs. este o telecomandă!
Codul este după cum urmează:
în timp ce 0 == 0
pauză (.5)
PhoneData = M. Orientation;
Azi = PhoneData (1);
Pitch = PhoneData (2);
Side = PhoneData (3);
bumps = r.getBumpers;
dacă Side> 80 || Latura <-80
r.stop
r.beep („C, E, G, C ^, G, E, C”)
pauză
elseif Side> 20 && Side <40
r.turnAngle (-5);
elseif Side> 40
r.turnAngle (-25);
elseif Side-40
r.turnAngle (5);
elseif Side <-40
r.turnAngle (25);
Sfârșit
dacă Pitch> 10 && Pitch <35
r.moveDistance (.03)
elseif Pitch> -35 && Pitch <-10
r.moveDistance (-. 03)
Sfârșit
Sfârșit
Pasul 4: Recunoașterea impactului
O altă funcție pe care am implementat-o a fost să detectăm impactul Roomba într-un obiect și apoi să-i corectăm calea curentă. Pentru a face acest lucru, a trebuit să folosim condiționate cu citirile de la senzorii barei de protecție pentru a determina dacă a fost lovit un obiect. Dacă robotul lovește un obiect, se va întoarce înapoi.2 metri și se va roti la un unghi determinat de bara de protecție. Odată ce un element a fost lovit, apare un meniu care afișează cuvântul „oof”.
Codul este prezentat mai jos:
în timp ce 0 == 0
bumps = r.getBumpers;
r.setDriveVelocity (.1)
dacă bumps.left == 1
msgbox ('Oof!');
r.moveDistance (-0,2)
r.setTurnVelocity (.2)
r.turnAngle (-35)
r.setDriveVelocity (.2)
elseif bumps.front == 1
msgbox ('Oof!');
r.moveDistance (-0,2)
r.setTurnVelocity (.2)
r.turnAngle (90)
r.setDriveVelocity (.2)
elseif bumps.right == 1
msgbox ('Oof!');
r.moveDistance (-0,2)
r.setTurnVelocity (.2)
r.turnAngle (35)
r.setDriveVelocity (.2)
elseif bumps.leftWheelDrop == 1
msgbox ('Oof!');
r.moveDistance (-0,2)
r.setTurnVelocity (.2)
r.turnAngle (-35)
r.setDriveVelocity (.2)
elseif bumps.rightWheelDrop == 1
msgbox ('Oof!');
r.moveDistance (-0,2)
r.setTurnVelocity (.2)
r.turnAngle (35)
r.setDriveVelocity (.2)
Sfârșit
Sfârșit
Pasul 5: Recunoașterea vieții
Am codificat un sistem de recunoaștere a vieții pentru a citi culorile obiectelor din fața sa. Cele trei tipuri de viață pentru care am codificat sunt plantele, apa și extratereștrii. Pentru a face acest lucru, am codificat senzorii pentru a calcula valorile medii ale roșu, albastru, verde sau alb. Aceste valori au fost comparate cu pragurile care au fost setate manual pentru a determina culoarea la care se uită camera. Codul ar trasa, de asemenea, calea către obiect și crearea unei hărți.
Codul este după cum urmează:
t = 10;
i = 0;
în timp ce t == 10
img = r.getImage; imshow (img)
pauză (0,167)
i = i + 1;
red_mean = medie (medie (img (:,:, 1)));
blue_mean = medie (medie (img (:,:, 3))));
green_mean = medie (medie (img (:,:, 2)));
white_mean = (blue_mean + green_mean + red_mean) / 3; % doresc acest val aproximativ 100
nine_plus_ten = 21;
prag_verd = 125;
prag_albastru = 130;
prag_alb = 124;
prag_roșu = 115;
în timp ce nine_plus_ten == 21% verde - viață
dacă green_mean> green_threshold && blue_mean <blue_threshold && red_mean <red_threshold
r.moveDistance (-. 1)
a = msgbox („posibilă sursă de viață găsită, locație trasată”);
pauză (2)
șterge (a)
[y2, Fs2] = audioread ('z_speak2.wav');
sunet (y2, Fs2)
pauză (2)
% plant = r.getImage; % imshow (plantă);
% save ('plant_img.mat', plant ');
% locația parcelei în verde
i = 5;
pauză
altceva
nine_plus_ten = 19;
Sfârșit
Sfârșit
nine_plus_ten = 21;
în timp ce nine_plus_ten == 21% albastru - woder
if blue_mean> blue_threshold && green_mean <green_threshold && white_mean <white_threshold && red_mean <red_threshold
r.moveDistance (-. 1)
a = msgbox („a fost găsită o sursă de apă, locația trasată”);
pauză (2)
șterge (a)
[y3, Fs3] = audioread ('z_speak3.wav');
sunet (y3, Fs3);
% woder = r.getImage; % imshow (woder)
% save ('water_img.mat', woder)
% locația parcelei în albastru
i = 5;
pauză
altceva
nine_plus_ten = 19;
Sfârșit
Sfârșit
nine_plus_ten = 21;
în timp ce nine_plus_ten == 21% alb - extratereștri monkaS
dacă white_mean> white_threshold && blue_mean <blue_threshold && green_mean <green_threshold
[y5, Fs5] = audioread ('z_speak5.wav');
sunet (y5, Fs5);
pauză (3)
r.setDriveVelocity (0,.5)
[ys, Fss] = audioread ('z_scream.mp3');
sunet (ys, Fss);
pauză (3)
r.stop
% alien = r.getImage; % imshow (extraterestru);
% save ('alien_img.mat', extraterestru);
i = 5;
pauză
altceva
nine_plus_ten = 19;
Sfârșit
Sfârșit
dacă i == 5
a = 1; % viraj unghi
t = 9; % termină bucla mare
i = 0;
Sfârșit
Sfârșit
Pasul 6: Rulați-l
După ce a fost scris tot codul, combinați-le într-un singur fișier și voila! Botul dvs. Roomba va fi acum complet funcțional și va funcționa așa cum este publicat! Cu toate acestea, controlul Bluetooth trebuie să fie fie într-un fișier separat, fie separat de restul codului cu %%.
Bucurați-vă de utilizarea robotului dvs. !!
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ă
Roomba controlată MATLAB: 5 pași
MATLAB Controlled Roomba: Scopul acestui proiect este de a utiliza MATLAB, precum și un robot programabil iRobot modificat. Grupul nostru a combinat abilitățile noastre de codificare pentru a crea un script MATLAB care utilizează multe funcții ale iRobot, inclusiv senzorii de stâncă, sensul barei de protecție
Robot de recunoaștere pe Marte: 4 pași
Mars Reconnaissance Robot: Acest instructabil este un ghid pas cu pas pentru programarea și comanda robotului Mars Reconnaissance. Pentru a începe, trebuie să obțineți lista următoarelor materiale: Un iRobot încărcat creat personalizat de Tickle College of Eningeering Univerisity of Ten
Fabricat din Marte: 9 pași
Fabricat din Marte: Acest proiect a început ca o provocare de proiectare când prietenul meu, J.R. Skok (geolog planetar la Institutul SETI), mi-a furnizat o grămadă de țesături bazaltice pentru a face ceva la modă. Aceste țesături au fost realizate din lavă vulcanică, care a fost extrasă, topită
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