Sadržaj:

Roomba Explorer: 4 koraka
Roomba Explorer: 4 koraka

Video: Roomba Explorer: 4 koraka

Video: Roomba Explorer: 4 koraka
Video: Разница Чечни с Дагестаном. 2024, Studeni
Anonim
Roomba Explorer
Roomba Explorer

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

Inicijalizacija i senzori
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

Zaključak
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: