Sadržaj:

Roomba sa MATLAB -om: 4 koraka (sa slikama)
Roomba sa MATLAB -om: 4 koraka (sa slikama)

Video: Roomba sa MATLAB -om: 4 koraka (sa slikama)

Video: Roomba sa MATLAB -om: 4 koraka (sa slikama)
Video: Who Can Clean Better? #Shorts 2024, Novembar
Anonim
Roomba sa MATLAB -om
Roomba sa MATLAB -om

Ovaj projekt koristi MATLAB i iRobot Create2 programabilnog robota. Stavljajući na znanje naše znanje o MATLAB -u, u mogućnosti smo programirati Create2 za tumačenje slika i otkrivanje signala. Funkcionalnost robota uglavnom ovisi o mobilnoj aplikaciji MATLAB i modulu kamere Raspberry Pi.

Korak 1: Dijelovi i materijali

Dijelovi i materijali
Dijelovi i materijali
Dijelovi i materijali
Dijelovi i materijali
Dijelovi i materijali
Dijelovi i materijali
Dijelovi i materijali
Dijelovi i materijali

1. iRobot Create, verzija 2

- Ovo je programabilni robot koji izgleda kao Roomba. Imajte na umu da ovaj proizvod iz iRobota nije vakuum. Namijenjen je prilagođenom programiranju od strane korisnika.

2. MATLAB 2017a

- Većina starijih verzija bit će kompatibilna s kodom koji smo koristili u nastavku. MATLAB će identificirati naredbu koja nije kompatibilna s verzijom koju imate i predložit će najbolju naredbu.

3. Raspberry Pi 3 Model B, verzija 1.2

- Provjerite koji je Raspberry Pi kompatibilan s vašim iRobotom. Za daljnju pomoć pogledajte ovu vezu: https://www.irobotweb.com/~/media/MainSite/PDFs/A… Ova instrukcija pretpostavlja da radite s unaprijed programiranim Raspberry Pi. Imajte na umu da ćete morati raditi s unaprijed programiranim Pi kako bi sljedeći koraci funkcionirali. Korištenje unaprijed programiranog Pi omogućit će vam da sve svoje kodiranje izvršite samo u MATLAB -u.

4. Modul kamere V2 (za Raspberry Pi)

- Možda ćete se iznenaditi; unatoč svojoj veličini, Raspberry Pi modul kamere je vrlo dobre kvalitete. To je najjeftinija i najkompatibilnija opcija za ovaj projekt.

Opciono: postolje sa 3D štampom. Ovo se koristi za stabilizaciju kamere. To ne utječe na funkcionalnost robota, ali će vam pomoći u šifriranju ako želite koristiti slikovne podatke za prepoznavanje boja i/ili objekata.

Korak 2: Konfiguracija

Konfiguracija
Konfiguracija
Konfiguracija
Konfiguracija

1. Povezivanje Raspberry Pi i modula kamere (hardverski)

- Da biste napajali Raspberry Pi, morat ćete pokrenuti muški kraj mikro USB -a do ženskog priključka za napajanje na mikrokontroleru. Opcionalno: Može se koristiti regulator napona kako bi se osiguralo da napon ne prelazi 5V. Nakon uključivanja Raspberry Pi -a, možete ga povezati sa robotom tako što ćete pokrenuti muški kraj USB a sa matične ploče na USB port A na mikrokontroleru.

- Nakon povezivanja Pi na Roombu, kamera je spremna za instalaciju. Modul kamere bit će mnogo manji nego što očekujete. Imajte na umu da je objektiv montiran na senzor, a bijela vrpca se proteže od fotoaparata. NE uklanjajte i ne kidajte vrpcu! Ovo je kabel koji vam je potreban za povezivanje s Raspberry Pi. Prvo držite kraj vrpce i pronađite srebrne konektore i plavi kabel. Ovo su na suprotnim stranama. Zatim pronađite utor između ethernet i HDMI portova na vašem Raspberry Pi. Primijetite da ga prekriva mala, bijela brava. Polako podignite bravu, ali je nemojte uklanjati iz utora jer će puknuti i trajno se oštetiti. Kada podignete bravu, zgrabite vrpcu i okrenite srebrne konektore prema HDMI priključku. Plava strana će biti okrenuta prema Ethernet portu. Polako gurnite vrpcu u utor dok je još otključana. Ne morate ga silom gurnuti u otvor. Nakon umetanja gurnite bravu natrag prema dolje. Ako je vaša kamera pravilno pričvršćena, trebali biste moći (nježno) povući vrpcu i osjetiti napetost. Traka ne smije biti labava. Nakon što povežete kameru s Pi, možda ćete primijetiti koliko je labav. Zbog toga smo za njegovo učvršćivanje koristili nosač s 3D printom. Vaš je izbor da odlučite koje materijale želite koristiti kako bi fotoaparat ostao miran za visokokvalitetno snimanje.

2. Instaliranje odgovarajućih datoteka i povezivanje Roombe sa računarom Nakon što je sav vaš hardver konfiguriran, sada možete prijeći na instaliranje MATLAB-a zajedno s pripadajućim m-datotekama koje vam omogućuju komunikaciju s robotom. Da biste to učinili, otvorite MATLAB i stvorite novu mapu za držanje svih povezanih datoteka zajedno. Koristite ovu skriptu za instaliranje/ažuriranje potrebnih datoteka:

- Sve datoteke sada bi se trebale pojaviti u vašoj kreiranoj mapi. Desnom tipkom miša kliknite u prozoru Trenutna mapa i odaberite "Dodaj na putanju" da biste tu stazu dodali na popis direktorija u kojima MATLAB traži datoteke. Uvjerite se da su sve vaše datoteke na ispravnoj putanji.

3. Nakon što su datoteke instalirane, sada se možete početi povezivati sa svojim robotom. Počnite tako što ćete uključiti robota, a zatim ga resetirati nakon pokretanja (ne zaboravite da ga svaki put prije i poslije upotrebe resetirate). Drugo, povežite robota i prijenosno računalo na istu WiFi mrežu. Nakon toga ćemo razgovarati s unaprijed programiranim Raspberry Pi -om putem MATLAB -a pozivom Roombe koristeći njeno ime i funkciju roomba. Na primjer, spojio bih se na robota 28 pomoću sljedeće linije: R = roomba (28).

- Primijetite kako sam dodijelio objekt varijabli R. Sada mogu pristupiti povezanim Roomba funkcijama iz instalacijske datoteke tretirajući varijablu R kao strukturu.

- R.turnAngle (90) Ako je sve prošlo dobro, trebao bi svirati muzički ton koji potvrđuje vezu.

Korak 3: MATLAB logika

PDF dokument na dnu ovog koraka je detaljna logička shema toka našeg procesa kodiranja u MATLAB -u. Aktivirali smo senzore litice, svjetla i svjetla kako bismo robotu omogućili komunikaciju s nama kada otkrije objekt u njegovoj neposrednoj blizini. Na primjer, kada se robot kreće prema naprijed, njegovi svjetlosni senzori skeniraju objekte na njegovoj putanji prema vektoru kojim putuje. Odabrali smo prag udaljenosti za robota tako da će se, kada se približi objektu, okrenuti unatrag umjesto sudara s njim. Naš robot je također konfiguriran sa Twitter -om, što smo naveli u procesu kodiranja (to će biti prikazano u nastavku).

Kako bismo poboljšali iskustvo, iskoristili smo aplikaciju MATLAB na svojim mobilnim uređajima kako bismo mogli kontrolirati kretanje robota samo naginjanjem telefona. Ovo je opcionalna aktivnost, jer zasigurno možete pokrenuti robota pomoću naredbe moveDistance u segmentu koda MATLAB. Imajte na umu da je korištenje MATLAB naredbi za upravljanje vašim robotom poželjno ako je vaš cilj precizan. Ako želite usmjeriti robota tako da kamera napravi sliku na određenoj lokaciji, možda bi bilo bolje kodirati kretanje robota u MATLAB -u. Dok se zabavljate, korištenje MATLAB aplikacije za upravljanje vašim robotom nije poželjno zbog tačnosti.

Kôd naređuje Roombi da izvrši osnovno postavljanje, a zatim nastavi kroz kontinuiranu petlju. U početku će laptop postaviti vezu sa Roombom pomoću naredbe Roomba (). Također postavlja twitter vezu pomoću naredbe webwrite () u MATLAB -u. Petlja sadrži pet glavnih logičkih tokova, ovisno o okruženju koje okružuje Roombu. Prvo Roomba provjerava ima li prepreka i prilagođava se unatrag ako ustanovi da je ometena. U tu petlju je ugrađena druga staza koja upozorava korisnike ako se Roomba odnese. Važna pomoć u surovoj marsovskoj ratnoj zoni. Nakon što Roomba utvrdi da je njen položaj siguran, gleda u mobilni uređaj kako bi odredio svoj sljedeći pokret. Ako je mobilni uređaj nagnut prema naprijed, izračunat će osnovnu brzinu ovisno o jačini mjerenja kotrljanja, a zatim će prilagoditi pojedinačne brzine okretanja kotača prema stupnju nagiba. Telefon takođe može pomicati Roombu unatrag. Neutralno stanje mobilnog uređaja zatvara posljednja dva puta. Roomba u mirovanju će potražiti zastavu vanzemaljca i upozoriti korisnika u skladu s tim.

Ispod je naš kôd (završen u MATLAB -u 2017a)

%ulaza: Podaci o orijentaciji s uređaja povezanog putem WiFi -ja, kamere

%informacija, podaci senzora

%izlaza: kretanje kontrolira wifi spojen uređaj i kretanje

% se provjerava sigurnost čitanjem podataka senzora. Ako kamera otkrije

% vanzemaljska zastava tada roomba odgovara tvitanjem neprijateljske zastave

% je uočeno.

%svrhe: naš uređaj živi samo sa svrhom osim da zaštiti one koji

% ga je stvorio, služi svom tvorcu i radi

% tačno ono što je rečeno.

%Upotreba: u osnovi će se program pokrenuti sam.

obriši sve, zatvori sve, clc

%Inicijalizacija objekata i varijabli

r = roomba (28);

m = mobiledev;

%upotreba odgovora = webwrite (ime hosta, podaci)

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

API = 'SGZCTNQXCWAHRCT5';

tweet = 'RoboCop je operativan … Komanda se čeka';

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

odgovor = webwrite (ime hosta, podaci);

%stalno pokrenuta petlja

dok je 1 == 1

%Strukture koje sadrže podatke o zaostalim materijalima

o = m.orijentacija; %orijentacije mobilnog uređaja

light = r.getLightBumpers (); %Vrijednosti lakog branika

a = r.getCliffSensors (); %CLiff senzorske vrijednosti

bump = r.getBumpers (); %Senzori branika

%odbojnika za provjeru

ako je bump.right == 1 || bump.left == 1 || bump.front == 1

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

%Senzori kontrolne lampice

elseif light.left> 60 || light.leftFront> 60 || light.leftCenter> 60 || svjetlo.desno> 60 || light.rightFront> 60 || light.rightCenter> 60

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

%provjerite Cliff Sensors

%Signal i obavijest protiv krađe

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

r.stop ();

r.beep ();

tweet = 'RoboCop je ukinut!'

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

odgovor = webwrite (ime hosta, podaci);

%Normalna operacija izbjegavanja litica

elseif a.left <300 || a.desno <300 || a.leftFront <300 || a.rightFront <300

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

%Roomba je prošao provjere i sada će raditi s normalnim radom.

%U početku se mjeri kotrljanje uređaja i postaje baza

%brzine koja se tada koristi za izračunavanje brzine kotača

%Napred kretanje

inače o (3)> = 0 && o (3) <= 60

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

ako je o (2)> =-70 && o (2) <0

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

inače o (2) = 0

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

else r.stop

kraj

%Kretanje unazad

inače o (3)> 100 && o (3) <150

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

r.beep ();

r.beep ();

%roomba koji se odmara tražit će zastavu vanzemaljaca označenu kao flourescent

%zeleno Komad papira

else

r.stop

img = r.getImage (); %preuzmi sliku

prag = sivopraž (img (200: 383,:, 2))+. 1; %kalc. zelenog nivoa

ako je prag>.42

tweet = 'Neprijatelj uočen !!'

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

odgovor = webwrite (ime hosta, podaci);

else

r.stop

kraj

kraj

kraj

Korak 4: Zaključak

Upamtite, možete koristiti skriptu koju smo gore napisali, ali je uvijek možete izmijeniti prema svojim potrebama. Ne mora biti pod kontrolom vašeg telefona! (Međutim, čini ga zabavnijim.) Odaberite metodu koju više volite koristiti za kontrolu svog robota. Vozite se sa robotom i uživajte!

Preporučuje se: