Sadržaj:
- Korak 1: Dijelovi i materijali
- Korak 2: Datoteka baze podataka Roomba
- Korak 3: Povezivanje s Roombom
- Korak 4: Kôd
- Korak 5: Zaključak
Video: MATLAB kontrolirana Roomba: 5 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:35
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
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
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
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:
SMART LED MATRICA DIY INTERNET -om KONTROLIRANA (ADAFRUIT + ESP8266 + WS2812): 8 koraka (sa slikama)
DIY INTERNET KONTROLIRANA SMART LED MATRIX (ADAFRUIT + ESP8266 + WS2812): Ovo je moj drugi napredak u projektu koji vam s velikim zadovoljstvom mogu pokazati. Riječ je o DIY Smart LED matrici koja će vam omogućiti da na njoj prikažete podatke, poput YouTube statistike, statistike vaše pametne kuće, kao što su temperatura, vlažnost, mogu biti jednostavan sat ili samo prikazati
LED matrica kontrolirana Google pomoćnikom!: 7 koraka (sa slikama)
LED matrica s kontroliranim Google asistentom!: U ovom vodiču pokazat ću vam kako možete izraditi LED matricu s Google asistentom s kontroliranim upravljanjem koju možete kontrolirati bilo gdje pomoću pametnog telefona, pa počnimo
Talkative Automation -- Zvuk iz Arduina -- Glasovno kontrolirana automatizacija -- HC - 05 Bluetooth modul: 9 koraka (sa slikama)
Talkative Automation || Zvuk iz Arduina || Glasovno kontrolirana automatizacija || HC - 05 Bluetooth modul: …………………………. PRETPLATITE SE na moj YouTube kanal za više videa …. …. U ovom smo videu izgradili Talkative Automation .. Kada pošaljete glasovnu naredbu putem mobilnog telefona, ona će uključiti kućne uređaje i poslati povratne informacije
Beskonačna rukavica kontrolirana kućna automatizacija: 8 koraka (sa slikama)
Infinity Gauntlet Controlled Home Automation: U svom prethodnom projektu napravio sam beskonačnu rukavicu koja kontrolira prekidač za svjetlo. Htio sam upotrijebiti šest kamenaca, a svaki kamen može upravljati uređajem, bravom na vratima ili rasvjetom. Stoga sam napravio sustav kućne automatizacije pomoću beskonačne rukavice. U ovom projektu
RC kontrolirana Rgb LED traka: 4 koraka (sa slikama)
RC upravljačka Rgb LED traka: Izradite vlastitu LED traku s daljinskim upravljanjem za individualno osvjetljenje prostorije! Većina traka s rgb LED diodama kontrolira se infracrvenim daljinskim upravljačem. Da biste ga isključili ili uključili ili promijenili boju, morate ostati ispred prijemnika. Ovo je dosadno i nije ponovno