Obsah:

Roomba s MATLABOM: 4 kroky (s obrázkami)
Roomba s MATLABOM: 4 kroky (s obrázkami)

Video: Roomba s MATLABOM: 4 kroky (s obrázkami)

Video: Roomba s MATLABOM: 4 kroky (s obrázkami)
Video: Jerusalema Top 10 Dance Challenge Part 5 (Master KG Feat. Nomcebo Mix) 2024, November
Anonim
Roomba s MATLABom
Roomba s MATLABom

Tento projekt využíva program MATLAB a programovateľný robot iRobot Create2. Tým, že testujeme naše znalosti o MATLABe, sme schopní naprogramovať Create2 na interpretáciu obrázkov a detekciu signálov. Funkčnosť robota závisí predovšetkým od mobilnej aplikácie MATLAB a kamerového modulu Raspberry Pi.

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

1. iRobot Create, verzia 2

- Toto je programovateľný robot, ktorý vyzerá ako Roomba. Uvedomte si, že tento produkt od iRobot nie je vákuum. Je určený na vlastné programovanie užívateľom.

2. MATLAB 2017a

- Väčšina starších verzií bude kompatibilná s kódom, ktorý sme použili nižšie. MATLAB identifikuje príkaz, ktorý nie je kompatibilný s vašou verziou, a navrhne najvhodnejší príkaz.

3. Raspberry Pi 3 Model B, verzia 1.2

- Skontrolujte, či je Raspberry Pi kompatibilný s vašim iRobotom. Ďalšiu pomoc nájdete na tomto odkaze: https://www.irobotweb.com/~/media/MainSite/PDFs/A… Tento návod predpokladá, že pracujete s predprogramovaným Raspberry Pi. Uvedomte si, že na to, aby nasledujúce kroky fungovali, budete musieť pracovať s predprogramovaným Pi. Použitie predprogramovaného Pi vám umožní vykonať všetky vaše kódovania iba v MATLABe.

4. Kamerový modul V2 (pre Raspberry Pi)

- Možno budete prekvapení; napriek svojej veľkosti je modul kamery Raspberry Pi veľmi dobrej kvality. Je to najlacnejšia a najkompatibilnejšia možnosť pre tento projekt.

Voliteľné: stojan s 3D tlačou. Používa sa na stabilizáciu fotoaparátu. Nemá to vplyv na funkčnosť robota, ale pomôže vám pri kódovaní, ak chcete použiť obrazové údaje na rozpoznávanie farieb a/alebo objektov.

Krok 2: Konfigurácia

Konfigurácia
Konfigurácia
Konfigurácia
Konfigurácia

1. Pripojenie Raspberry Pi a modulu kamery (hardvér)

- Na napájanie Raspberry Pi budete potrebovať mikro USB konektor na mužskom konci zapojený do ženského napájacieho portu na mikrokontroléri. Voliteľné: Na zaistenie toho, aby napätie nepresiahlo 5 V, je možné použiť regulátor napätia. Po napájaní Raspberry Pi ho môžete pripojiť k svojmu robotovi spustením konektora USB a zo základnej dosky do portu USB A na mikrokontroléri.

- Po pripojení Pi k robotu Roomba je kamera pripravená na inštaláciu. Modul fotoaparátu bude oveľa menší, ako by ste očakávali. Objektív je pripevnený k snímaču a z fotoaparátu siaha biela páska. NEODSTRAŇUJTE ani netrhajte stuhu! Toto je kábel, ktorý potrebujete na pripojenie k Raspberry Pi. Najprv podržte koniec pásky a nájdite strieborné konektory a modrý kábel. Tieto sú na opačných stranách. Potom nájdite medzeru medzi ethernetovým a HDMI portom na vašom Raspberry Pi. Všimnite si, že je zakrytý malým bielym zámkom. Pomaly nadvihnite zámok, ale nevyberajte ho zo zásuvky, pretože by zacvakol a bol by trvalo poškodený. Akonáhle zdvihnete zámok, uchopte stuhu a priložte strieborné konektory k portu HDMI. Modrá strana bude smerovať k ethernetovému portu. Kým je páska stále odomknutá, pomaly zasúvajte do otvoru. Do slotu ho nemusíte nasilu tlačiť. Po vložení zatlačte zámok späť nadol. Ak je váš fotoaparát správne zaistený, mali by ste byť schopní (jemne) potiahnuť za stuhu a cítiť napätie. Stuha by nemala byť voľná. Po pripojení fotoaparátu k počítaču Pi si môžete všimnúť, aký je voľný. Preto sme na stabilizáciu použili 3D tlačený držiak. Je na vás, aby ste sa rozhodli, aké materiály by ste chceli použiť, aby bol váš fotoaparát v pokoji pri snímaní vysokej kvality.

2. Inštalácia správnych súborov a pripojenie robota Roomba k počítaču Po nakonfigurovaní všetkého hardvéru môžete teraz prejsť k inštalácii programu MATLAB spolu s priradenými súbormi m, ktoré vám umožnia komunikovať s robotom. Ak to chcete urobiť, otvorte MATLAB a vytvorte nový priečinok, aby boli všetky súvisiace súbory pohromade. Pomocou tohto skriptu nainštalujte/aktualizujte požadované súbory:

- Všetky súbory by sa teraz mali zobraziť vo vašom vytvorenom priečinku. Kliknite pravým tlačidlom myši v okne Aktuálny priečinok a zvoľte „Pridať na cestu“, aby ste túto cestu pridali do zoznamu adresárov, kde MATLAB hľadá súbory. Zaistite, aby všetky vaše súbory boli na správnej ceste.

3. Akonáhle sú súbory nainštalované, môžete sa začať pripájať k svojmu robotovi. Začnite tým, že zapnete robota a potom ho tvrdo resetujete bezprostredne po štarte (nezabudnite robota tvrdo resetovať vždy pred a po použití). Za druhé, pripojte robota aj prenosného počítača k rovnakej sieti Wi -Fi. Potom budeme hovoriť s predprogramovaným Raspberry Pi cez MATLAB zavolaním Roomba pomocou jej krstného mena a funkcie roomba. Pripojil by som sa napríklad k robotu 28 pomocou nasledujúceho riadku: R = roomba (28).

- Všimnite si, ako som objekt priradil k premennej R. Teraz môžem z inštalačného súboru pristupovať k pridruženým funkciám Roomba tak, že s premennou R budem zaobchádzať ako so štruktúrou.

- R.turnAngle (90) Ak všetko išlo dobre, mal by hrať hudobný tón potvrdzujúci spojenie.

Krok 3: Logika MATLABu

Dokument PDF v spodnej časti tohto kroku je podrobný logický vývojový diagram pre náš proces kódovania v MATLABe. Aktivovali sme snímače útesu, svetla a svetelných nárazov, aby robot mohol s nami komunikovať, keď detekuje predmet v jeho bezprostrednej blízkosti. Napríklad, keď sa robot pohybuje dopredu, jeho svetelné senzory skenujú objekty v dráhe podľa vektora, v ktorom sa pohybuje. Pre robota sme vybrali prah vzdialenosti, aby keď sa priblíži k objektu, obrátil sa namiesto toho, aby s ním narazil. Náš robot je tiež nakonfigurovaný pomocou služby Twitter, ktorú sme špecifikovali v procese kódovania (to sa zobrazí nižšie).

Na zvýšenie zážitku sme na našich mobilných zariadeniach použili aplikáciu MATLAB, aby sme mohli ovládať pohyby robota iba nakláňaním telefónov. Toto je voliteľná činnosť, pretože určite môžete nechať robota pohybovať sa pomocou príkazu moveDistance v segmente kódu MATLAB. Majte na pamäti, že ak chcete, aby bol váš cieľ presný, uprednostňujte ovládanie robota pomocou príkazov MATLAB. Ak chcete nasmerovať svojho robota tak, aby kamera nasnímala obrázok na konkrétnom mieste, môže byť lepšie kódovať pohyby robota v programe MATLAB. Aj keď je zábava, používanie aplikácie MATLAB na ovládanie robota nie je žiaduce kvôli presnosti.

Kód prikazuje robotovi Roomba vykonať základné nastavenie a potom pokračovať nepretržitou slučkou. Na začiatku prenosný počítač nastaví prepojenie s robotom Roomba pomocou príkazu Roomba (). Tiež nastaví twitterové pripojenie pomocou príkazu webwrite () v MATLABe. Smyčka obsahuje päť hlavných logických tokov v závislosti od prostredia obklopujúceho robot Roomba. Roomba najskôr skontroluje prekážky a v prípade, že zistí, že im prekáža, sa upraví dozadu. Vložená do tejto slučky je druhá cesta, ktorá používateľov upozorní, ak bude robot Roomba unesený. Dôležitý nástroj v drsnej marťanskej Warzone. Potom, čo robot Roomba zistí, že je jej poloha bezpečná, vyhľadá mobilné zariadenie, aby určilo jej ďalší pohyb. Ak je mobilné zariadenie naklonené dopredu, vypočíta základnú rýchlosť v závislosti od závažnosti merania nakláňania a potom upraví otáčky jednotlivých kolies podľa stupňa sklonu. Telefón dokáže Roombu pohybovať aj opačne. Neutrálny stav mobilného zariadenia uzatvára posledné dve cesty. Odpočívajúci robot Roomba vyhľadá vlajku mimozemšťana a upozorní na to používateľa.

Nasleduje náš kód (dokončený v programe MATLAB 2017a)

%vstupov: Orientačné údaje zo zariadenia pripojeného k wifi, fotoaparátu

%informácií, údaje senzora

%výstupov: pohyb je riadený zariadením pripojeným k wifi a pohyb

% je bezpečnosť kontrolovaná čítaním údajov senzora. Ak kamera zistí

% mimozemská vlajka, potom Roomba odpovie tweetovaním nepriateľskej vlajky

% bolo spozorované.

%účel: naše zariadenie žije bez akéhokoľvek účelu, okrem ochrany tých, ktorí

% vytvoril, slúži svojmu tvorcovi a robí

% presne to, čo bolo povedané.

%Použitie: v podstate program pobeží sám.

vymazať všetky, zavrieť všetky, clc

%Inicializácia objektov a premenných

r = roomba (28);

m = mobiledev;

%use response = webwrite (názov hostiteľa, údaje)

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

API = 'SGZCTNQXCWAHRCT5';

tweet = 'RoboCop je funkčný … čaká na velenie';

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

reponse = webwrite (názov hostiteľa, údaje);

%neustále bežiaca slučka

pričom 1 == 1

%Štruktúry obsahujúce relaventné údaje

o = m.orientácia; %orientácie mobilného zariadenia

light = r.getLightBumpers (); %Hodnoty svetelného nárazníka

a = r.getCliffSensors (); Hodnoty senzora CLiff

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

%skontrolovať nárazníky

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

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

%kontrolných svetelných senzorov

elseif svetlo.vľavo> 60 || light.leftFront> 60 || light.leftCenter> 60 || light.right> 60 || light.rightFront> 60 || light.rightCenter> 60

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

%skontrolujte Cliff Sensors

%Signál a upozornenie proti krádeži

elseif a.vľavo <300 && a.right <300 && a.leftFront <300 && a.rightFront <300

r.stop ();

r.beep ();

tweet = 'RoboCop bol zrušený!'

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

reponse = webwrite (názov hostiteľa, údaje);

%Normálna operácia vyhýbania sa útesu

elseif a.vľavo <300 || a.right <300 || a.vľavo Vpredu <300 || a. vpredu <300

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

%Roomba prešiel kontrolami a teraz bude bežať s normálnou prevádzkou.

%Najprv sa zmeria kotúč zariadenia a stane sa základňou

%rýchlosti, ktorá sa potom použije na výpočet rýchlosti kolesa

%Pohyb vpred

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

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

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

inak r.stop

koniec

%Spätný pohyb

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

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

r.beep ();

r.beep ();

%odpočívajúceho roomba bude hľadať mimozemskú vlajku označenú ako fluorescenčnú

%zeleného kusa papiera

inak

r.stop

img = r.getImage (); %urobte obrázok

prahová hodnota = sivá (obr. (200: 383,:, 2))+. 1; %vypočítať zelenú úroveň

ak je prah> 0,42

tweet = 'Enemy Spotted !!'

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

reponse = webwrite (názov hostiteľa, údaje);

inak

r.stop

koniec

koniec

koniec

Krok 4: Záver

Pamätajte si, že môžete použiť skript, ktorý sme napísali vyššie, ale môžete ho kedykoľvek zmeniť tak, aby vyhovoval vašim potrebám. Nemusí byť ovládaný vašim telefónom! (Je to však zábavnejšie.) Vyberte si metódu, ktorú chcete na ovládanie svojho robota používať. Jazdite so svojim robotom a užívajte si!

Odporúča: