SPECIALIZAREA : INGINERIA SISTEMELOR PROIECT DE DIPLOM Ă Coordonator ș tiințific: Ștefan -Pal Murvay Absolvent: Toma Mihai -Daniel 2 CUPRINS REZUMAT [608222]
TIMI ȘOARA
2018
UNIVERSITATEA “ POLITEHNICA ” din TIMIȘOARA
FACULTATEA DE AUTOMATICĂ ȘI CALCULATOARE
SPECIALIZAREA : INGINERIA SISTEMELOR
PROIECT DE
DIPLOM Ă
Coordonator ș tiințific:
Ștefan -Pal Murvay
Absolvent: [anonimizat]
2
CUPRINS
REZUMAT……………………………
CAPITOLUL 1……………………….
INTRODUCERE…………………………………………………………………………………. ………………………….3
– Generalitati despre roboti industriali de tip kuka ( tipuri, articulatii, TREBUIE sa o contactez pe
SANDA GRIGORESCU prof. MECATRONICA)
CAPITOLUL 2…………………………………
-Despre componente (motoare, suruburi, tipul gripperulu, materialul folosit, probabil ustensile
folosite)
2.1 Alegerea plăcuței de dezvoltare
2.2 Arduino UNO
2.3. MOTOARELE FOLOSITE
2.4 shield -ul
2.5 materiale folosite
Capitolul 3 …………………..
3.1 OpenCV ( Open Source Computer Vision)
3.1 PTC Creo Parametric2.0
Capitolul 4……………….
– abordarea cu open cv
– PROIECTARE CAD/ CATIA ( o am deja ) a robotului
– PASI IN PROIECTARE UNUI ASTFEL DE ROBOT ACASA ( mic tutorial cu bulleti)
3
REZUMAT
Lucrarea de față își propune să prezinte un robot industrial din gama roboților cu 6 axe de
rotație comandat de microcontroler programabil. Componentele mobile ale brațul ui robotic sunt
motoare servo împreună cu alte componente și obiecte mecanice de rotație.
Comanda unui astfel de robot poate fi realizată manual prin intermediul butoanelor de pe
console specifice, prin controler/microcontroler logic programat cu program prestabilit,iar pentru
roboții industriali reali mai avansați se mai poate realiza controlul manual ce memorează
mișcările acționate asupra robotului de către forța umană.
Robotul în practică cu program specific poate avea o mulțime de întrebuințări precum
alegere, sortare, așezare, luare de decizii referitoare la dimensiuni,culori și orientare în spațiul
disponibil robotului.
Lucrarea prezentată ia decizii în funcție de semnalul transmis către microcontrolerul
Arduino Uno de către Open Computer Vision.
Mișcările de rotație sunt asigurate de către servo -motoare de tipul JX Servo DC6015,
MG995 și MG90S alimentate corespunzator cu aproximativ 5 volti prin intermediul Cytron Servo
Shield.
Robotul are 6 părți mobile cu mișcări pe axele spațiale în următoarea ordine de la bază
către gripper: baza se mișcă pe axa Z, 3 articulații pe axa Y urmate de o articulație pe axa X.
Gripperul este acționat de un motor ce închide și deschide cleștele pe axa Z.
Acest sistem este foarte folositor în industrie pentru selectarea de componente,
manipularea de obiecte, sudura etc.
4
CAPITOLUL 1 INTRODUCERE
Conform wikipedia.ro un robot este „ un operator mec anic sau virtual,artificial” adică un
robot este un sistem compus cu elemente de mecanică, senzori și actuatori dar și un mecanism de
direcționare.
Mecanica este o parte a fizicii ce studiază schimbarea poziției corpurilor care este numită
și mișcare mecanică. În lucrarea ,, Philosophiae Naturalis Principia Mathe matica” a lui Isaac
Newton mecanica clasică înseamna studiul legilor mișcării mecanice a corpurilor ce au viteza de
deplasare mai mica în comparație cu viteza uminii.
Mecanica are urmatoarele ramuri: cinematică, statică și dinamică.
Statica studiază realizarea echilibrului corpurilor sub acțiunea forțelor și a
cuplurilor.
Cinematica reprezinta mișcarea mecanică dând la o parte cauzele.
Dinamica fixează legile mișcării mecanice ținând cont de toate cauzele ce pot
modifica poziția coprurilor.
Un senzor este conform dexonline.ro un dispozitiv tehnic (ultrasensibil) care sesesizează
un anumit fenomen.
Un actuator este conform dexonline.net un element de acționare (motor electromagnetic,
electric etc.) folosit în sistemele automate pentru exectutarea comenz ilor primite direct sau
indirect de la operator (om).
Sistemele mecatronice trebuie să fie capabile să reacționeze în functie de condiții, limite,
parametrii și acțiunea mediului exterior , de aceea sunt folosiți senzori specifici pentru a
monitoriza și a a juta la deciziile finale. Deciziile finale sunt per ansamblu parți ale planului inițial
de dezvoltare a unui robot și de atribuire a functiilor robotului.
Putem spune ca ochiul uman este un senzor optic care detectează obiectele din mediul
înconjurător datorita luminii reflectate de acestea. In practica un astfel de senzor nu este așa usor
de construit ci el se bazeaza pe calcule specifice, coordonate spația le (X, Y și Z), alte tipuri de
senzori, influenta mediului exterior asupra sistemului și cunostiinte din multe alte domenii cum ar
5
fi medicina. Cateva exemple de tipuri de senzori: senzor de mișcare, senzor de masurare a pH –
ului, radar (este un senzor ca re permite detectarea obiectelor pe baza undelor electomagnetice),
senzor de lumina, senzor de toxicitate senzor de temperatura, senzor de presiune etc.
Revenind la subiectul principal un robot trebuie să conțină cateva din următoarele
caracteristici:
– în primul rând un robot nu este natural ci el al fost creat artificial;
– poate ,,simți” prin intermediul senzorilor mediul înconjurător;
– se poate deplasa/mișca pe una sau mai multe axe spațiale de rotație sau de translație;
– este programabil;
– deține un anume gra d de inteligență sau are abiltatea de a lua decizii ce se bazează pe
planul facut în legătură cu interacțiunea sa cu mediul;
– poate manipula lucruri;
Isaac Asimov spune în literatura stiințifico -fantastică (SF) că orice sistem robot trebuie
neaparat să respecte următoarele 3 legi deoarece, ca un final dramatic, un sistem ce iese din mâna
noastra, a omului, la un moment dat, poate sa iasă de sub control tota l și să își ia singur deciziile,
decizii ce ne pot afecta din foarte multe puncte de vedere.
LEGEA 1 : ,, Un robot nu are voie să pricinuiască vreun rău unei ființe
umane, sau, prin neintervenție, să permită ca unei ființe omenești să i se facă
un rău.” [1]
LEGEA 2 : ,, Un robot trebuie să se supună ordinelor date de către o ființă
umană, atât timp cât e le nu intră în contradicție cu Legea 1.”
LEGEA 3 : ,, Un robot trebuie să -și protejeze propria existență, atât timp cât
acest lucru nu intră în contradicție cu Legea 1 sau Legea 2.”
LEGEA 0 = LEGEA SUPREMĂ: ,,Un robot nu are voie să facă vreun rău
umanită ții sau să permită prin neintervenția sa ca umanitatea să fie pusă în
pericol.”
Roboții sunt crea ți prin combinarea disciplinelor : informati că, mecanică și electrotehnică
ca rezultat final având o legătura finală numita mecatronică. Există multe astfel de combinări ale
discoplinelor ce au ca rezultat domenii de dezvoltare a roboților in funcție de planul țintă. Ca un
6
alt exemplu important in c ontemporaneitate ar fi legătura intre biologie și tehnică rezultând
bionica, un domeniu în curs de dezvoltare iar cu parere proprie, având in vedere evoluția omului
acest domeniu niciodata nu va avea pagină de încheiere.
Roboții sunt sortati in multe cate gorii sugestive. Cateva dintre ele ar fi urmatoarele:
– Robot umanoid;
– Robot industrial;
– Robot autonom mobil;
– Robot de servicii;
– Robot jucărie;
– Robot ce explorează;
– Robot militar;
În continuare sunt prezentate pe scurt câteva exemple de tipuri de roboți :
ROBOȚII UMANOID:
Figura 1 .1: Sophia – robot umanoid dezvoltat de compania Hanson Robotics
din Hong Kong
7
Roboții de tipul umanoid reprezintă un întreg proces de decizii ascunse rezultate în urma
condițiilor programate. Din anul 2000 problemele existențiale ale robotului umanoid au luat
sfârșit odata cu apariția ASIMO(Honda). Ei reprezintă pe scurt întruchiparea umană cu membre:
doua brațe și doua picioare prin intermediul cărora pot exectua acțiuni impropriu zis chiar umane.
Cel mai bine realiz at robot umanoid până în prezent este robotul Sophia care a fost
concepută să poata asimila informații din mediul înconjurător și să se adapteze la
comportamentul uman. In 2017 Sophia a devenit cetățean al Arabiei Saudite și este primul robot
care a primit vreodată cetățenia unei țări.
ROBOT INDUSTRIAL:
Figura 1.2: Braț robotic industrial cu 6 axe de rotație
Roboții industriali duc lipsa în genera l de locomoție iar domeniul lor operațional este
restrâns. Sunt foarte întâlniți în liniile de producție iar prima oară când ei au fost introduși a fost
pe linia de producție General Motors în 1961.
Exista o gama variată de roboți industriali printre care se enumeră și: roboți manipulatori,
roboți mobili, din punct de vedere al locomoției : roboți aerieni, roboți mobili pe roți(ex:Hilare II,
Sejourner Rober), roboți pe picioare, roboți acvatici etc.
8
ROBOT EXPLORATOR:
Figura 1.3: Robotul explorator Cryobot ce poate pătrunde în gheață cu ajutorul căldurii
Roboții exploratori sunt folosiți pentru accesul în locaț ii dificile și periculoase. Ei pot fi
telighidați sau parțial autonom. Din cauză că distanțele de transmitere a semnalului comandă
uneori sunt destul de mari unii roboți exploratori au nevoie în dotare de multe alte sisteme ce îi
ajuta sa ia decizii proviz orii corecte, spre exemplu: radare, senzori infrarosu, senzori umiditate,
senzori proximitate etc.
Ca o concluzie a exemplelor prezentate mai sus, roboții sunt utilizați pentru aplicații în
medii periculoase, murdare, plictisitoare, dificil de străbătut cu sarcini de automatizare, asistență,
reparații . Ei sunt folosiți pentru a crește calitatea producțiilor deoarece pot avea o precizie
superioară (micrometrii) față de mâna umană, crește siguranța atunci cand vine vorba de medii
periculoase și nu necesită c onfort, crește eficiența deoarece roboții nu obosesc, reduc costuri
deoarece având o precizie foarte mare scad numărul rebuturilor.
Prin lucrarea prezentă mi -am propus să mă documentez studiind diferite tipuri de roboți
cu mișcările și funcțiile lor, să proiectez și să realizez un sistem robot in care îmbin diverse alte
sisteme și senzori cu scopul de a introduce într -o singura lucrare cunostiintele acumulate de -a
lungul studiului superior de licentă.
9
CAPITOLUL 2: REALIZAREA HARDWARE
2.1 Alegerea plăcuței de dezvoltare
Luând în considerare scopul proiectului și necesitățile putem porni cu întrebari ajutătoare
pentru a alege plăcuța de dezvoltare potrivita adica trebuie aleasă în funcție de caracteristicile
hardware și de arhitectura software.
Principalele caracteristici ale unei plăcuțe de dezvoltare sunt urmatoarele: procesorul
folosit, porturile externe ale plăcuței și prețul.
Pornind de la scopul proiectului și anume luarea unor parametrii din mediul înconjurator
cu ajutorul procesarii video ajutat de biblioteca Open Computer Vision am luat în vedere mai
multe tipuri de plăcuțe de dezvoltare desi procesarea video este facuta cu ajutorul procesorului
laptop -ului.
1. Arduino UNO cu urmatoarea prezentare: Microcontroler ATmega328, 14 pini de
intrare/ieșire, 6 pini PWM, 6 pini intrare analogică , viteza clock -ului 16Mhz, un port serial și nu
este multitasking.
Figura 2.1.1 Plăcuță de dezvoltare Arduino UNO
Avantaje:
– preț scăzut;
– open source;
– ușor de programat;
10
– usor accesibil privind interfața;
Dezavantaje:
– are un singur port serial;
– viteză mică;
2.Arduino MEGA cu urmatoarea prezentare: Microcontroler A tmega1280, 54 pini de
intrare/ieșire, 14 pini PWM, 16 pini de intrare analogică, viteza clock -ului 16MHz, 4 porturi
seriale și nu este multita sking.
Figura 2.1.2: Plăcuță de dezvoltare Arduino MEGA
Avantaje:
– Open source;
– Usor de programat;
– Viteză mare;
– Multe porturi seriale;
Dezavantaje:
– Prețul este crescut;
– Dimensiunile plăcuței sunt mari;
11
3.Arduino LEONARDO cu urmatoarea prezentare: Microcontroler Atmega32u4, 20 pini
de intrare/ieșire, 7 pini PWM, 6 pini de intare analogică, viteza clock -ului 16MHz, un port serial
și nu este multitasking.
Figura 2.1.3: Plăcuță de dezvoltare Arduino LEONARDO
Avantaje:
– Viteză mare;
– Capacitate crescută de prelucrare a datelor;
Dezavantaje:
– Prețul este crescut;
– Un singur port serial;
4. Raspberry Pi cu urmatoarea prezentare: Este un microcomputer, deține sistem de
operare Linux, are capacitate de lucru mare cu viteză superioară, viteza clock -ului 700MHz și
este multitasking.
12
Figura 2.1.4: Plăcuță de dezvoltare Raspberry Pi 2 model B
Avantaje:
– Capacitate de lucru multitasking;
– Viteză de procesare foarte mare;
Dezavantaje:
– Prețul este crescut;
– Programarea plăcuței este dificilă (Linux)
2.2 Arduino UNO
În urma analizei componentelor prezentate mai sus am ales Arduno UNO deoarece
conține caracteristicile corespunzatoare care sunt corespunzătoare proiectului propus. Limbajul
de programare pentru această plăcuță de dezvoltare este accesibil, usor de învățat plus ca a fost
studiat de -a lungul cursurilor. Exista o mulțime de biblioteci compatibile cu Arduno UNO printre
care se enumeră și cele folosite de mine. Prețul este accesibil.
Plăcuța Arduino UNO este capabilă să interpreteze/citească intrări de la senzori precum
lumină, umiditate, puls etc. dar și să transforme o comandă dată într -o iesire precum controlul
unui motor , pornire LED etc.
13
Figura 2.2.1 Arduino UNO cu reprezentar ea pinilor și a componentelor ce formeaza
hardware -ul
Nota: Diagrama pinilor poate fi gasită în anexa 1A
Citirea semnalelor analogice se face cu ajutorul intrărilor analogice. Intrările/ieșirile
digitale redau semnale formate din stări logice 1 sau 0. Iesi rile și intrările PWM (Pulse With
Modulation) sunt pini care pot face moduație în lățime a impulsurilor.
O parte din pini au funcții speciale:
Serial: 0(Rx) și 1 (Tx). Au rolul de receptor (Rx) și transmițător (Tx). Au rolul de
convertor USB/TTL Serial ch ip.
External Interrupts:2 și 3. Pinii pot fi configurați ca pini pentru întreruperi externe.
PWM (Pulse With Modulation): 3, 5, 6, 9, 10 și 11. Sunt ieșiri cu funții PWM pe 8 -biți
prin funcția scrisă analogWrite()ș
LED: 13. Este singurul led conectat la un port și anume portul digital 12. Cand pinul este
HIGH atunci LED -ul este aprins (ON) iar cand este LOW atunci LED -ul este stins (OFF).
14
Specificații :
Placa Arduino UNO se conectează la portul USB al calculatorului prin intermediul
unui cablu de tip US B A-B;
Microcontroler: Atmega328;
Tensiunea de lucru:5V;
Tensiunea de intrare:7 -12V(recomandată) / 6 -20V (minimul respectiv maximul);
Pini digitali:14(6 ieșiri PWM);
Pini analogici:6;
Curent pe fiecare pin de intrare/ieșire:40mA;
Curent 3,3V:50mA;
Memoria Flush:32KB;
SRAM:2KB;
EEPROM:1KB;
Viteza clock -ului:16MHz;
2.3. MOTOARELE FOLOSITE
Pentru mișcările de rotație ale brațului robotic am ales cinci tipuri de motoare servo .
Raspuns pentru diversitatea lor ar fi că prețurile din Romania sunt mult mai mari de cât cele de pe
site-urile cu articole chinezești și fiind prima dată când lucrez cu servomotoare am vrut sa văd
care este diferența între unul de pret redus și unul cu prețul mai crescut. Într -un final am folosit
doar trei din cele cinci tipuri de servomot oare deoarece un tip din ele nu funcționa corespunzător.
Motoarele servo folosite sunt următoarele cu denumirile specifice de pe website -ul de
unde au fost comandate:
i) MG995 Metal Gear Servo;
ii) JX Servo DC6015 ;
iii) MG90S ;
15
MG995 Metal Gear Servo are următoarele specificații:
Figura 2.3.1 Motor servo MG995
Dimensiuni:40 x 19 x 43 mm
Greutate : aproximativ 69g
Viteză de operare: 0.17sec/60 grade(4.8V fără încărcătură)
Viteză de operare: 0.13sec/60 grade(6.0V fără încărcătură)
Momentul de cuplare: 13kg /cm la 4.8V
Momentul de cuplare: 15kg /cm la 6V
Tensiunea de funcționare: 4.8V -7.2V
Tipul roților: Toate sunt metalice
JX Servo DC6015 are următoarele specificații:
Figura 2.3.2 Motor servo JX – DC6015
16
Dimensiuni:40,5 x 20,2 x 40 mm
Greutate : aproximativ 62g
Viteză de operare: 0.12sec/60 grade(4.8V fără încărcătură)
Viteză de operare: 0.10sec/60 grade(6.0V fără încărcătură)
Momentul de cuplare: 10,7kg/cm la 4.8V
Momentul de cuplare: 14,32kg/cm la 6V
Tensiunea de funcționare: 4.8V -6.6V
Tipul roț ilor: Toate sunt metalice
MG90S cu următoarele caracteristici:
Figura 2.3.3 Motor servo MG99S
Dimensiuni:22.8 x 12.2 x 28.5 mm
Greutate : aproximativ 13.4g
Viteză de operare: 0.1sec/60 grade(4.8V fără încărcătură)
Viteză de operare: 0.08sec/60 grade(6.0V fără încărcătură)
Momentul de cuplare: 1.8kg/cm la 4.8V
Momentul de cuplare: 2.2kg/cm la 6V
Tensiunea de funcționare: 4.8V -6V
Tipul roților: Toate sunt metalice
17
2.4 CYTHRON SERVO SHIELD (5A)
Figura 2.4.1: Cythron Servo Shield (5A) ( ANEXA 3A)
Shield -ul servo Cythron (5A) este compatibil cu plăcuța de dezvoltare Arduino UNO
atașâmdu -se pur si simplu în pinii de ieșire ai controlerului. Are interfață UC00A/UC00C/UART
pentru o comunicare mai ușoară între circuitul utilizatorului (sau PC) și shiel d-ul servo. Prin
utilizarea controlului UART, utilizatorul poate activa motoarele servo independent, poate
controla poziția pentru fiecare motor servo în parte și poate controla viteza motorului servo.
Suportă până la 5A (vârf) și 4A(continuu) din curentul total, este capabil să conducă motorul
servo de la 7V la 25V.
Având in vedere că proiectul de față dispune de 6 motoare servo acest shield este potrivit
deoarece conține 8 canale independente.
Alimentarea lui este data de sursa unui calculator mai vechi c e generează la pinii la care e
conectat shield -ul 12V , 25A, suficienți să țină sistemul ,,pe picioare” .
Figura 2.4.2: Prezentarea generală a sistemului
18
2.5 Senzor de distanță ultrasonic HC -SR04
Figura 2.5.1 Senzor HC -SR04
Tensiunea de funcționare: 5V
Unghiul sub care are efect: mai putin de 30 grade
Distanta : de la 2cm la 500cm
Rezolutia: 1 cm
Fregventă ultrasonică: 40kHz
2.6 MATERIALELE FOLOSITE PENTRU CONSTRUCȚIA BRAȚULUI ROBOTIC
2.6.1 Plăcuță din lemn pentru traforaj
Figura 2. 6.1.1 Plăcuță din lemn pentru traforaj
19
Am folosit plăcuță din lemn pentru traforaj pentru construcția bazei robotului deoarece
față de plexiglas există o frecare mai mare cu rulmenții pusi cu scopul de a echilibra bratul
robotic atât în stânga cat și în dreapta lui.
Este usor de tăiat și ușor de folosit. Se deseneaza modelul dorit cu creionul ca pe o foaie
de hârtie apoi cu fierăstrău cu lamă specială subțire, se decupeaza (taie) modelul desenat urmând
șlefuirea marginilor.
Figura 2 .6.1.2 Fierăs trău pentru traforaj și pânze folosite
2.6.2 Plăcuță de plexiglas
Am folosit plexiglas pentru restul componentelor robotului deoarece arată bine, este usor
de folosit, este ușor de tăiat având acelaș principiu de decupare ca și plăcuța de lemn pentru
traforaj, ușor de găurit cu ajutorul căldurii .
2.6.3 Alte obiecte și materiale folosite pentru construcția robotului
Pentru cuplarea motoarelor cu obiectele am folosit adaptor cu zimți special pentru capul
motorului servo ( ANEXA 2A ). Am fost nevoit sa folosesc pentru combinarea ultimului motor cu
terminalul robotului un suport special pentru servomotorul corespunzător (ANEXA 2A) . Pentru
asamblare și fixare am folosit trusă de șuruburi cu piulițe de dimensiunea M3 de diferite
lungimi (ANEXA 2A) , silicon unde a fos t nevoie adică la formarea muchiilor și nu numai dar și
bandă izolatoare pentru întărire și fixare. La articulații am folosit rulmenți. Pe langă cele
20
enumerate mai sus am mai fost nevoit să folosesc tablă de aluminiu prelucrată, rotițe din plastic
combina te și lipite între ele.
Pentru proiectarea brațului robotului am avut nevoie de mai multe ustensile precum:
bormașină, fierăstraie, stație de lipit, surubelnițe cu diferiți capeți, menghină, polizor, șmirghel,
pilă, sulă, patent, clește etc.
21
CAPITOLUL 3: Prezentrări generale software legate de proiect
3.1 OpenCV ( Open Source Computer Vision)
OpenCV este o bibliotecă de funcții de programare destinată, în principal, viziunii
calculatorului în timp real.
Câteva dintre aplicațiile bibliotecii OpenCV includ și: Estimarea, procesare 2D și 3D,
sistem de recunoaștere a feței, recunoașterea gesturilor, interacțiunea om – calculator (HCI),
urmărirea mișcării , percepția adâncimii de la două camere, identificarea o biectelor, robotică
mobilă, identificarea obiectelor, identificarea culorilor.
OpenCV este scrisă în C++ . Există legături în Python, Java și MATLAB/OCTAVE.
3.2 PTC Creo Parametric2.0
PTC Creo Parametric2.0 conține un set de instrumente 3D pentru proiectare. Este dotat cu
funcții simple dispuse intr -o interfață prietenoasă. Reziltatele priectării sunt piese în sine 3D dar
și scheme și schițe care pot fi tipărite cu imprimante 3D respectiv imprimante normale cand vine
vorba de schițe.
Am folosit Cr eo deoarece pe viitor vreau să îmi îmbunătățesc performanțele în construirea
roboților începând cu proiectarea lor 3D, urmărirea traiectoriilor lor și sfârșind cu asamblarea
pieselor puse în sisteme programate.
22
CAPITOLUL 4: Cum funcționează:
4.1 MONTAJUL
Figura 4.1.1 Montajul proiectului de față
23
24
Cel mai important de precizat este faptul că Cythron Servo Shield(5A) este compativil cu
plăcuța de dezvoltare Arduino UNO si se poate conecta direct în pinii controlerului transmițând
funcțiile pinilor către shield.
Figura 4.1.2 Braț robotic
Alimentarea și comanda motoarelor servo se face prin intermediul shieldul -ui Cythron
Servo Shield iar figura 4.1.2 reprezintă numerotarea motoarelor servo care ajută la identificarea
tranzmiterii semnalului de control pe cele 8 canale(necesare doar 6).
Canalul 1: Servomotorul numărul 1 spus și bază;
Canalul 2: Servomotorul numărul 2 spus și umăr;
Canalul 3: Servomotorul numărul 3 spus și cot;
Canalul 4: Servomotorul numărul 4 spus și încheietură;
Canalul 5: Servomotorul numărul 5 spus și rotirea încheieturii;
25
Canalul 6: Servomotorul numărul 6 spus și gripper;
Senzorul de proximitate este legat la shield la pinul de 5V, Gnd, Trig la pinul 5 și Echo la
pinul 6.
4.2 SINCRONIZAREA MOTO ARELOR
Motoarele au atribuite funcții diferite și nu sunt controlate forțat ci sunt controlate datorită
deciziilor luate de senzor și procesarea făcută pe laptop.
Motoarele servo de pe canalul 1 și 4 fac parte din grupul celor ce iau decizii de procesare a
video adica existând 2 axe de coordonate in procesarea de imagine în timp real servomotorul de
pe canalul 1 se mișcă doar când obiectul se deplasează față de referință pe axa X iar cel de pe
canalul 4 se mișcă doar când obiectul se deplasează față de ref erință pe axa Y. Deplasarea lor este
de fapt o incercare de a aduce obiectul țintă pe poziția O(X,Y) = O(0,0).
Există sincronizare și între motoarele servo de pe canalele 2 și 3. Decizia este luată de
senzorul ultrasonic HC -SR04 ce dă comandă servomotoare lor. Cele 2 servomotoare sunt
sincronizate între ele în urma unui efort de testare a lor. Servomotorul de pe canalul 2 mapează
semnalul dat de senzorul ultrasonic și se rotește normal. Ca terminalul să rămână paralel cu solul
maparea semnalului dat de senz orul ultrasonic am impărțit -o la 1,2 pentru a atribui și
servomotorului de pe canalul 3. Ideea de funcționare este următoarea: dacă senzorul ultrasonic
detectează sub valoarea minimă brațul se retrage iar dacă detectează peste valoarea maximă
brațul are te ndința de a veni spre obiect.
Pe canalele 5 și 6 se afla rotirea încheieturii adica motorul 5 respectiv acționarea
griperului adica motorul 6 ( Figura 4.1.2 ) folosite pentru a arăta posibilitatea de mișcare
completă a brațului robotic. Pentru a face acest lucru toate celelalte funcții sunt anulate și se trece
ori pe control manual cu ajutorul butoanelor ori cu ajutorul mișcărolor predefinite din program.
4.3 MEDIILE DE PROGRAMARE
4.3.1 ARDUINO
Codul arduino scris este interpretat datorită softului sp ecific dispus în variantă gratuită pe
pagina web oficială Arduino https://www.arduino.cc/ . Codul este ușor de scris, erorile de
26
compilare sunt înțelese usor și oferă indicații dar si posibilitatea de a copia eroarea căutând
îndrumare pe internet. Există o gama mare de biblioteci specifice de componente atașabile și
controlabile cu ajutorul plăcuței de dezvoltare Arduino UNO.
Portul folosit pentru transmiterea de comenzi este ,,COM3”. Este necesar să se păstreze
acest port deoarece ar trebui modificat in codul java din Pricessing 3.
Pentru început, documentația pentru Cythron Servo Shield conține si link cu bibliotecă
specifică compatibilă pentru interpretorul de cod arduino unde există acces la codul în sine pentru
tot ce poate să facă cu shieldul dar și îndrumări. Comanda ,,#include <CytronServoShield.h>”
reprezintă includerea și apelarea la elemente din biblioteca shieldului.
Pentru controlul motoarelor servo am folosit conexiunea serială ,,SoftwareSerial
mySerial(2, 3); // RX, TX ” și comenzile pentru acționare sunt următoarele:
,,servo.on_off_motor(CANAL, STARE);” – comandă ce pornește sau oprește unul
din cele 8 canale . Starea poate fi 1/0 adică pornit sau oprit. Se pot porni sau opri
toate canalele deodata prin CANAL = ALL_CHANNELS;
,, servo.set_ch_initial_pos(CANAL,POZITIE);” – se setează poziția inițială a
servomotorului de pe canalul CANAL =[1 -8] dar se dă și poziția inițială care
poate fi de la 0 -8000. Pozițiile inițiale le -am calculat spre exemplu cu ,,regul a de
trei simplă” adică dacă la 8000 ->180grade la x ->56;
,,servo.set_ch_pos_spd(CANAL,POZIȚIE,VITEZĂ);” – se setează canalul(1 -8)
sau toate canalele și poziția dorită. Viteza ia valori de la 1 -100 și reprezintă la
propriu viteza de rotație a motorul servo de la poziția în care se află în momentul
curent la poziția dorită.
Senzorul de proximitate HC -SR04 nu necesită bibliotecă proprie dar am avut nevoie să
fac câteva artificii pentru a funcționa corect sistemul.
Transformarea din microsecunde în centimetrii am facut -o în funcția din cod long
,,microsecundeCentimetrii(long microseconds)” ce îmi returneaza ,, return microseconds / 29 /
27
2;” = x centimetrii. A fost necesară pentru afisarea in Serial Monitor . Pentru a afișa am folosit
funcția ,,Serial.print ()”.
Transmiterea semnalului către motor se face prin funcția următoare ,, pos = map(intrarea
senzorului, minimul intrării senzorului,maximul intrării senzorului,minimul servomotorului ,
maximul servomotorului);”. Când senzorul detectează minimul intrării senz orului ar trebui ca
servomotorul să se afle la valoarea minimă dată servomotorului.
Valorile inițiale ale motoarelor servo sunt facute cu ajutorul unei funcții de tipul flag
adica activez funcția, servomotoarele se duc pe pozițiile dorite și dezactivez fun cția. Am facut
acest lucru deoarece daca foloseam pur și simplu comanda ,servo.set_ch_initial_pos( , )” nu
puteam controla viteza lor de la pozițiile momentane la pozițiile dorite.
Pentru primirea de date din software -ul Processing 3 am utilizat funcția ,,void
recvWithStartEndMarkers ()” care daca transmiterea serială se poate face se vor transmite prin
serial caractere specifice interpretabile de cod adică unde se află obiectul țintă în momentul de
față și cum trebuiesc mișcate motoarele servo pentru al ad uce la punctul de referință. Caracterele
de început și sfârșit pentru a începe sau a încheia transmiterea pe serial sunt ,,<” respectiv ,,>”.
Datele primate sunt x_pos și y_pos. Cele doua reprezintă poziția unde se află obiectul în
spațiul axelor X și Y. Dacă obiectul se va afla deasupra referinței pe axa Y servomotorul de pe
canalul 4 corespunzător axei Y va primi valoarea y_pos citită, i se va atribui această val oare adică
va fi incrementat până când obiectul va fi pe referință.
4.3.2 PROCESSING 3
Codul scris în software -ul Processing 3 este java. Processing 3 este un software specific
pentru proiecte mici și medii (lipsesc foarte multe funcționalități ale progra mului utile
programatorilor). Processing 3 poate fi descărcat gratis de pe pagina web oficială
https://processing.org/ . Există foarte multe tutoriale pentru proiectarea de interfețe, utilizarea de
biblioteci și de funcții dar și mici proiecte orientative în care se folosesc cele precizate anterior.
Nu am folosit alt software deoarece am mai luat legături cu el lucrând la alte priecte și codul java
pentru transmiterea parametrilor citiți din chenarul cu imaginea primită de la camera web l -am
scris ajutat de internet comform linkurilor atasate in bibliografie.
28
BIBLIOGRAFIE :
https://ro.wikipedia.org/wiki/Robot#cite_note -1
https://ro.wikipedia.org/wiki/Sophia_(robot)
https://www.alibaba.com/product -detail/6 -axis-industrial -robot -industrial –
robot_60498256063.html
https://en.wikipedia.org/wiki/Arduino_Uno
https://reprap.org/wiki/Arduino_Mega
https://commons.wikimedia.org/wiki/File:Arduino_Leonardo.jpg
https://ro.wikipedia.org/wiki/Raspberry_Pi
https://forum.arduino.cc/index.php?topic=146315.0
https://www.robofun.ro/arduino_uno_v3
https://ww w.arduino.cc/
https://www.banggood.com/Tower -Pro-MG90S -Metal -Gear -RC-Micro -Servo -For-RC-
Model -p-74870.html? rmmds=search&stayold=1&cur_warehouse=CN
https://www.banggood.com/MG995 -High -Torgue -Mental -Gear -Analog -Servo -p-
73885.html?rmmds=myorder
https://www.banggood.com/JX -Servo -DC6015 -14_32kg -Coreless -Metal -Gear -High -Torque –
Digital -Servo -For-RC-Models -p-1160021.html?rmmds=myorder&stayold=1
https://www.banggood.com/JX -PDI-6221MG -20KG -Large -Torque -Digital -Coreless -Servo –
For-RC-Model -p-973947.html?rmmds=myorder
29
https://docs.google.com/document/d/191P6FwTgJ_dWhAhB3eWfP0YMSbI4_7Kehgzw3pY
y-AY/view#
https://github.com/CytronTechnologies/Cytron_Servo_Shield_Library
https://en.wikipedia.org/wiki/OpenCV
https://dl.acm.org/citation.cfm?id=2206309
https://en.wikipedia.org/wiki/OpenCV#cite_note -1
http://www.cadventure.ro/produse/ptc -creo/proiectare -3d-cad/ptc -creo-parametric/
http://codingtra.in
http://patreon.com/codingtrain
https://youtu.be/1scFcY -xMrI
30
ANEXĂ 1A: Diagrama pinilor pentru ARDUINO UNO
31
:
ANEXĂ 2A: Articole folosite la construcția corpului brațului robotic.
32
1) ,,FUTABA Servo Arm”:
– Diametrul exterior : 19.7mm
– Diametru găurii: 15MM
– Material: Aluminiu
2) Suport motor servo:
– Dimensiuni: 58x37x25,5mm
– Greutate: 15,5g
– Material: aluminiu
– Grosime:2mm
3) Trusă de șuruburi:
ANEXĂ 3A: Cythron Servo Shield (5A)
33
Fișa cu date se poate gasi în următorul link:
https://docs.google.com/document/d/191P6FwTgJ_dWhAhB3eWfP0YMSbI4_7Kehgzw3pYy –
AY/view# furnizată de https://www.cytron.io/ .
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: SPECIALIZAREA : INGINERIA SISTEMELOR PROIECT DE DIPLOM Ă Coordonator ș tiințific: Ștefan -Pal Murvay Absolvent: Toma Mihai -Daniel 2 CUPRINS REZUMAT [608222] (ID: 608222)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
