Sadržaj:

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

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

Video: Roomba s MATLAB -om: 4 koraka (sa slikama)
Video: Купили РОБОТА А4 ! *ВЛАД А4 вернулся* 2024, Studeni
Anonim
Roomba s MATLAB -om
Roomba s MATLAB -om

Ovaj projekt koristi MATLAB i iRobot Create2 programabilnog robota. Iskušavajući svoje znanje o MATLAB -u, možemo programirati Create2 za tumačenje slika i otkrivanje signala. Funkcionalnost robota ovisi uglavnom 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 tvrtke iRobot nije vakuum. Namijenjen je prilagođenom programiranju od strane korisnika.

2. MATLAB 2017a

- Većina starijih verzija bit će kompatibilna s donjim kodom. 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 uputa 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.

Opcionalno: postolje s 3D printom. Ovo se koristi za stabilizaciju kamere. Ne utječe na funkcionalnost robota, ali će vam pomoći u kodiranju 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. Izborno: Može se koristiti regulator napona kako bi se osiguralo da napon ne prelazi 5V. Nakon napajanja Raspberry Pi -a, možete ga povezati sa svojim robotom tako što ćete pokrenuti muški kraj USB a s matične ploče na USB priključak A na mikrokontroleru.

- Nakon spajanja 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 proteže se 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 priključke i plavi kabel. To su na suprotnim stranama. Zatim pronađite utor između ethernet i HDMI priključaka na vašem Raspberry Pi. Primijetite da ga prekriva mala, bijela brava. Polako podignite bravu, ali je nemojte vaditi iz utora jer će puknuti i trajno se oštetiti. Nakon što podignete bravu, zgrabite vrpcu i okrenite srebrne priključke prema HDMI priključku. Plava strana bit će okrenuta prema Ethernet priključku. Polako gurnite vrpcu u utor dok je još otključana. Ne morate ga forsirati u utor. Nakon umetanja gurnite bravu natrag prema dolje. Ako je vaša kamera pravilno učvršćena, trebali biste moći (nježno) povući vrpcu i osjetiti napetost. Vrpca ne smije biti labava. Nakon što ste kameru spojili na Pi, možda ćete primijetiti koliko je labav. Zato smo za njegovo učvršćivanje koristili nosač s 3D printom. Vaš je izbor da odlučite koje materijale želite upotrijebiti da fotoaparat ostane miran za snimanje visoke kvalitete.

2. Instaliranje odgovarajućih datoteka i povezivanje Roombe s računalom 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 stvorenoj mapi. Desnom tipkom miša kliknite u prozoru Trenutna mapa i odaberite ‘Dodaj na put’ kako biste taj put dodali na popis direktorija u kojima MATLAB traži datoteke. Provjerite jesu li sve vaše datoteke na ispravnom putu.

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 nakon ponovnog pokretanja čvrsto resetirati (ne zaboravite svaki put prije i nakon uporabe čvrsto resetirati robota). 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).

- Uočite kako sam dodijelio objekt varijabli R. Sada mogu pristupiti povezanim funkcijama Roombe iz instalacijske datoteke tretirajući varijablu R kao strukturu.

- R.turnAngle (90) Ako je sve prošlo dobro, trebao bi zasvirati glazbeni ton koji potvrđuje vezu.

Korak 3: MATLAB logika

PDF dokument na dnu ovog koraka detaljna je logička shema tijeka 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 pretražuju predmete na njegovoj putanji prema vektoru kojim putuje. Odabrali smo prag udaljenosti za robota tako da će se, kad se približi objektu, okrenuti unatrag umjesto sudara s njim. Naš robot također je konfiguriran s Twitterom, š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 izborna 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đenom mjestu, možda bi bilo bolje kodirati kretanja robota u MATLAB -u. Za vrijeme zabave, korištenje MATLAB aplikacije za upravljanje vašim robotom nije poželjno zbog točnosti.

Kôd zapovijeda Roombi da izvrši osnovno postavljanje, a zatim nastavi kroz kontinuiranu petlju. U početku će prijenosno računalo uspostaviti vezu s 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. Najprije Roomba provjerava ima li prepreka i prilagođava se unatrag ako ustanovi da je ometena. U tu petlju ugrađen je drugi put koji upozorava korisnike ako se Roomba odnese. Važna pomoć u surovoj marsovskoj ratnoj zoni. Nakon što je Roomba utvrdila da je njegov položaj siguran, gleda prema mobilnom uređaju kako bi odredila 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 na temelju stupnja koraka. Telefon također može pomicati Roombu unatrag. Neutralno stanje mobilnog uređaja zatvara posljednja dva puta. Roomba u mirovanju potražit će zastavu izvanzemaljca i upozoriti korisnika u skladu s tim.

Ispod je naš kôd (dovrš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 tweetanjem neprijateljske zastave

% je uočeno.

%svrhe: naš uređaj živi bez ikakve svrhe osim za zaštitu onih koji

% stvorio, služi svom tvorcu i čini

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

%Korištenje: u osnovi će se program pokrenuti sam.

počisti sve, zatvori sve, clc

%Inicijalizacija objekata i varijabli

r = roomba (28);

m = mobiledev;

%upotreba odgovora = webwrite (naziv hosta, podaci)

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

API = 'SGZCTNQXCWAHRCT5';

tweet = 'RoboCop je operativan … Čeka se naredba';

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

odgovor = webwrite (naziv hosta, podaci);

%stalno pokrenuta petlja

dok je 1 == 1

%Strukture koje sadrže podatke o zaostalim materijalima

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

svjetlo = r.getLightBumpers (); %Vrijednosti lakih branika

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

bump = r.getBumpers (); %Senzori branika

%odbojnika za provjeru

ako neravnina.desno == 1 || bump.left == 1 || bump.front == 1

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

%Senzori kontrolnog svjetla

inače svjetlo.lijevo> 60 || svjetlo.lijevoSpred> 60 || svjetlo.lijevi centar> 60 || svjetlo.desno> 60 || svjetlo.desnoSpred> 60 || svjetlo.desno središte> 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 (naziv hosta, podaci);

%Normalna operacija izbjegavanja litica

inače ako je a.lijevo <300 || a.desno <300 || a.leftFront <300 || a.desno Prednja <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čun brzine kotača

%Napredno kretanje

inače ako je 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, ako je o (2) = 0

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

inače r.stop

kraj

%Kretanje unatrag

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

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

r.beep ();

r.beep ();

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

%zeleno Komad papira

drugo

r.stop

img = r.getImage (); %snimiti sliku

prag = sivi prag (img (200: 383,:, 2))+. 1; %calc zelene razine

ako je prag>.42

tweet = 'Neprijatelj uočen !!'

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

odgovor = webwrite (naziv hosta, podaci);

drugo

r.stop

kraj

kraj

kraj

Korak 4: Zaključak

Upamtite, možete koristiti skriptu koju smo gore napisali, ali je uvijek možete promijeniti prema svojim potrebama. Telefon ne mora kontrolirati vaš telefon! (Međutim, čini ga zabavnijim.) Odaberite koju metodu želite koristiti za upravljanje svojim robotom. Vozite se sa svojim robotom i uživajte!

Preporučeni: