Sadržaj:

MATLAB kontrolirana Roomba: 5 koraka
MATLAB kontrolirana Roomba: 5 koraka

Video: MATLAB kontrolirana Roomba: 5 koraka

Video: MATLAB kontrolirana Roomba: 5 koraka
Video: Серия видео IJARS: Интервью профессора Питера Корка, июнь (2014 г.) 2024, Srpanj
Anonim
MATLAB kontrolirana Roomba
MATLAB kontrolirana Roomba
MATLAB kontrolirana Roomba
MATLAB kontrolirana Roomba

Cilj ovog projekta je korištenje MATLAB -a, kao i modificiranog iRobot programabilnog robota. Naša grupa kombinirala je naše vještine kodiranja kako bi stvorila MATLAB skriptu koja koristi mnoge funkcije iRobota, uključujući senzore litice, senzore odbojnika, svjetlosne senzore i kameru. Očitavanja senzora i kamere koristili smo kao ulaze, što nam je omogućilo da stvorimo određene izlaze koje želimo pomoću funkcija i petlji MATLAB koda. Mobilni uređaj i žiroskop MATLAB također koristimo kao način povezivanja s iRobotom i njegove kontrole.

Korak 1: Dijelovi i materijali

Dijelovi i materijali
Dijelovi i materijali
Dijelovi i materijali
Dijelovi i materijali
Dijelovi i materijali
Dijelovi i materijali
Dijelovi i materijali
Dijelovi i materijali

MATLAB 2018a

-Matlab verzija za 2018. najpopularnija je verzija, ponajviše zato što najbolje radi s kodom koji se povezuje s mobilnim uređajem. Međutim, većina našeg koda može se tumačiti u većini verzija MATLAB -a.

iRobot Create Device

-Ovaj uređaj je posebno napravljen uređaj čija je jedina namjena programiranje i kodiranje. (To nije stvarni vakuum)

Raspberry Pi (s kamerom)

- Ovo je skupo računalo koje radi kao mozak iRobota. Možda je mali, ali je sposoban za mnoge stvari. Kamera je dodatni dodatak. Također koristi maline pi za dobivanje svih svojih funkcija i naredbi. Gore prikazana kamera postavljena je na 3D ispisani stalak, koji su izradili odjeli Engineering Fundamentals na Sveučilištu Tennessee

Korak 2: Datoteka baze podataka Roomba

Roomba datoteka baze podataka
Roomba datoteka baze podataka

Postoji glavna datoteka koja će vam trebati za korištenje odgovarajućih funkcija i naredbi za vašu roombu. Ova datoteka je mjesto gdje ste napisali funkcije za crtanje koda kako biste upravljanjem svojom roombom učinili lakšim upravljanje.

Datoteku možete preuzeti na ovoj poveznici ili u nastavku za preuzimanje

ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php

Korak 3: Povezivanje s Roombom

Prvo morate provjeriti je li vaš robot spojen na vašu malinu pi ploču pomoću mikro USB priključka. Zatim morate ispravno spojiti računalo i robota na isti WiFi. Nakon što to učinite, možete uključiti robota i povezati se s njim pomoću zadane naredbe u datoteci baze podataka robota. (Uvijek tvrdo resetirajte robota prije i nakon upotrebe). Na primjer, koristimo naredbu "r.roomba (19)" za povezivanje s našim robotom, dodjeljujući varijablu r našem uređaju. To se odnosi na datoteku baze podataka, koja postavlja našu varijablu kao strukturu na koju se možemo pozvati u bilo kojem trenutku.

Korak 4: Kôd

Kod
Kod
Kod
Kod

U nastavku smo priložili cijeli kôd, ali ovdje je kratak pregled koji ističe važne elemente u našem scenariju. Koristili smo sve senzore, kao i kameru kako bismo maksimalno iskoristili potencijal našeg robota. Uključili smo i kôd koji nam je omogućio povezivanje mobilnog uređaja s našim robotom i korištenje njegovog grioskopa za ručno upravljanje.

Počeli smo s jednostavnom naredbom "r.setDriveVelocity (.06)" koja postavlja brzinu kretanja robota naprijed na.06 m/s. Ovo je samo da bi se robot prethodno pokrenuo

Zatim se naša glavna skripta pokreće s while petljom koja dohvaća podatke datog robota stvaranjem struktura koje možemo referencirati i koristiti u dolje navedenim uvjetnim izrazima, što nam omogućuje da kažemo robotu da izvrši određenu naredbu na temelju podataka o strukturi robot čita sa svojim senzorima. Postavili smo ga tako da robot čita senzore litice i slijedi crnu putanju

dok true % while petlja ide sve dok se ne dogodi nešto "false" (u ovom slučaju ide beskonačno) data = r.getCliffSensors; data2 = r.getBumpers; % kontinuirano dohvaća podatke o vrijednostima senzora litice i dodjeljuje ih varijabli % img = r.getImage; % Snima sliku s montirane kamere % image (img); % Prikazuje snimljenu sliku % red_mean = mean (mean (img (:,:, 1))); % Uzima prosječnu vrijednost za zelenu boju ako je data.rightFront <2000 r.turnAngle (-2); % okreće Roombu za približno 0,2 stupnja CW nakon što vrijednost za desne prednje senzore litice padne ispod 2000 r.setDriveVelocity (, 05); elseif data.leftFront data.leftFront && 2000> data.rightFront r.moveDistance (.1); % govori Roombi da nastavi ići naprijed pri približno 0,2 m/s ako obje vrijednosti s desnog prednjeg i lijevog prednjeg osjetnika padnu ispod 2000 % r.turnAngle (0); % govori Roombi da se ne okreće ako su gore spomenuti uvjeti istiniti

elseif data2.right == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (, 05); elseif data2.left == 1 r.moveDistance (-. 2); r.turnAngle (5); r.setDriveVelocity (, 05); elseif data2.front == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (.05);

Nakon ove while petlje ulazimo u drugu while petlju koja pokreće podatke dobivene kamerom. I koristimo if naredbu unutar ove while petlje koja prepoznaje sliku pomoću određenog programa (alexnet), a nakon što identificira sliku, odmah pokreće daljinski upravljač mobilnog uređaja

anet = alexnet; % Dodjeljuje alexnet duboko učenje varijabli while true % Beskonačno dok petlja img = r.getImage; img = imresize (img, [227, 227]); oznaka = klasificirati (anet, img); ako je oznaka == "papirnati ubrus" || label == "hladnjak" label = "voda"; završna slika (img); naslov (char (oznaka)); izvlačenje;

Dok petlja koja nam omogućuje upravljanje uređajem telefonom dohvaća te podatke iz žiroskopa telefona i priključujemo ih u matricu koja kontinuirano struji podatke natrag u MATLAB na računalu. Koristimo if naredbu koja čita podatke matrice i daje izlaz koji pomiče uređaj na temelju određenih vrijednosti žiroskopa telefona. Važno je znati da smo koristili orijentacijske senzore mobilnog uređaja. Gore spomenuta matrica jedan po tri kategorizirana je prema svakom elementu senzora orijentacije telefona, koji je azimut, visina i strana. Ako su izrazi stvorili uvjete koji navode kada strana prelazi vrijednosti 50 ili pada ispod -50, tada se robot pomiče na određenu udaljenost naprijed (pozitivno 50) ili natrag (negativno 50). Isto vrijedi i za vrijednost tona. Ako vrijednost visine nagiba prelazi vrijednost 25 padova ispod -25, robot se okreće pod kutom od 1 stupnja (pozitivnih 25) ili negativnih 1 stupnjeva (negativnih 25)

dok je istinska pauza (.1) % Pauza od.5 sekundi prije nego što se uzme svaka vrijednost Controller = iphone. Orientation; % Dodjeljuje matricu za vrijednosti orijentacije iPhonea varijabli Azimuthal = Controller (1); % Dodjeljuje prvu vrijednost matrice varijabli Pitch = Controller (2); % Dodjeljuje drugu vrijednost matrice varijabli (nagib prema naprijed i natrag kada se iPhone drži bočno) Side = Controller (3); % Dodjeljuje treću vrijednost matrice varijabli (nagib ulijevo i udesno kada se iPhone drži bočno) % Uzrokuje izlaz na temelju orijentacije telefona ako je strana> 130 || Bočna strana 25 r.moveDistance (-. 1) % Pomiče Roombu unatrag otprilike 0,1 metra ako je iPhone nagnut unatrag najmanje 25 stupnjeva u suprotnom slučaju Bočna strana 25 okretaja okretanja (-1) % Okreće Roombu za približno 1 stupanj CCW ako iPhone je nagnut ulijevo za najmanje 25 stupnjeva u suprotnom slučaju Pitch <-25 r.turnAngle (1) % Okreće Roombu za približno 1 stupanj CW ako je iPhone nagnut za najmanje 25 stupnjeva

Ovo su samo najvažniji dijelovi našeg koda, koje smo uključili ako trebate brzo kopirati i zalijepiti odjeljak u svoju korist. Međutim, cijeli naš kôd prilažemo u nastavku ako je potrebno

Korak 5: Zaključak

Ovaj kôd koji smo napisali posebno je dizajniran za našeg robota, kao i za našu cjelokupnu viziju projekta. Naš je cilj bio upotrijebiti sve naše vještine kodiranja u MATLAB -u kako bismo izradili skriptu za dizajn bušotine koja koristi većinu značajki robota. Korištenje kontrolera telefona nije tako teško kao što mislite, i nadamo se da će vam naš kôd pomoći da bolje razumijete koncept kodiranja iRobota.

Preporučeni: