Obsah:

Roomba riadená systémom MATLAB: 5 krokov
Roomba riadená systémom MATLAB: 5 krokov

Video: Roomba riadená systémom MATLAB: 5 krokov

Video: Roomba riadená systémom MATLAB: 5 krokov
Video: Roomba Positioning with trajectory - Ultrasonic (SPAN: Smart Passive/Active Node) 2024, Júl
Anonim
Roomba riadená systémom MATLAB
Roomba riadená systémom MATLAB
Roomba riadená systémom MATLAB
Roomba riadená systémom MATLAB

Cieľom tohto projektu je využitie MATLABu a upraveného programovateľného robota iRobot. Naša skupina skombinovala naše kódovacie schopnosti a vytvorila skript MATLAB, ktorý využíva mnoho funkcií iRobot vrátane senzorov útesu, nárazníkov, svetelných senzorov a kamery. Tieto hodnoty zo senzorov a kamier sme použili ako vstupy, čo nám umožnilo vytvoriť určité požadované výstupy pomocou funkcií a slučiek kódu MATLAB. Mobilné zariadenie a gyroskop MATLAB používame aj ako spôsob pripojenia k iRobotu a jeho ovládanie.

Krok 1: Diely a materiály

Diely a materiály
Diely a materiály
Diely a materiály
Diely a materiály
Diely a materiály
Diely a materiály
Diely a materiály
Diely a materiály

MATLAB 2018a

-Verzia MATLABu pre rok 2018 je najpreferovanejšou verziou, väčšinou preto, že najlepšie funguje s kódom, ktorý sa pripája k mobilnému zariadeniu. Väčšinu nášho kódu je však možné interpretovať vo väčšine verzií MATLAB.

iRobot Vytvoriť zariadenie

-Toto zariadenie je špeciálne vyrobené zariadenie, ktorého jediným účelom je programovanie a kódovanie. (Nejde o skutočné vákuum)

Raspberry Pi (s kamerou)

- Toto je drahá počítačová doska, ktorá funguje ako mozog iRobota. Môže byť malý, ale je schopný veľa vecí. Fotoaparát je ďalším doplnkom. Malinový pi tiež používa na získanie všetkých svojich funkcií a príkazov. Fotoaparát zobrazený vyššie je namontovaný na stojane s 3D tlačou, ktorý vytvorili oddelenia Engineering Fundamentals na University of Tennessee

Krok 2: Databázový súbor Roomba

Databázový súbor Roomba
Databázový súbor Roomba

Existuje hlavný súbor, ktorý budete potrebovať na používanie správnych funkcií a príkazov pre svoju robotu roomba. V tomto súbore ste napísali kód, z ktorého sa čerpajú funkcie, aby bola obsluha robota roomba lepšie zvládnuteľná.

Súbor si môžete stiahnuť na tomto odkaze alebo nižšie na stiahnutie

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

Krok 3: Pripojenie k robotu Roomba

Najprv sa musíte uistiť, že je váš robot pripojený k doske Raspberry Pi pomocou konektora micro USB. Potom musíte správne pripojiť počítač a robota k rovnakému WiFi. Keď to bude hotové, môžete svojho robota zapnúť a pripojiť sa k nemu pomocou daného príkazu v súbore databázy robotov. (Robota vždy tvrdo resetujte pred a po použití). Napríklad sa pomocou príkazu „r.roomba (19)“spojíme s našim robotom a priradíme premennú r nášmu zariadeniu. Toto odkazuje späť na databázový súbor, ktorý nastavuje našu premennú ako štruktúru, na ktorú môžeme v každom okamihu odkazovať.

Krok 4: Kód

Kód
Kód
Kód
Kód

Nižšie sme priložili úplný kód, ale tu je stručný prehľad, ktorý zdôrazňuje dôležité prvky nášho skriptu. Na maximalizáciu potenciálu nášho robota sme použili všetky senzory, ako aj kameru. Zahrnuli sme tiež kód, ktorý nám umožnil pripojiť mobilné zariadenie k nášmu robotovi a pomocou jeho gryoskopu ho ovládať ručne.

Začali sme jednoduchým príkazom „r.setDriveVelocity (.06)“, ktorý nastaví rýchlosť dopredu robota na, 06 m/s. Je to len preto, aby sa robot vopred rozhýbal

Potom sa náš hlavný skript spustí so slučkou while, ktorá načítava údaje daného robota vytvorením štruktúr, na ktoré môžeme odkazovať a používať ich v nižšie uvedených podmienených príkazoch, čo nám umožní povedať robotovi, aby vykonal určitý príkaz na základe údajov o štruktúre robot číta svojimi snímačmi. Nastavili sme to tak, že robot číta senzory útesu a ide po čiernej ceste

zatiaľ čo true % while loop pokračuje, kým sa vyskytne niečo „falošné“(v tomto prípade to pokračuje nekonečne) data = r.getCliffSensors; data2 = r.getBumpers; % priebežne získava údaje o hodnotách senzora útesu a priraďuje ich k premennej % img = r.getImage; % Nasníma obrázok z pripojenej kamery % image (obrázok); % Zobrazuje nasnímaný obrázok % red_mean = priemer (priemer (priemer (obrázok (:,:, 1)))); % Prevezme priemernú hodnotu zelenej farby, ak údaje.rightFront <2000 r.turnAngle (-2); % otočí Roombu približne o 0,2 stupňa CW, akonáhle hodnota pre senzory pravého predného útesu klesne pod 2 000 r.setDriveVelocity (.05); elseif data.leftFront data.leftFront && 2000> data.rightFront r.moveDistance (.1); % hovorí robotu Roomba, aby išla dopredu približne 0,2 m/s, ak obe hodnoty z pravého predného a ľavého predného senzora klesnú pod 2 000 % r.turnAngle (0); % hovorí robotu Roomba, aby sa neotočila, ak sú splnené vyššie uvedené podmienky

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);

Po tejto cyklu while vstúpime do ďalšej slučky while, ktorá spustí údaje získané prostredníctvom kamery. V tejto slučke while používame príkaz if, ktorý rozpoznáva obrázok pomocou konkrétneho programu (alexnet), a akonáhle obrázok identifikuje, okamžite spustí diaľkové ovládanie mobilného zariadenia

anet = alexnet; % Priradí hlboké učenie alexnet premennej, zatiaľ čo platí % Nekonečné, kým slučka img = r.getImage; img = imresize (img, [227, 227]); štítok = klasifikovať (anet, img); ak štítok == "papierový uterák" || label == "chladnička" label = "voda"; koncový obrázok (img); názov (znak (štítok)); sťahovanie;

Slučka while, ktorá nám umožňuje ovládať zariadenie pomocou telefónu, získava tieto údaje z gyroskopu telefónu a my ho zapojíme do matice, ktorá nepretržite streamuje údaje späť do systému MATLAB v počítači. Používame príkaz if, ktorý číta údaje matice a dáva výstup, ktorý pohybuje zariadením na základe určitých hodnôt gyroskopu telefónu. Je dôležité vedieť, že sme použili senzory orientácie mobilného zariadenia. Vyššie uvedená matica jedna po troch je kategorizovaná podľa každého prvku senzorov orientácie telefónu, ktorým je azimut, výška a strana. Ak príkazy if vytvorili podmienky, ktoré uviedli, že ak strana prekročí hodnoty 50 alebo klesne pod -50, robot sa posunie o určitú vzdialenosť dopredu (kladná 50) alebo dozadu (záporná 50). A to isté platí pre hodnotu tónu. Ak hodnota tónu presiahne hodnotu 25 a klesne pod -25, robot sa otočí pod uhlom 1 stupňa (kladný 25) alebo záporný 1 stupeň (záporný 25)

true true pause (.1) % Pause of.5 seconds before each value is taken Controller = iphone. Orientation; % Priradí maticu pre hodnoty orientácie iPhone premennej Azimuthal = Controller (1); % Priradí prvú hodnotu matice premennej Pitch = Controller (2); % Priradí premennej druhú hodnotu matice (naklonenie dopredu a dozadu, keď je iPhone držaný bokom) Strana = ovládač (3); % Priradí premennej tretiu hodnotu matice (naklonenie doľava a doprava, keď je iPhone držaný bokom) % Spôsobí výstup na základe orientácie telefónu, ak Strana> 130 || Strana 25 r.moveDistance (-. 1) % Posunie Roombu dozadu približne o 1 meter, ak je iPhone naklonený dozadu najmenej o 25 stupňov, inak Strana 25 r.turnAngle (-1) % Otočí Roombu približne o 1 stupeň CCW, ak je iPhone je naklonený doľava najmenej o 25 stupňov, ak je rozstup <-25 r.turnAngle (1) % Otočí robot Roomba približne o 1 stupeň CW, ak je iPhone naklonený najmenej o 25 stupňov.

Toto sú len najdôležitejšie body nášho kódu, ktoré sme zahrnuli, ak potrebujete rýchlo skopírovať a prilepiť časť vo svoj prospech. V prípade potreby je však celý náš kód priložený nižšie

Krok 5: Záver

Tento kód, ktorý sme napísali, je špeciálne navrhnutý pre nášho robota a pre našu celkovú víziu projektu. Našim cieľom bolo použiť všetky naše kódovacie schopnosti MATLAB na vytvorenie dobre navrhnutého skriptu, ktorý využíva väčšinu funkcií robota. Používanie ovládača telefónu nie je také ťažké, ako by ste si mohli myslieť, a dúfame, že vám náš kód pomôže lepšie porozumieť konceptu kódovania iRobota.

Odporúča: