Sadržaj:
- Korak 1: Inicijalizacija i senzori
- Korak 2: Dobivanje podataka
- Korak 3: Završna misija
- Korak 4: Zaključak
Video: Roomba Explorer: 4 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:36
Korištenjem MATLAB -a i iRobotovog Create2 robota, ovaj će projekt istražiti različita područja nepoznate lokacije. Zaposlili smo senzore na Robotu kako bismo lakše upravljali opasnim terenom. Dobivanjem fotografija i video feeda iz Raspberry Pi -a koji je u privitku uspjeli smo odrediti prepreke s kojima će se Robot suočiti i one će biti klasificirane.
Dijelovi i materijali
Za ovaj projekt trebat će vam
-Računalo
-najnovija verzija MATLAB -a (za ovaj projekt korištena je MATLAB R2018b)
- roombaInstalirajte okvir s alatima
-iRobotov Create2 robot
-Raspberry Pi s kamerom
Korak 1: Inicijalizacija i senzori
Prije početka bilo kakvog programiranja, preuzeli smo roombaInstall toolbox, koji je omogućio pristup različitim komponentama robota.
U početku smo stvorili GUI za inicijalizaciju bilo kojeg robota. Da biste to učinili, morate unijeti broj robota kao unos. To će omogućiti pristup pokretanju našeg programa robotu. Radili smo na tome da Robot manevrira kroz mnoge terene na koje bi naišao. Implementirali smo senzore litice, senzore svjetlosnog udara i fizičke osjetnike udara, koristeći njihove izlaze da spotaknemo robota da promijeni brzinu i smjer. Kada bilo koji od šest senzora svjetlosnog udara detektira objekt, njihova se vrijednost smanjuje, što dovodi do smanjenja brzine robota kako bi se izbjegao sudar punom brzinom. Kad se Robot konačno sudari s preprekom, osjetnici Physical Bump izvijestit će vrijednost veću od nule; zbog toga će se Robot zaustaviti, pa neće doći do daljnjih sudara i može se provesti više funkcija. Za Cliff Sensors oni će očitati svjetlinu područja oko sebe. Ako je vrijednost veća od 2800, utvrdili smo da će Robot biti na stabilnom tlu i siguran. No, ako je vrijednost manja od 800, senzori litice će otkriti liticu, odmah će prestati kako ne bi otpali. Utvrđeno je da bilo koja vrijednost između predstavlja vodu i učinit će da Robot prestane s djelovanjem. Korištenjem gornjih senzora mijenja se brzina robota omogućujući nam da bolje utvrdimo postoji li opasnost.
Dolje je kôd (iz MATLAB -a R2018b)
%% Inicijalizacija
dlgPrompts = {'Roomba broj'};
dlgTitle = 'Odaberite svoju Roombu';
dlgDefaults = {''};
opts. Resize = 'uključeno';
dlgout = inputdlg (dlgPrompts, dlgTitle, 1, dlgDefaults, opts) % Izradi prozor koji traži od korisnika da unese svoj broj roombe
n = str2dvostruki (dlgout {1});
r = roomba (n); % Pokreće Roombu koju je korisnik odredio %% Određivanje brzine iz Light Bump senzora dok je true s = r.getLightBumpers; % dobiti svjetlosne senzore
lbumpout_1 = polje ekstrakta (s, 'lijevo'); % uzima numeričke vrijednosti senzora i čini ih upotrebljivijima lbumpout_2 = Extractfield (s, 'leftFront');
lbumpout_3 = polje ekstrakta (s, 'leftCenter');
lbumpout_4 = ekstrakt polje (s, 'rightCenter');
lbumpout_5 = ekstrakcijsko polje (s, 'desno naprijed');
lbumpout_6 = ekstrakcijsko polje (s, 'desno');
lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6] % pretvara vrijednosti u matricu
sLbump = sort (lbout); %razvrstava matricu prema najnižoj vrijednosti
lowLbump = sLbump (1); brzina = 0,05+(lowLbump)*. 005 %koristeći najnižu vrijednost, koja predstavlja bliske prepreke, za određivanje brzine, veću brzinu kada ništa nije otkriveno
r.setDriveVelocity (brzina, brzina)
kraj
% Fizički odbojnici
b = r.getBumpers; %Izlaz true, false
bsen_1 = polje ekstrakta (b, 'lijevo')
bsen_2 = polje ekstrakta (b, 'desno')
bsen_3 = ekstrakcijsko polje (b, 'sprijeda')
bsen_4 = ekstrakcijsko polje (b, 'leftWheelDrop')
bsen_5 = ekstrakcijsko polje (b, 'rightWheelDrop')
udarci = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = zbroj (kvrga)
ako je tbump> 0 r.setDriveVelocity (0, 0)
kraj
% Senzori za litice
c = r.getCliffSensors %% 2800 siguran, inače voda
csen_1 = polje ekstrakta (c, 'lijevo')
csen_2 = polje ekstrakta (c, 'desno')
csen_3 = polje ekstrakta (c, 'leftFront')
csen_4 = ekstrakcijsko polje (c, 'desno naprijed')
litice = [csen_1, csen_2, csen_3, csen_4]
ordcliff = sortiraj (hridi)
ako je ordcliff (1) <2750
r.setDriveVelocity (0, 0)
ako je litica <800
disp 'litica'
drugo
disp 'voda'
kraj
r. TurnAngle (45)
kraj
Korak 2: Dobivanje podataka
Nakon što se aktiviraju fizički senzori udara, Robot će implementirati svoj ugrađeni Raspberry Pi da fotografira prepreku. Nakon što fotografira, koristeći prepoznavanje teksta ako na slici ima teksta, Robot će odrediti koja je prepreka, a što prepreka govori.
img = r.getImage; imshow (img);
imwrite (img, 'imgfromcamera.jpg')
photo = imread ('imgfromcamera.jpg')
ocrRezultati = ocr (fotografija)
prepoznatiText = ocrResults. Text;
lik;
imshow (fotografija) tekst (220, 0, priznatText, 'Pozadinska boja', [1 1 1]);
Korak 3: Završna misija
Kada Robot utvrdi da je prepreka DOMA, dovršit će svoju misiju i ostati kod kuće. Nakon završetka misije, Robot će poslati e-poštom upozorenje da se vratio kući, te će poslati slike koje je snimio tijekom putovanja.
% Slanje e-pošte
setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com');
setpref ('Internet', 'E_mail', '[email protected]'); % e -mail računa za slanje sa setpref ('Internet', 'SMTP_Username', 'enter e -mail pošiljatelja'); % korisničko ime pošiljatelja setpref ('Internet', 'SMTP_Password', 'enter sender password'); % Lozinka pošiljatelja
rekviziti = java.lang. System.getProperties; props.setProperty ('mail.smtp.auth', 'istina'); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.port', '465');
sendmail ('Unesite primajuću e -poštu', 'Roomba', 'Roomba se vratila kući !!', 'imgfromcamera.jpg') % mail račun za slanje
Robot je tada gotov.
Korak 4: Zaključak
Uključeni program MATLAB odvojen je od cijele skripte koja je korištena s robotom. U konačnom nacrtu, obavezno stavite sav kôd, osim koraka inicijalizacije, u while petlju kako biste bili sigurni da odbojnici neprestano rade. Ovaj se program može uređivati prema potrebama korisnika. Prikazana je konfiguracija našeg robota.
*Podsjetnik: Ne zaboravite da je roombaInstall alatni okvir potreban za interakciju MATLAB -a s Robotom i ugrađenim Raspberry Pi -em.
Preporučeni:
Roomba Bot Bulider: 5 koraka (sa slikama)
Roomba Bot the Bulider: Bot the Builder je roomba koja sa " grabilicama " pričvršćen sprijeda moći će pomicati objekte. Kôd s njim postavljen je tako da bilježi prvi pomak s grafičkim okvirom koji možete kontrolirati samo jednim klikom miša. Afte
Tipkovni prečaci za Internet Explorer !!: 4 koraka
Tipkovni prečaci za Internet Explorer !!: Ovaj Instructable pokazat će vam neke korisne tipkovne prečace za Internet Explorer. Pretplatite se na moj kanalHvala
Roomba Roomba upravljani preglednikom s Raspberry Pi modelom 3 A+: 6 koraka (sa slikama)
Roomba Roomba upravljani preglednikom robot s modelom Raspberry Pi 3 A+: pregledOva instrukcija će se usredotočiti na to kako mrtvoj Roombi dati novi mozak (Raspberry Pi), oči (web kamera) i način da kontrolirate sve iz web preglednika. Postoji mnogo Roomba hakova koji omogućuju kontrolu putem serijskog sučelja. Nisam
Roomba Scout Explorer: 8 koraka
Roomba Scout Explorer: Kao jedan od najočekivanijih i intenzivno istraživanih američkih projekata, projekti rovera Mars postali su ljudska dostignuća u sve naprednijoj proizvodnji visokotehnoloških autonomnih sustava s jedinom svrhom istraživanja i inte
Bus Pirate 3EEPROM Explorer ploča: 5 koraka
Bus Pirate 3EEPROM Explorer Board: Ako imate jednog od Hack a Day's Bus Pirates, što ćete s njim učiniti? Saznajte više o 1-žičnim, I2C i SPI EEPROM-ovima s istraživačkom pločom 3EEPROM (nazivamo je THR-EE-PROM). EEPROM je vrsta memorijskog čipa koji pohranjuje podatke bez kontinuiranog napajanja