Obsah:

Roomba With MATLAB: 4 Steps (with Pictures)
Roomba With MATLAB: 4 Steps (with Pictures)

Video: Roomba With MATLAB: 4 Steps (with Pictures)

Video: Roomba With MATLAB: 4 Steps (with Pictures)
Video: Who Can Clean Better? #Shorts 2024, Listopad
Anonim
Roomba s MATLABem
Roomba s MATLABem

Tento projekt využívá MATLAB a programovatelného robota iRobot Create2. Tím, že testujeme naše znalosti o MATLABu, jsme schopni naprogramovat Create2 tak, aby interpretoval obrázky a detekoval signály. Funkčnost robota závisí především na mobilní aplikaci MATLAB a kamerovém modulu Raspberry Pi.

Krok 1: Díly a materiály

Díly a materiály
Díly a materiály
Díly a materiály
Díly a materiály
Díly a materiály
Díly a materiály
Díly a materiály
Díly a materiály

1. iRobot Create, verze 2

- Toto je programovatelný robot, který vypadá jako Roomba. Uvědomte si, že tento produkt od iRobot není vakuum. Je určen pro vlastní programování uživatelem.

2. MATLAB 2017a

- Většina starších verzí bude kompatibilní s kódem, který jsme použili níže. MATLAB identifikuje příkaz, který není kompatibilní s vaší verzí, a navrhne nejvhodnější příkaz.

3. Raspberry Pi 3 Model B, verze 1.2

- Zkontrolujte, zda je Raspberry Pi kompatibilní s vaším iRobotem. Další pomoc najdete na tomto odkazu: https://www.irobotweb.com/~/media/MainSite/PDFs/A… Tento návod předpokládá, že pracujete s předprogramovaným Raspberry Pi. Aby následující kroky fungovaly, budete muset pracovat s předprogramovaným Pi. Použití předprogramovaného Pi vám umožní provádět veškeré vaše kódování pouze v MATLABu.

4. Kamerový modul V2 (pro Raspberry Pi)

- Možná budete překvapeni; navzdory své velikosti je modul Raspberry Pi Camera velmi dobré kvality. Je to nejlevnější a nejkompatibilnější možnost pro tento projekt.

Volitelně: 3D vytištěný stojan. Toto slouží ke stabilizaci kamery. Nemá vliv na funkčnost robota, ale pomůže vám při kódování, pokud si přejete použít obrazová data pro rozpoznávání barev a/nebo objektů.

Krok 2: Konfigurace

Konfigurace
Konfigurace
Konfigurace
Konfigurace

1. Propojení Raspberry Pi a modulu kamery (Hardware)

- Pro napájení Raspberry Pi budete muset zapojit zástrčku micro USB do zásuvky napájení na mikrokontroléru. Volitelné: K zajištění toho, aby napětí nepřekročilo 5V, lze použít regulátor napětí. Po napájení Raspberry Pi jej můžete připojit k vašemu robotu spuštěním konektoru USB a ze základní desky do USB portu A na mikrokontroléru.

- Po připojení Pi k robotu Roomba je kamera připravena k instalaci. Modul fotoaparátu bude mnohem menší, než byste čekali. Objektiv je připevněn ke snímači a z fotoaparátu se rozprostírá bílá stuha. NEODSTRAŇUJTE ani netrhejte pásku! Toto je kabel, který potřebujete k připojení k Raspberry Pi. Nejprve podržte konec pásky a najděte stříbrné konektory a modrý kabel. Ty jsou na opačných stranách. Dále najděte slot mezi porty ethernet a HDMI na vašem Raspberry Pi. Všimněte si, že je zakryt malý bílý zámek. Pomalu zvedněte zámek, ale nevyjímejte jej ze slotu, protože by praskl a byl by trvale poškozen. Jakmile zdvihnete zámek, uchopte pásku a otočte stříbrné konektory k portu HDMI. Modrá strana bude směřovat k ethernetovému portu. Pomalu zasuňte pásku do slotu, dokud je stále odemčená. Do slotu jej nemusíte tlačit silou. Po vložení zatlačte zámek zpět dolů. Pokud je váš fotoaparát řádně zajištěn, měli byste být schopni (jemně) zatáhnout za pásku a cítit napětí. Stuha by neměla být uvolněná. Po připojení fotoaparátu k Pi si můžete všimnout, jak je uvolněný. Proto jsme k ustálení použili držák vytištěný 3D. Je na vás, abyste určili, jaké materiály byste chtěli použít, aby byl váš fotoaparát v klidu pro vysoce kvalitní snímky.

2. Instalace správných souborů a připojení robota Roomba k počítači Poté, co je nakonfigurován veškerý váš hardware, můžete nyní přejít k instalaci programu MATLAB spolu s přidruženými soubory m, které vám umožní komunikovat s robotem. Chcete -li to provést, otevřete MATLAB a vytvořte novou složku, abyste udrželi všechny související soubory pohromadě. Pomocí tohoto skriptu nainstalujte/aktualizujte požadované soubory:

- Všechny soubory by se nyní měly zobrazit ve vaší vytvořené složce. Klikněte pravým tlačítkem v okně Aktuální složka a vyberte „Přidat do cesty“, abyste tuto cestu přidali do seznamu adresářů, kde MATLAB hledá soubory. Zajistěte, aby všechny vaše soubory byly na správné cestě.

3. Jakmile jsou soubory nainstalovány, můžete se nyní začít připojovat k robotovi. Začněte tím, že zapnete robota a poté jej tvrdě resetujete hned po spuštění (nezapomeňte robota tvrdě resetovat pokaždé před a po použití). Za druhé, připojte robota i notebook ke stejné síti Wi -Fi. Poté budeme hovořit s předprogramovaným Raspberry Pi přes MATLAB zavoláním Roomby pomocí jejího křestního jména a funkce roomba. Například bych se připojil k robotu 28 pomocí následujícího řádku: R = roomba (28).

- Všimněte si, jak jsem přiřadil objekt proměnné R. Nyní mohu přistupovat k přidruženým funkcím Roomba z instalačního souboru, když s proměnnou R zacházím jako se strukturou.

- R.turnAngle (90) Pokud vše proběhlo dobře, měl by hrát hudební tón potvrzující spojení.

Krok 3: Logika MATLABu

Dokument PDF v dolní části tohoto kroku je podrobný logický vývojový diagram pro náš proces kódování v MATLABu. Aktivovali jsme senzory útesu, světla a světelných nárazů, aby robot s námi mohl komunikovat, když detekuje předmět v jeho bezprostřední blízkosti. Například když se robot pohybuje vpřed, jeho světelné senzory skenují objekty v jeho dráze podle vektoru, ve kterém cestuje. Pro robota jsme vybrali práh vzdálenosti, takže když se přiblíží k objektu, obrátí se místo toho, aby s ním narazil. Náš robot je také nakonfigurován pomocí Twitteru, který jsme specifikovali v našem procesu kódování (to bude ukázáno níže).

Abychom vylepšili zážitek, využili jsme na našich mobilních zařízeních aplikaci MATLAB, abychom mohli ovládat pohyby robota pouhým nakláněním telefonů. Jedná se o volitelnou aktivitu, protože určitě můžete robota přesunout pomocí příkazu moveDistance v segmentu kódu MATLAB. Mějte na paměti, že pokud je vaším cílem být přesný, je upřednostňováno používat příkazy MATLAB k ovládání vašeho robota. Pokud si přejete zaměřit svého robota tak, aby kamera pořídila snímek na určitém místě, může být lepší kódovat pohyby robota v MATLABu. I když je zábava, použití aplikace MATLAB k ovládání vašeho robota není pro přesnost žádoucí.

Kód přikazuje robotovi Roomba provést základní nastavení a poté pokračovat souvislou smyčkou. Zpočátku notebook nastaví propojení s robotem Roomba pomocí příkazu Roomba (). Nastavuje také twitterové připojení pomocí příkazu webwrite () v MATLABu. Smyčka obsahuje pět hlavních logických toků v závislosti na prostředí obklopujícím robot Roomba. Roomba nejprve kontroluje, zda neobsahuje překážky, a pokud zjistí, že jí překáží, upraví se zpět. Do této smyčky je vložena druhá cesta, která uživatele upozorní, pokud bude robot Roomba unesen. Důležitý nástroj v drsné marťanské Warzone. Poté, co robot Roomba zjistí, že je jeho poloha bezpečná, vyhledá mobilní zařízení, aby určilo jeho další pohyb. Pokud je mobilní zařízení nakloněno dopředu, vypočítá základní rychlost v závislosti na závažnosti měření náklonu, než upraví otáčky jednotlivých kol podle stupně sklonu. Telefon může Roombu pohybovat i opačně. Stav neutrálních mobilních zařízení uzavírá poslední dvě cesty. Odpočívající Roomba vyhledá vlajku mimozemšťana a uživatele na to upozorní.

Níže je náš kód (dokončen v MATLABu 2017a)

%vstupů: Orientační data ze zařízení připojeného k wifi, kamery

%informací, data ze senzorů

%výstupů: pohyb je řízen připojeným zařízením wifi a pohyb

% je bezpečnost zkontrolována čtením dat senzoru. Pokud kamera detekuje

% vlajka mimozemšťana, poté Roomba odpoví tweetováním vlajky nepřítele

% bylo spatřeno.

%účel: naše zařízení žije bez účelu, kromě ochrany těch, kteří

% vytvořil, slouží svému tvůrci a dělá

% přesně to, co bylo řečeno.

%Využití: v podstatě program poběží sám.

vymazat vše, zavřít vše, clc

%Inicializace objektů a proměnných

r = roomba (28);

m = mobiledev;

%use response = webwrite (název hostitele, data)

hostname = 'https://api.thingspeak.com/apps/thingtweet/1/statuses/update';

API = 'SGZCTNQXCWAHRCT5';

tweet = 'RoboCop funguje … Čeká na příkaz';

data = strcat ('api_key =', API, '& status =', tweet);

reponse = webwrite (název hostitele, data);

%neustále běžící smyčky

zatímco 1 == 1

%Struktury obsahující relaventní data

o = m. orientace; %orientace mobilního zařízení

light = r.getLightBumpers (); %Hodnoty světelného nárazníku

a = r.getCliffSensors (); %CLiff Hodnoty snímače

bump = r.getBumpers (); %Senzory nárazníku

%zkontrolovat nárazníky

pokud bump.right == 1 || bump.left == 1 || bump.front == 1

r.moveDistance (-. 2,.2);

%zkontrolujte světelné senzory

elseif light.left> 60 || light.leftFront> 60 || light.leftCenter> 60 || light.right> 60 || light.rightPřední> 60 || light.rightCenter> 60

r.moveDistance (-. 2,.2);

%zkontrolujte Cliff Sensors

%Signál a upozornění proti krádeži

elseif a.left <300 && a.right <300 && a.leftFront <300 && a.rightFront <300

r.stop ();

r.beep ();

tweet = 'RoboCop byl zrušen!'

data = strcat ('api_key =', API, '& status =', tweet);

reponse = webwrite (název hostitele, data);

%Normální operace vyhýbání se útesu

elseif a.left <300 || a.right <300 || a.leftFront <300 || a. vpředu <300

r.moveDistance (-. 2,.2);

%Roomba prošla kontrolami a nyní poběží s normálním provozem.

%Zpočátku se měří role zařízení a stává se základnou

%rychlosti, která se pak použije k výpočtu rychlosti kola

%Pohyb vpřed

elseif o (3)> = 0 && o (3) <= 60

baseVel = (-. 5/60)*(o (3) -60);

pokud o (2)> =-70 && o (2) <0

r.setDriveVelocity (baseVel+(. 3/50)*abs (o (2)), baseVel-(. 3/50)*abs (o (2)));

elseif o (2) = 0

r.setDriveVelocity (baseVel-(. 3/50)*abs (o (2)), baseVel+(. 3/50)*abs (o (2)));

jinak r.stop

konec

%Zpětný pohyb

elseif o (3)> 100 && o (3) <150

r.setDriveVelocity (-. 2, -.2)

r.beep ();

r.beep ();

%odpočívající roomba bude hledat vlajku mimozemšťanů označenou jako fluorescenční

%zeleně Kus papíru

jiný

r.stop

img = r.getImage (); %pořídit obrázek

práh = greythresh (obr. (200: 383,:, 2))+. 1; %výpočet zelené úrovně

je -li práh> 0,42

tweet = 'Nepřítel spatřen !!'

data = strcat ('api_key =', API, '& status =', tweet);

reponse = webwrite (název hostitele, data);

jiný

r.stop

konec

konec

konec

Krok 4: Závěr

Pamatujte, že můžete použít skript, který jsme napsali výše, ale můžete jej kdykoli upravit tak, aby vyhovoval vašim potřebám. Nemusí být ovládán vaším telefonem! (Je to však zábavnější.) Vyberte si metodu, kterou chcete k ovládání svého robota používat. Jezděte se svým robotem a užívejte si!

Doporučuje: