Sisukord:
- Samm: lähtestamine ja andurid
- 2. samm: andmete hankimine
- 3. samm: missiooni lõpetamine
- 4. samm: järeldus
Video: Roomba Explorer: 4 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
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
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
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:
Roomba muutmine Mars Roveriks: 5 sammu
Oma Roomba muutmine Mars Roveriks:
Roomba Bot the Bulider: 5 sammu (koos piltidega)
Roomba Bot the Bulider: Bot the Builder on roomba, mis koos " grabbers " esiosa külge kinnitatud saab objekte ringi liigutada. Sellega kood on seatud salvestama esimest liikumist graafilise kasutajaliidese kastiga, mida saate juhtida vaid hiireklõpsuga. Pärast
MATLABi juhitav Roomba: 5 sammu
MATLAB -i juhitav Roomba: Selle projekti eesmärk on kasutada MATLAB -i ja modifitseeritud programmeeritavat iRoboti robotit. Meie rühm ühendas meie kodeerimisoskused, et luua MATLAB -skript, mis kasutab paljusid iRoboti funktsioone, sealhulgas kaljuandureid, kaitseraua sensorit
Roomba Scout Explorer: 8 sammu
Roomba Scout Explorer: Üheks kõige oodatumaks ja põhjalikumalt uuritud Ameerika projektiks on Marsi roveriprojektidest saanud inimlikud saavutused kõrgtehnoloogiliste autonoomsete süsteemide üha edenevas tootmises, mille ainus eesmärk on uurida
Bussipiraat 3EEPROM Explorer Board: 5 sammu
Bussipiraat 3EEPROM Explorer Board: Kui teil on üks Hack a Day's Bus Pirates, mida te sellega teete? Tutvuge 1-juhtmeliste, I2C- ja SPI-EEPROM-idega 3EEPROM-i uurimisplaadiga (nimetame seda THR-EE-PROMiks). EEPROM on teatud tüüpi mälukiip, mis salvestab andmeid ilma pideva toiteallikata