Kazalo:

Roomba Explorer: 4 koraki
Roomba Explorer: 4 koraki

Video: Roomba Explorer: 4 koraki

Video: Roomba Explorer: 4 koraki
Video: Дэниел Шмахтенбергер: Уничтожат ли нас технологии? 2024, Julij
Anonim
Roomba Explorer
Roomba Explorer

Ta projekt bo z uporabo MATLAB -a in iRobotovega robota Create2 raziskal različna področja neznane lokacije. Na robotu smo uporabili senzorje za lažje manevriranje po nevarnem terenu. S pridobljenimi fotografijami in video posnetki iz priloženega Raspberry Pi smo lahko določili ovire, s katerimi se bo Robot soočil, in bodo razvrščene.

Deli in materiali

Za ta projekt boste potrebovali

-Računalnik

-najnovejša različica programa MATLAB (za ta projekt je bil uporabljen MATLAB R2018b)

- roombaInstall toolbox

-iRobotov robot Create2

-Raspberry Pi s kamero

1. korak: Inicializacija in senzorji

Inicializacija in senzorji
Inicializacija in senzorji

Pred začetkom programiranja smo prenesli orodno zbirko roombaInstall, ki je omogočala dostop do različnih komponent robota.

Sprva smo ustvarili grafični vmesnik za inicializacijo katerega koli robota. Če želite to narediti, morate kot vnos vnesti številko robota. To bo omogočilo dostop za izvajanje našega programa do robota. Delali smo na tem, da bi Robot manevriral po številnih terenih, na katere bi naletel. Uvedli smo senzorje Cliff, Light Bump Sensors in Physical Bump Sensors, tako da smo z njihovimi izhodi pognali robota, da bi spremenil njegovo hitrost in / ali smer. Ko kateri koli od šestih senzorjev svetlobnih udarcev zazna predmet, se njegova vrednost zmanjša, zaradi česar se hitrost robota zmanjša, da se prepreči trk pri polni hitrosti. Ko robot končno trči v oviro, bodo senzorji fizičnega udarca poročali o vrednosti, večji od nič; zaradi tega se bo robot ustavil, zato ne bo več trkov in več funkcij je mogoče uresničiti. Za Cliff Sensors bodo prebrali svetlost območja okoli sebe. Če je vrednost večja od 2800, smo ugotovili, da bo robot na stabilnih tleh in varen. Če pa je vrednost manjša od 800, bodo senzorji pečine zaznali pečino in se takoj ustavili, da ne bi padli. Ugotovljeno je bilo, da vsaka vmesna vrednost predstavlja vodo in bo povzročila, da bo robot prenehal delovati. Z uporabo zgornjih senzorjev se hitrost robota spremeni, kar nam omogoča, da bolje ugotovimo, ali obstaja nevarnost.

Spodaj je koda (iz MATLAB R2018b)

%% Inicializacija

dlgPrompts = {'Število Roombe'};

dlgTitle = 'Izberite svojo Roombo';

dlgDefaults = {''};

opts. Resize = 'vklopljeno';

dlgout = inputdlg (dlgPrompts, dlgTitle, 1, dlgDefaults, opts) % Ustvari okno, ki uporabnika pozove, da vnese svojo številko roombe

n = str2double (dlgout {1});

r = roomba (n); % Inicializira uporabniško določeno Roombo %% določitev hitrosti iz senzorjev svetlobe, medtem ko je true s = r.getLightBumpers; % dobite senzorje lahkih udarcev

lbumpout_1 = izvlečno polje (s, 'levo'); % vzame številske vrednosti senzorjev in jih naredi bolj uporabne lbumpout_2 = extrafield (s, 'leftFront');

lbumpout_3 = izvlečno polje (s, 'leftCenter');

lbumpout_4 = izvlečno polje (s, 'rightCenter');

lbumpout_5 = izvlečno polje (s, 'desno spredaj');

lbumpout_6 = izvlečno polje (s, 'desno');

lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6] % pretvori vrednosti v matriko

sLbump = sort (lbout); %razvrsti matriko na najnižjo vrednost

lowLbump = sLbump (1); hitrost = 0,05+(lowLbump)*. 005 %z uporabo najnižje vrednosti, ki predstavlja bližnje ovire, za določitev hitrosti, večjo hitrost, ko nič ne zazna

r.setDriveVelocity (hitrost, hitrost)

konec

% Fizični odbijači

b = r.getBumpers; %Izhod true, false

bsen_1 = izvlečno polje (b, 'levo')

bsen_2 = izvlečno polje (b, 'desno')

bsen_3 = izvlečno polje (b, 'spredaj')

bsen_4 = izvlečno polje (b, 'leftWheelDrop')

bsen_5 = izvlečno polje (b, 'rightWheelDrop')

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

če je tbump> 0 r.setDriveVelocity (0, 0)

konec

% Senzorji pečine

c = r.getCliffSensors %% 2800 varno, drugače voda

csen_1 = izvlečno polje (c, 'levo')

csen_2 = izvlečno polje (c, 'desno')

csen_3 = izvlečno polje (c, 'leftFront')

csen_4 = izvlečno polje (c, 'rightFront')

pečine = [csen_1, csen_2, csen_3, csen_4]

ordcliff = razvrsti (pečine)

če je ordcliff (1) <2750

r.setDriveVelocity (0, 0)

če je pečina <800

disp 'cliff'

drugače

disp 'voda'

konec

r. TurnAngle (45)

konec

2. korak: Pridobivanje podatkov

Ko se sprožijo fizični senzorji udarcev, bo Robot na krovu vgradil Raspberry Pi, da bo fotografiral oviro. Po fotografiranju in prepoznavanju besedila, če je na sliki besedilo, bo Robot ugotovil, kaj je ovira in kaj pove.

img = r.getImage; imshow (img);

imwrite (img, 'imgfromcamera.jpg')

photo = imread ('imgfromcamera.jpg')

ocrResults = ocr (fotografija)

priznanText = ocrResults. Text;

slika;

imshow (fotografija) besedilo (220, 0, prepoznanoText, 'Barva ozadja', [1 1 1]);

3. korak: zaključna misija

Ko robot ugotovi, da je ovira DOMA, bo dokončal svoje poslanstvo in ostal doma. Po končani misiji bo Robot po e-pošti poslal opozorilo, da se je vrnil domov, in poslal slike, ki jih je vzel med potovanjem.

% Pošiljanje e-pošte

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

setpref ('Internet', 'E_mail', '[email protected]'); % poštnega računa za pošiljanje iz setpref ('Internet', 'SMTP_Username', 'enter e -mail pošiljatelja'); % uporabnikov pošiljateljev setpref ('Internet', 'SMTP_Password', 'enter geslo pošiljatelja'); % Geslo pošiljatelja

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 ('Vnesite prejeto e -pošto', 'Roomba', 'Roomba se je vrnila domov !!', 'imgfromcamera.jpg') % e -poštni račun za pošiljanje

Robot je nato končan.

4. korak: Zaključek

Zaključek
Zaključek

Vključeni program MATLAB je ločen od celotnega skripta, ki je bil uporabljen z robotom. V končnem osnutku vse kode, razen koraka inicializacije, vstavite v zanko while, da se prepričate, da odbijači nenehno delujejo. Ta program lahko uredite tako, da ustreza potrebam uporabnika. Prikazana je konfiguracija našega robota.

*Opomnik: Ne pozabite, da je orodje roombaInstall potrebno za interakcijo MATLAB -a z robotom in vgrajenim Raspberry Pi.

Priporočena: