Sadržaj:

Roomba Explorer: 4 koraka
Roomba Explorer: 4 koraka

Video: Roomba Explorer: 4 koraka

Video: Roomba Explorer: 4 koraka
Video: ¿Como solucionar el problema cuando la Roomba no carga? Solución en menos de 2 minutos 2023 2024, Novembar
Anonim
Roomba Explorer
Roomba Explorer

Korištenjem MATLAB -a i iRobotovog Create2 robota, ovaj će projekt istražiti različita područja nepoznate lokacije. Mi smo upotrijebili senzore na robotu kako bismo lakše upravljali opasnim terenom. Dobivanjem fotografija i video izvoda 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 projekat trebat će vam

-kompjuter

-najnovija verzija MATLAB -a (za ovaj projekt korištena je MATLAB R2018b)

- roombaInstall toolbox

-iRobotov Create2 robot

-Raspberry Pi sa 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 lakog udarca i fizičke senzore udara, koristeći njihove izlaze da spotaknemo robota da promijeni brzinu i smjer. Kada bilo koji od šest senzora svjetlosnog udara detektira objekt, njihova vrijednost će se smanjiti, uzrokujući smanjenje brzine robota kako bi se izbjegao sudar punom brzinom. Kada se Robot konačno sudari s preprekom, senzori za fizičko udaranje će prijaviti vrijednost veću od nule; zbog toga će se robot zaustaviti, tako da neće biti daljnjih sudara i više funkcija se može provesti u djelo. Za Cliff Sensors oni će očitati svjetlinu područja oko njih. Ako je vrijednost veća od 2800, utvrdili smo da će Robot biti na stabilnom tlu i siguran. Ali, ako je vrijednost manja od 800, senzori litice će otkriti liticu, zaustavljajući se odmah kako ne bi otpali. Utvrđeno je da bilo koja vrijednost između predstavlja vodu i uzrokovat će da Robot prestane s djelovanjem. Korištenjem gore navedenih senzora mijenja se brzina robota omogućavajući nam da bolje utvrdimo postoji li opasnost.

Ispod je kôd (sa MATLAB R2018b)

%% Inicijalizacija

dlgPrompts = {'Roomba broj'};

dlgTitle = 'Odaberite svoju Roombu';

dlgDefaults = {''};

opts. Resize = 'uključeno';

dlgout = inputdlg (dlgPrompts, dlgTitle, 1, dlgDefaults, opts) % Kreirajte prozor koji traži od korisnika da unese svoj broj roombe

n = str2double (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; % dobivaju senzore za lagani udar

lbumpout_1 = ekstrakt polje (s, 'lijevo'); % uzima numeričke vrijednosti senzora i čini ih upotrebljivijim lbumpout_2 = extrafield (s, 'leftFront');

lbumpout_3 = ekstrakt polje (s, 'leftCenter');

lbumpout_4 = extrafield (s, 'rightCenter');

lbumpout_5 = polje ekstrakta (s, 'desno naprijed');

lbumpout_6 = ekstrakt polje (s, 'desno');

lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6] % pretvara vrijednosti u matricu

sLbump = sort (lbout); %sortira 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 = polje ekstrakta (b, 'front')

bsen_4 = polje ekstrakta (b, 'leftWheelDrop')

bsen_5 = polje ekstrakta (b, 'rightWheelDrop')

udarci = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = zbir (kvrge)

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 = polje ekstrakta (c, 'desno naprijed')

litice = [csen_1, csen_2, csen_3, csen_4]

ordcliff = sortiranje (litice)

ako je ordcliff (1) <2750

r.setDriveVelocity (0, 0)

ako je litica <800

disp 'litica'

else

disp 'voda'

kraj

r. TurnAngle (45)

kraj

Korak 2: Dobijanje podataka

Nakon što se aktiviraju fizički senzori udara, Robot će implementirati svoj ugrađeni Raspberry Pi da fotografiše prepreku. Nakon snimanja fotografije, pomoću prepoznavanja teksta, ako na slici ima teksta, Robot će odrediti koja je prepreka, a šta prepreka govori.

img = r.getImage; imshow (img);

imwrite (img, 'imgfromcamera.jpg')

photo = imread ('imgfromcamera.jpg')

ocrRezultati = ocr (fotografija)

priznatText = ocrResults. Text;

figura;

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 i poslat će slike koje je snimio tokom putovanja.

% Slanje e-pošte

setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com');

setpref ('Internet', 'E_mail', '[email protected]'); % mail naloga za slanje sa setpref ('Internet', 'SMTP_Username', 'enter sender email'); % korisničko ime pošiljatelja setpref ('Internet', 'SMTP_Password', 'enter sender password'); % Lozinka pošiljaoca

rekviziti = 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 ('Unesite primajuću e -poštu', 'Roomba', 'Roomba se vratila kući !!', 'imgfromcamera.jpg') % račun e -pošte za slanje na

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čnoj verziji, obavezno stavite sav kôd, osim koraka inicijalizacije, u while petlju kako biste bili sigurni da odbojnici neprestano rade. Ovaj program se može uređivati prema potrebama korisnika. Prikazana je konfiguracija našeg robota.

*Podsjetnik: Ne zaboravite da je roombaInstall set alata potreban za interakciju MATLAB -a s robotom i ugrađenim Raspberry Pi -em.

Preporučuje se: