Obsah:

MATLAB Controlled Roomba: 5 kroků
MATLAB Controlled Roomba: 5 kroků

Video: MATLAB Controlled Roomba: 5 kroků

Video: MATLAB Controlled Roomba: 5 kroků
Video: How to Connect Roomba with iRobot Home app 2024, Listopad
Anonim
Roomba ovládaná systémem MATLAB
Roomba ovládaná systémem MATLAB
Roomba ovládaná systémem MATLAB
Roomba ovládaná systémem MATLAB

Cílem tohoto projektu je využití MATLABu a upraveného programovatelného robota iRobot. Naše skupina spojila naše kódovací schopnosti, aby vytvořila skript MATLAB, který využívá mnoho funkcí iRobot, včetně snímačů útesu, nárazníků, světelných senzorů a kamery. Tyto hodnoty ze snímačů a kamer jsme použili jako vstupy, což nám umožnilo vytvořit určité požadované výstupy pomocí funkcí a smyček kódu MATLAB. Mobilní zařízení a gyroskop MATLAB používáme také jako způsob připojení k iRobot a jeho ovládání.

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

MATLAB 2018a

-Verze MATLAB pro rok 2018 je nejpreferovanější verzí, většinou proto, že nejlépe funguje s kódem, který se připojuje k mobilnímu zařízení. Většinu našeho kódu však lze interpretovat ve většině verzí MATLABu.

iRobot Vytvořit zařízení

-Toto zařízení je speciálně vyrobené zařízení, jehož jediným účelem je programování a kódování. (Není to skutečné vakuum)

Raspberry Pi (s kamerou)

- Jedná se o nenákladnou počítačovou desku, která funguje jako mozek iRobota. Může být malý, ale je schopen mnoha věcí. Fotoaparát je dalším doplňkem. Také používá malinu pi k získání všech svých funkcí a příkazů. Fotoaparát na obrázku výše je upevněn na 3D tištěném stojanu vytvořeném katedrami Engineering Fundamentals na University of Tennessee

Krok 2: Soubor databáze Roomba

Soubor databáze Roomba
Soubor databáze Roomba

Existuje hlavní soubor, který budete potřebovat, abyste mohli používat správné funkce a příkazy pro svůj roomba. V tomto souboru jste psali kód, který čerpá funkce, aby byla správa vašeho robota Roomba lépe ovladatelná.

Soubor si můžete stáhnout na tomto odkazu nebo níže ke stažení

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

Krok 3: Připojení k robotu Roomba

Nejprve se musíte ujistit, že je váš robot připojen k desce Raspberry Pi pomocí konektoru micro USB. Poté musíte počítač a robota správně připojit ke stejné WiFi. Jakmile to bude hotové, můžete robota zapnout a připojit se k němu pomocí daného příkazu v souboru databáze robota. (Robota vždy tvrdě resetujte před a po použití). Například pomocí příkazu „r.roomba (19)“se připojíme k našemu robotu a k našemu zařízení přiřadíme proměnnou r. Toto odkazuje zpět na databázový soubor, který nastavuje naši proměnnou jako strukturu, na kterou můžeme kdykoli odkazovat.

Krok 4: Kód

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

Níže jsme připojili celý kód, ale zde je stručný přehled, který zdůrazňuje důležité prvky v našem skriptu. Využili jsme všechny senzory, stejně jako kameru, abychom plně maximalizovali potenciál našeho robota. Zahrnuli jsme také kód, který nám umožnil připojit mobilní zařízení k našemu robotu a použít jeho gryoskop k ručnímu ovládání.

Začali jsme jednoduchým příkazem „r.setDriveVelocity (.06)“, který nastaví dopřednou rychlost robota na, 06 m/s. Jde jen o to, aby se robot předem rozhýbal

Poté se náš hlavní skript spustí smyčkou while, která načte data daného robota vytvořením struktur, na které můžeme odkazovat a použít je v níže uvedených podmíněných příkazech, což nám umožní říci robotu, aby provedl určitý příkaz na základě dat struktury robot čte svými senzory. Nastavili jsme to tak, že robot čte senzory útesu a sleduje černou cestu

zatímco true % while loop pokračuje, dokud nedojde k něčemu „nepravdivému“(v tomto případě to pokračuje nekonečně) data = r.getCliffSensors; data2 = r.getBumpers; % průběžně načítá data o hodnotách senzoru útesu a přiřazuje je proměnné % img = r.getImage; % Pořídí snímek z připojené kamery % image (obrázek); % Zobrazuje snímek, který byl pořízen % red_mean = průměr (průměr (obrázek (: (:,: 1)))); % Vezme průměrnou hodnotu zelené barvy, pokud data.rightFront <2000 r.turnAngle (-2); % otočí Roombu přibližně o 0,2 stupně CW, jakmile hodnota pro senzory pravého předního útesu klesne pod 2000 r.setDriveVelocity (.05); elseif data.leftFront data.leftFront && 2000> data.rightFront r.moveDistance (.1); % říká Roombě, aby pokračovala vpřed přibližně 0,2 m/s, pokud obě hodnoty z pravého předního a levého předního senzoru klesnou pod 2000 % r.turnAngle (0); % říká Roombě, aby se neotočila, pokud jsou splněny výše uvedené podmínky

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 této smyčce while zadáme další smyčku while, která spouští data získaná prostřednictvím kamery. A v této smyčce while používáme příkaz if, který rozpoznává obrázek pomocí konkrétního programu (alexnet), a jakmile obrázek identifikuje, okamžitě spustí dálkové ovládání mobilního zařízení

anet = alexnet; % Přiřadí alexnetové hluboké učení proměnné, zatímco pravdivé % Nekonečné zatímco smyčka img = r.getImage; img = imresize (img, [227, 227]); label = classify (anet, img); pokud štítek == "papírový ručník" || label == "chladnička" label = "voda"; koncový obrázek (img); název (znak (štítek)); drawnow;

Smyčka while, která nám umožňuje ovládat zařízení pomocí telefonu, získává tato data z gyroskopu telefonu a připojujeme jej do matice, která nepřetržitě streamuje data zpět do MATLABu v počítači. Používáme příkaz if, který čte data matice a dává výstup, který pohybuje zařízením na základě určitých hodnot gyroskopu telefonu. Je důležité vědět, že jsme použili senzory orientace mobilního zařízení. Výše uvedená matice jedna po třech je kategorizována podle každého prvku senzorů orientace telefonu, kterým je azimut, výška a strana. Pokud příkazy if vytvořily podmínky, které uvádějí, když strana překročí hodnoty 50 nebo klesne pod -50, robot se posune o určitou vzdálenost dopředu (kladná 50) nebo dozadu (záporná 50). A totéž platí pro hodnotu výšky tónu. Pokud hodnota rozteče překročí hodnotu 25 pádů pod -25, robot se otočí pod úhlem 1 stupeň (kladný 25) nebo záporný 1 stupeň (záporný 25)

while true pause (.1) % Pause of.5 seconds before each value is taken Controller = iphone. Orientation; % Přiřadí matici pro hodnoty orientace iPhone proměnné Azimuthal = Controller (1); % Přiřadí první hodnotu matice proměnné Pitch = Controller (2); % Přiřadí druhou hodnotu matice proměnné (naklonění dopředu a dozadu, když je iPhone držen bokem) Strana = ovladač (3); % Přiřadí třetí hodnotu matice proměnné (naklonění doleva a doprava, když je iPhone držen bokem) % Způsobí výstup na základě orientace telefonu, pokud Strana> 130 || Strana 25 r. MoveDistance (-. 1) % Přesune robot Roomba dozadu přibližně o 1 metr, pokud je iPhone nakloněn dozadu alespoň o 25 stupňů jinak, pokud strana 25 r.turnAngle (-1) % Otočí Roombu přibližně o 1 stupeň CCW, pokud iPhone je nakloněna doleva alespoň o 25 stupňů, pokud je rozteč <-25 r.turnAngle (1) % Otočí robot Roomba přibližně o 1 stupeň CW, pokud je iPhone nakloněn alespoň o 25 stupňů

Toto jsou jen hlavní body hlavních částí našeho kódu, které jsme zahrnuli, pokud potřebujete rychle zkopírovat a vložit sekci ve svůj prospěch. V případě potřeby je však celý náš kód připojen níže

Krok 5: Závěr

Tento kód, který jsme napsali, je speciálně navržen pro našeho robota a také pro naši celkovou vizi projektu. Naším cílem bylo použít všechny naše kódovací schopnosti MATLAB k vytvoření dobře navrženého skriptu, který využívá většinu funkcí robota. Používání ovladače telefonu není tak obtížné, jak si možná myslíte, a doufáme, že vám náš kód pomůže lépe porozumět konceptu kódování iRobota.

Doporučuje: