Cuprins:

Roomba Cu MATLAB: 4 pași (cu imagini)
Roomba Cu MATLAB: 4 pași (cu imagini)

Video: Roomba Cu MATLAB: 4 pași (cu imagini)

Video: Roomba Cu MATLAB: 4 pași (cu imagini)
Video: let me style you tomboy 2024, Noiembrie
Anonim
Roomba Cu MATLAB
Roomba Cu MATLAB

Acest proiect folosește MATLAB și un robot programabil iRobot Create2. Punând la încercare cunoștințele noastre despre MATLAB, suntem capabili să programăm Create2 pentru a interpreta imagini și a detecta semnale. Funcționalitatea robotului depinde în principal de aplicația mobilă MATLAB și de un modul de cameră Raspberry Pi.

Pasul 1: Piese și materiale

Piese și materiale
Piese și materiale
Piese și materiale
Piese și materiale
Piese și materiale
Piese și materiale
Piese și materiale
Piese și materiale

1. Creați iRobot, versiunea 2

- Acesta este un robot programabil care arată ca un Roomba. Rețineți că acest produs de la iRobot nu este un vid. Este destinat programării personalizate de către utilizator.

2. MATLAB 2017a

- Majoritatea versiunilor mai vechi vor fi compatibile cu codul pe care l-am folosit mai jos. MATLAB va identifica o comandă care nu este compatibilă cu versiunea pe care o aveți și vă va sugera o comandă de potrivire optimă.

3. Raspberry Pi 3 Model B, versiunea 1.2

- Verificați pentru a vedea ce Raspberry Pi este compatibil cu iRobot. Consultați acest link pentru asistență suplimentară: https://www.irobotweb.com/~/media/MainSite/PDFs/A… Acest instructiv presupune că lucrați cu un Raspberry Pi preprogramat. Rețineți că va trebui să lucrați cu un Pi preprogramat pentru ca următorii pași să funcționeze. Utilizarea unui Pi preprogramat vă va permite să efectuați toate codările numai în MATLAB.

4. Camera Module V2 (pentru Raspberry Pi)

- S-ar putea să fii surprins; în ciuda dimensiunilor sale, modulul de cameră Raspberry Pi are o calitate foarte bună. Este cea mai ieftină și mai compatibilă opțiune pentru acest proiect.

Opțional: suport imprimat 3D. Acesta este folosit pentru a stabiliza camera. Nu afectează funcționalitatea robotului, dar vă va ajuta să vă codificați dacă doriți să utilizați date imagistice pentru recunoașterea culorilor și / sau a obiectelor.

Pasul 2: Configurare

Configurare
Configurare
Configurare
Configurare

1. Conectarea Raspberry Pi și modulul camerei (Hardware)

- Pentru a alimenta Raspberry Pi, va trebui să rulați un capăt masculin micro USB la portul de alimentare feminin de pe microcontroler. Opțional: se poate utiliza un regulator de tensiune pentru a se asigura că tensiunea nu depășește 5V. După ce ați alimentat Raspberry Pi, îl puteți conecta la robotul dvs. executând USB a masculin de la placa de bază la portul USB A de pe microcontroler.

- După conectarea dispozitivului Pi la Roomba, camera este gata de instalare. Modulul camerei va fi mult mai mic decât vă așteptați. Rețineți că obiectivul este montat pe un senzor și o bandă albă se extinde de la cameră. NU scoateți sau rupeți panglica! Acesta este cablul de care aveți nevoie pentru a-l conecta la Raspberry Pi. Mai întâi, țineți capătul panglicii și găsiți conectorii argintii și cablul albastru. Acestea sunt pe laturile opuse. Apoi, găsiți slotul dintre porturile Ethernet și HDMI de pe Raspberry Pi. Observați că există o încuietoare mică, albă, care o acoperă. Ridicați încet încuietoarea, dar nu o scoateți din fantă, deoarece se va prinde și va fi deteriorată permanent. După ce ați ridicat încuietoarea, apucați panglica și îndreptați-vă spre conectorii argintii de la portul HDMI. Partea albastră va fi orientată spre portul Ethernet. Glisați încet panglica în slot cât timp este încă deblocat. Nu trebuie să-l forțați în slot. După introducere, împingeți încuietoarea înapoi în jos. Dacă camera dvs. este fixată corespunzător, ar trebui să puteți trage (ușor) de panglică și să simțiți tensiunea. Panglica nu trebuie să fie liberă. După conectarea camerei la Pi, este posibil să observați cât de slăbită este. Acesta este motivul pentru care am folosit o montură imprimată 3D pentru a o stabiliza. Este alegerea dvs. să stabiliți ce materiale doriți să utilizați pentru a vă menține camera nemișcată pentru a obține imagini de înaltă calitate.

2. Instalarea fișierelor adecvate și conectarea Roomba la computer După configurarea întregului hardware, puteți trece acum la instalarea MATLAB împreună cu fișierele m asociate care vă permit să comunicați cu robotul. Pentru a face acest lucru, deschideți MATLAB și creați un folder nou pentru a păstra împreună toate fișierele aferente. Utilizați acest script pentru a instala / actualiza fișierele necesare:

- Toate fișierele ar trebui să apară acum în folderul creat. Faceți clic dreapta în fereastra Folder curent și selectați „Adăugați la cale” pentru a adăuga acea cale la lista de directoare în care MATLAB caută fișiere. Asigurați-vă că toate fișierele sunt pe calea corectă.

3. Odată ce fișierele sunt instalate, puteți începe acum să vă conectați la robot. Începeți prin a porni robotul și apoi a-l reseta direct după pornire (nu uitați să resetați robotul de fiecare dată înainte și după utilizare). În al doilea rând, conectați robotul și laptopul la aceeași rețea wifi. După aceasta, vom vorbi cu Raspberry Pi preprogramat prin MATLAB apelând Roomba folosind numele său dat și funcția roomba. De exemplu, m-aș conecta la robotul 28 folosind următoarea linie: R = roomba (28).

- Observați cum am atribuit obiectul unei variabile R. Acum pot accesa funcțiile Roomba asociate din fișierul de instalare tratând variabila R ca o structură.

- R.turnAngle (90) Dacă totul a decurs bine, ar trebui să se redea un ton muzical, confirmând conexiunea.

Pasul 3: MATLAB Logic

Documentul PDF din partea de jos a acestui pas este o diagramă logică detaliată pentru procesul nostru de codificare în MATLAB. Am activat senzorii de stâncă, lumină și lumină pentru a permite robotului să comunice cu noi atunci când detectează un obiect în imediata sa vecinătate. De exemplu, atunci când robotul se deplasează înainte, senzorii săi de lumină caută obiecte aflate în cale în funcție de vectorul la care călătorește. Am ales un prag de distanță pentru robot, astfel încât atunci când se apropie de un obiect, acesta să inverseze în loc să se ciocnească de el. Robotul nostru este, de asemenea, configurat cu Twitter, pe care l-am specificat în procesul nostru de codificare (acest lucru va fi afișat mai jos).

Pentru a îmbunătăți experiența, am folosit aplicația MATLAB de pe dispozitivele noastre mobile, astfel încât să putem controla mișcările robotului doar înclinând telefoanele noastre. Aceasta este o activitate opțională, deoarece puteți schimba robotul cu siguranță folosind comanda moveDistance în segmentul de cod MATLAB. Rețineți că utilizarea comenzilor MATLAB pentru a vă controla robotul este preferată dacă scopul dvs. este să fie precis. Dacă doriți să vă orientați robotul astfel încât camera să facă o fotografie într-o anumită locație, ar putea fi mai bine să codați mișcările robotului în MATLAB. În timp ce vă distrați, utilizarea aplicației MATLAB pentru a vă controla robotul nu este de dorit pentru precizie.

Codul comandă Roomba să efectueze o configurare de bază, apoi să continue printr-o buclă continuă. Inițial laptopul va configura o legătură cu Roomba folosind comanda Roomba (). De asemenea, configurează conexiunea twitter utilizând comanda webwrite () în MATLAB. Bucla conține cinci fluxuri logice principale, în funcție de mediul din jurul Roomba. Mai întâi Roomba verifică obstacolele și se reglează înapoi dacă constată că este împiedicat. Incorporată în acea buclă este a doua cale care avertizează utilizatorii dacă Roomba este dus. O utilitate importantă în zona de război marțiană aspră. După ce Roomba a stabilit că poziția sa este sigură, se uită la dispozitivul mobil pentru a determina următoarea sa mișcare. Dacă dispozitivul mobil este înclinat înainte, acesta va calcula o viteză de bază în funcție de severitatea măsurării rolei, decât să regleze viteza individuală a roții pentru a se roti în funcție de gradul de pas. De asemenea, telefonul poate muta Roomba în sens invers. O stare neutră a dispozitivului mobil pornește cele două căi finale. Un Roomba în repaus va căuta un steag Alien și va avertiza utilizatorul în consecință.

Mai jos este codul nostru (completat în MATLAB 2017a)

% intrări: date de orientare de pe un dispozitiv conectat la wifi, cameră

% informații, date senzor

% ieșiri: mișcarea este controlată de dispozitivul conectat la wifi și de mișcare

% este verificat de siguranță prin citirea datelor senzorului. Dacă camera detectează

% un steag străin, atunci roomba răspunde prin tweet-ul steagului inamic

% a fost observat.

% scop: dispozitivul nostru nu trăiește decât cu scopul de a-i proteja pe cei care

% l-a creat, își servește creatorul și face

% exact ce i-a spus.

% Utilizare: în esență, programul va rula singur.

șterge totul, închide totul, clc

% Inițializarea obiectelor și variabilelor

r = roomba (28);

m = mobiledev;

% folosi răspuns = webwrite (nume de gazdă, date)

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

API = 'SGZCTNQXCWAHRCT5';

tweet = 'RoboCop este operațional … Se așteaptă comanda';

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

răspuns = webwrite (nume de gazdă, date);

% buclă care rulează constant

în timp ce 1 == 1

% Structuri care conțin date relevante

o = m. orientare; % orientare dispozitiv mobil

light = r.getLightBumpers (); % Valori ale barei de protecție ușoare

a = r.getCliffSensors (); % Valorile senzorului Cliff

bump = r.getBumpers (); % Senzori bare de protecție

% verificați bare de protecție

dacă bump.right == 1 || bump.left == 1 || bump.front == 1

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

% verificați senzorii de lumină

elseif light.stânga> 60 || light.leftFront> 60 || light.leftCenter> 60 || lumină.dreaptă> 60 || light.rightFront> 60 || light.rightCenter> 60

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

% verificați senzorii Cliff

% Semnal și notificare antifurt

elseif a.stânga <300 && a.right <300 && a.leftFront <300 && a.rightFront <300

r.stop ();

r.beep ();

tweet = 'RoboCop a fost ridicat!'

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

răspuns = webwrite (nume de gazdă, date);

% Operațiune normală de evitare a stâncii

elseif a.stânga <300 || a.drept <300 || a.stângaFront <300 || a.rightFront <300

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

% Roomba a trecut verificările și va rula acum cu funcționare normală.

% Inițial, rola dispozitivului este măsurată și devine o bază

% viteză care este apoi utilizată pentru a calcula viteza roții

%Mișcare înainte

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

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

dacă 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)));

altfel r.stop

Sfârșit

% Mișcare înapoi

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

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

r.beep ();

r.beep ();

% resting roomba va căuta steagul străin marcat ca fluorescent

% verde Bucată de hârtie

altceva

r.stop

img = r.getImage (); % ia imaginea

prag = graythresh (img (200: 383,:, 2)) +. 1; % calc nivel verde

dacă prag>.42

tweet = 'Enemy Spotted !!'

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

răspuns = webwrite (nume de gazdă, date);

altceva

r.stop

Sfârșit

Sfârșit

Sfârșit

Pasul 4: Concluzie

Amintiți-vă, puteți utiliza scriptul pe care l-am scris mai sus, dar îl puteți modifica oricând pentru a se potrivi nevoilor dvs. Nu trebuie să fie controlat de telefon! (Cu toate acestea, îl face mai distractiv.) Alegeți ce metodă preferați să utilizați pentru a vă controla robotul. Conduceți-vă cu robotul și bucurați-vă!

Recomandat: