REZUMAT…………………………… CAPITOLUL 1…………………………. [309750]
PROIECT DE DIPLOMĂ
Coordonator științific:
Ștefan-Pal Murvay
Absolvent: [anonimizat] 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, [anonimizat], 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……………….
– [anonimizat]/ CATIA ( o am deja ) a robotului
– PASI IN PROIECTARE UNUI ASTFEL DE ROBOT ACASA ( mic tutorial cu bulleti)
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țului robotic sunt motoare servo împreună cu alte componente și obiecte mecanice de rotație.
[anonimizat]/[anonimizat].
Robotul în practică cu program specific poate avea o [anonimizat], așezare, [anonimizat].
Lucrarea prezentată ia decizii în funcție de semnalul transmis către microcontrolerul Arduino Uno de către Open Computer Vision.
[anonimizat]6015, 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.
[anonimizat], sudura etc.
CAPITOLUL 1 INTRODUCERE
Conform wikipedia.ro un robot este „[anonimizat]” [anonimizat].
Mecanica este o parte a fizicii ce studiază schimbarea poziției corpurilor care este numită și mișcare mecanică. În lucrarea ,, Philosophiae Naturalis Principia Mathematica” 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 comenzilor 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 ajuta 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țiale (X, Y și Z), alte tipuri de senzori, influenta mediului exterior asupra sistemului și cunostiinte din multe alte domenii cum ar fi medicina. Cateva exemple de tipuri de senzori: senzor de mișcare, senzor de masurare a pH-ului, radar (este un senzor care 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 grad 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 total ș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 ele 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 : informatică, 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 alt exemplu important in contemporaneitate 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 categorii 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
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 realizat 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 general 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.
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 provizorii 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ă confort, 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ă.
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;
usor accesibil privind interfața;
Dezavantaje:
are un singur port serial;
viteză mică;
2.Arduino MEGA cu urmatoarea prezentare: Microcontroler Atmega1280, 54 pini de intrare/ieșire, 14 pini PWM, 16 pini de intrare analogică, viteza clock-ului 16MHz, 4 porturi seriale și nu este multitasking.
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;
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.
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.
Figura 2.2.1 Arduino UNO cu reprezentarea 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. Iesirile ș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 chip.
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).
Specificații :
Placa Arduino UNO se conectează la portul USB al calculatorului prin intermediul unui cablu de tip USB 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 decâ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 servomotoare 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:
MG995 Metal Gear Servo;
JX Servo DC6015;
MG90S;
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
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
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 shield-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 ce 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
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
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ăstră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 fost 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 enumerate mai sus am mai fost nevoit să folosesc tablă de aluminiu prelucrată, rotițe din plastic combinate ș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.
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 obiectelor, 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 Creo 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.
CAPITOLUL 4: Cum funcționează:
4.1 MONTAJUL
Figura 4.1.1 Montajul proiectului de față
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;
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 MOTOARELOR
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 procesarea 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 referință 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ă servomotoarelor. 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 senzorul 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 tendinț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 specific dispus în variantă gratuită pe pagina web oficială Arduino https://www.arduino.cc/. Codul este ușor de scris, erorile de 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 ,,regula 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 / 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 senzorului 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 funcț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 aduce 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ă valoare 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 programului 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.
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://www.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
https://docs.google.com/document/d/191P6FwTgJ_dWhAhB3eWfP0YMSbI4_7Kehgzw3pYy-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
ANEXĂ 1A: Diagrama pinilor pentru ARDUINO UNO
:
ANEXĂ 2A: Articole folosite la construcția corpului brațului robotic.
,,FUTABA Servo Arm”:
Diametrul exterior : 19.7mm
Diametru găurii: 15MM
Material: Aluminiu
Suport motor servo:
Dimensiuni: 58x37x25,5mm
Greutate: 15,5g
Material: aluminiu
Grosime:2mm
Trusă de șuruburi:
ANEXĂ 3A: Cythron Servo Shield (5A)
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: REZUMAT…………………………… CAPITOLUL 1…………………………. [309750] (ID: 309750)
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.
