GENERAREA CODULUI G P ENTRU CONTROLUL NUMERIC AL UNUI BRAȚ ROBOTIC SERIAL PROIECT DE DIPLOMĂ Autor: Alina -Maria POPA Conduc ător științ ific:… [626073]

FACULTATEA DE AUTOMATIC Ă ȘI CALCULATOARE

GENERAREA CODULUI G P ENTRU CONTROLUL
NUMERIC AL UNUI BRAȚ ROBOTIC SERIAL

PROIECT DE DIPLOMĂ

Autor: Alina -Maria POPA

Conduc ător științ ific: Prof.dr.ing. Petru DOBRA

FACULTATEA DE AUTOMATIC Ă ȘI CALCULATOARE

DECAN
Prof.dr.ing. Liviu MICLEA Vizat,

DIRECTOR DEPARTAMENT AUTOMATIC Ă
Prof.dr.ing. Honoriu VĂ LEAN

Autor : Alina -Maria POPA

Generarea codului G pentru controlul numeric al unui braț
robotic serial

1. Enunțul temei: Crearea unui sistem ce primește ca și mărime de intrare o imagine
color și are abilitatea de a genera la ieșire un fișier G -code ce va fi folosit în scopul
controlului numeric al unui bra ț robotic serial.
2. Conținutul proiectului: Pagina de prezentare , Declara ție privind autenticitatea
proiectului, S inteza proiectului , Cuprins, Introducere,Studiu bibliografic, Analiză ,
proiectare și implementare, Concluzii, Bibliografie, Anexe.

3. Locul documentației: Universitatea Tehnic ă din Cluj -Napoca , firma Robert BOSCH
Cluj-Napoca

4. Consultanți: ing. Vasile -Gabriel ȘANDRU

5. Data emiterii temei: 8 Noiembrie 2017

6. Data predării: 9 Iulie 2018

Semnătura autorului

Semn ătura c onduc ătorului științ ific

FACULTATEA DE AUTOMATIC Ă ȘI CALCULATOARE

Declarație pe proprie răspundere privind
autenticitatea proiectului de diplomă

Subsemnatul(a) Alina -Maria POPA ,
legitimat(ă) cu CI/BI seria AX nr. 528559 , CNP [anonimizat],
autorul lucrării:
Generarea cod ului G pentru controlul numeric al un ui braț robotic serial

elaborată în vederea susținerii examenului de finalizare a studiilor de licență la
Facultatea de Automatică și Calculatoare , specializarea Automatică și Informatică
Aplicată, din cadrul Universității Tehnice din Cluj -Napoca, sesiunea Iulie 2018 a anului
universitar 2017 -2018 , declar pe proprie răspundere, că această lucrare este rezultatul
propriei activități intelectuale, pe baza cercetărilor mele și pe baza informațiilor obținute
din surse care au fost citate, în textul lucrării, și în bibliografie.
Declar, că această lucrare nu conține porțiuni plagiate, iar sursele bibliografice au
fost folosite cu respectarea legislației române și a convențiilor internaționale privind
drep turile de autor.
Declar, de asemenea, că această lucrare nu a mai fost prezentată în fața unei alte
comisii de examen de licență.
In cazul constatării ulterioare a unor declarații false, voi suporta sancțiunile
administrative, respectiv, anularea examenulu i de licență .

Data Prenume NUME
Alina- Maria POPA

(semnă tura)

FACULTATEA DE AUTOMATIC Ă ȘI CALCULATOARE

SINTEZA
proiectului de diplomă cu titlul:
Generarea codului G pentru controlul numeric al unui braț
robotic serial

Autor: Alina -Maria POPA
Conduc ător științ ific: Prof.dr.ing. Petru DOBRA

1. Cerințele temei: Proiectul propune realizarea controlului numeric al unui braț
robotic serial. Acest lucru se dorește a fi realizat prin crearea unui sistem care primește
ca și mărime de intrare o imagine preluată de la o cameră web sau una selectată dintr -un
fișier, care supusă procesării de imagine, va permite preluarea informațiilor necesare
generării unui fișier G -code. Acest fișier va fi ulterior transmis brațului robotic, care va fi
capabil să deseneze imaginea oferită ca și intrare.

2. Soluții alese: procesarea imag inii în mediul de programare Matlab/Simulink,
utilizarea funcțiilor specifice toolbox -ului Image Processing integrat în mediul Matlab,
calculul coordonatelor necesare scrierii fișierului G -code, generarea fișierului G -code cu
mediul Matlab, controlarea brațului robotic printr -o aplicație dezvoltată în mediul Qt.

3. Rezultate obținute: rezultatele obținute în urma efectuării experimentelor
practice denotă faptul că soluția aleasă este satisfăcătoare, urmărind în cea mai mare
proporție performanțele așteptate.

4. Testări și verificări: Testarea și verificarea rezultatelor s -a realizat atât prin
intermediul aplicației dezvoltate și prezentate î n lucrarea de față, cât și printr -o altă
soluție existentă. În acest fel s -a realizat o analiză comparativă între cel e două soluții,
pentru a determina validitatea rezultatelor.

5. Contribuții personale: documentarea asupra aspectelor legate de funcționarea
unui robot serial, ce reprezintă o comandă numerică, ce este codul G, cum poate fi
prelucrată o imagine în vederea obținerii unor informații legate de aceasta, modalitatea

FACULTATEA DE AUTOMATIC Ă ȘI CALCULATOARE
de extragere a coordonatelor dintr -un contur, generarea fișierului G -code cu mediul
Matlab

6. Surse de documentare: sunt constituite în principal din materiale
documentate în limba engleză, dar și în limba română și includ: articole științifice, cărți,
suporturi de curs, diverse pagini de internet, majoritatea reprezentând publicații
disponibile online.

Semnătura autorului Alina- Maria POPA

Semn ătura conduc ătorului științ ific

1 Cuprins
1 INTRODUCERE ……………………………………………………………………………………………………………….. 3
1.1 CONTEXT GENERAL ………………………………………………………………………………………………………….. 3
1.2 OBIECTIVE …………………………………………………………………………………………………………………….. 4
1.3 SPECIFICAȚII ………………………………………………………………………………………………………………….. 5
2 STUDIU BIBLIOGRAFIC …………………………………………………………………………………………………….. 7
2.1 SISTEME CU COMANDĂ NU MERICĂ ………………………………………………………………………………………… 7
2.2 CODUL G ……………………………………………………………………………………………………………………… 8
2.3 COMANDA NUMERICĂ DIRE CTĂ ………………………………………………………………………………………….. 10
2.4 SISTEME CAD/CAM ……………………………………………………………………………………………………… 11
2.5 MAȘINI CNC VERSUS ROBOȚI ……………………………………………………………………………………………. 12
2.6 ROBOȚI SERIALI …………………………………………………………………………………………………………….. 13
3 ANALIZĂ, PROIECTARE, IMPLEM ENTARE ………………………………………………………………………….. 16
3.1 SOFTWARE ………………………………………………………………………………………………………………….. 16
3.1.1 Mediul de programare Matlab/Simulink ………………………………………………………………….. 16
3.1.2 Mediul de programare Qt ………………………………………………………………………………………. 17
3.2 HARDWARE …………………………………………………………………………………………………………………. 18
3.2.1 Robotul DO BOT Magician ………………………………………………………………………………………. 18
3.2.2 Software -ul DoBot Studio ………………………………………………………………………………………. 18
3.3 TOOLBOX -UL IMAGE PROCCESING ……………………………………………………………………………………….. 19
3.3.1 Stocarea imaginilor în mediul Matlab/Simulink ………………………………………………………… 20
3.3.2 Preluarea de imagine de la o cameră web ……………………………………………………………….. 21
3.3.3 Conversia RGB – BW ………………………………………………………………………………………………. 21
3.3.4 Detectarea contururilor într -o imagine…………………………………………………………………….. 22
3.3.5 Extragerea contururilor din imagine ………………………………………………………………………… 23
3.3.6 Tipuri de detectoare de contururi ……………………………………………………………………………. 23
3.4 DESCRIEREA APLICAȚIEI ……………………………………………………………………………………………………. 24
3.5 INTERFAȚA GRAFICĂ CU UTILIZATORUL ………………………………………………………………………………….. 25
3.6 MODULUL 1 – ACHIZIȚIA VIDEO /PHOTO ȘI SELECTAREA IMAGINII DIN FIȘIER ……………………………………….. 26
3.7 MODULUL 2 – PROCESAREA DE IMAGINE ………………………………………………………………………………. 28
3.7.1 Funcția overlay() …………………………………………………………………………………………………… 28
3.7.2 Filtrarea imaginii …………………………………………………………………………………………………… 30
3.7.3 Extragerea contururilor …………………………………………………………………………………………. 31
3.7.4 Generarea codului G ……………………………………………………………………………………………… 33
3.8 MODULUL 3 – REALIZAREA DESENULUI …………………………………………………………………………………. 34
3.9 TESTARE ȘI VALIDARE ………………………………………………………………………………………………………. 36
4 CONCLUZII …………………………………………………………………………………………………………………… 40
4.1 REZULTATE OB ȚINUTE ……………………………………………………………………………………………………… 40
4.2 DIRECȚII DE DEZVOLTARE ………………………………………………………………………………………………….. 41
5 BIBLIOGRAFIE ………………………………………………………………………………………………………………. 42

Introducere
2 Lista de figuri

Figura 2.1 Mașină cu comandă numerică pentru gravarea lemnului ………………………… 8
Figura 2.2 Cod G pentru realizarea desenului feței zâmbitoare …………………………………. 9
Figura 2.3 Arhitectura unui sistem DNC ………………………………………………………………………. 11
Figura 2.4 Structura unui sistem CAD/CAM ………………………………………………………………… 12
Figura 2.5 Robot serial …………………………………………………………………………………………………….. 13
Figura 2.6 Structura roboților seriali versus structura roboților paraleli ……………… 14
Figura 3.1 Interfața cu utilizatorul a mediului de programare Matlab/Simulink …. 16
Figura 3.2 Interfața cu utilizatorul a mediului de programare Qt ……………………………. 17
Figura 3.3 Brațul robotic DOBOT Magician ………………………………………………………………….. 18
Figura 3.4 Interfața cu utilizatorul a software- ului DoBot Studio ……………………………. 19
Figura 3.5 Segmentarea vaselor de sânge la nivelul retinei ……………………………………… 20
Figura 3.6 Identificarea obiectelor într -o imagine ……………………………………………………… 20
Figura 3.7 Logitech C270 …………………………………………………………………………………………………. 21
Figura 3.8 Conversie imagine RGB în GRAY …………………………………………………………………. 22
Figura 3.9 Conversia imaginii din culori RGB în nuanțe de gri ………………………………… 22
Figura 3.10 Schema de funcționare a sistemului ………………………………………………………… 25
Figura 3.11 Interfața grafică cu utilizatorul …………………………………………………………………. 25
Figura 3.12 Funcția pentru preluarea imaginilor de la camera web ……………………….. 26
Figura 3.13 Realizarea capturii în interfața grafică ……………………………………………………. 27
Figura 3.14 Funcția pentru realizarea capturii ……………………………………………………………. 27
Figura 3.15 Citirea logo -ului BOSCH și preluarea informațiilor legate de
dimensiunea imaginilor ce urmează a fi suprapuse …………………………………………………… 28
Figura 3.16 Bucla for pentru realizarea overlay -ului ………………………………………………… 29
Figura 3.17Realizarea overlay -ului în interfața graf ică …………………………………………….. 29
Figura 3.18 Imaginea filtrată în interfața grafică ………………………………………………………… 30
Figura 3.19 Extragerea contururilor prin detectoru l de contururi Canny ……………… 31
Figura 3.20 Implementarea selecției tipului de identificator dorit …………………………. 31
Figura 3.21 Extragerea coordonatelor conturului ……………………………………………………… 32
Figura 3.22 Tran sformarea indicilor pixelilor în coordonate milimetrice …………….. 33
Figura 3.23 Scrierea fișierului G -code …………………………………………………………………………… 33
Figura 3.24 Plotarea punctelor px și py ………………………………………………………………………… 34
Figura 3.25 Secvență d e cod Qt de citire a fișierului G -code …………………………………….. 35
Figura 3.26 Interfața grafică din Qt ……………………………………………………………………………….. 35
Figura 3.27 Desen realizat p rin aplicața în formatul inițial ………………………………………. 36
Figura 3.28 Rezultat ul după soluționarea extragerii coordonatelor ………………………. 37
Figura 3.29 Rezultatul după calibrarea axei z ……………………………………………………………… 38
Figura 3.30 Portret realizat cu software- ul DoBot Studio …………………………………………. 38

Introducere
3
1 Introducere
1.1 Context general
O dată cu evoluția umanității, nevoile acesteia au devenit pe cât de diverse, pe atât
de complexe, acest fapt conducând la construirea diferitor unelte menite să simplifice
munca de zi cu zi a oamenilor. Astfel, de la invenția primei roți și până în prezent, oamenii
au dezvoltat de- a lungul secolelor mașinării tot mai complexe în vederea realizării unor
sarcini pe care în mod normal le desfășoară o persoană. Încă din perioada clasicismului,
ideea de a crea mașinării care pot avea un comportament autonom a fost un subiect de
interes, însă studiul semnificativ al funcționalității și al posibilelor aplicații ale acestora a
început abia în secolul XX. Cu toate acestea, se spune că în sec V -VI î.e.n., matematicianul
grec Archytas din Tarent ar fi realizat una dintre primele invenții automate: un porumbel
din lemn umplut cu aer sub presiune și care propulsat cu vapori era capabil să zboare
singur . Secole mai târziu, o dată cu progresul electrotehnicii din sec. XX, se dezvoltă așa-
numita ramură a roboticii, care până în zilele noastre constituie un domeniu de interes
major.
Robotica este o ra mură a tehnologiei care se ocupă cu studiul, dezvoltarea, crearea
și operarea robo ților si totodată cu proce sarea informațiilor, controlul ș i studiul senzorial
al acestora. Sist emele robotice încorporează principiile ingineriei mecanice, ale ingineriei
electronice și ale informaticii (inteligența artificială) [1]. În prezent, aria roboticii se află
în continuă ascensiune, dezvoltându -se o dată cu tehnologia, astfel că se impune cu
precădere realizarea roboților ce deservesc sarcini cât mai diverse.
Robot ul poate fi definit ca un sistem cu funcționare automată, adaptabilă prin
reprogramarea condițiilor mediului complex si variabil în care acționează, amplificând
sau înlocuind una sau mai multe dintre funcțiile umane în acțiunea sa asupra mediului.
Robotul modern este un sistem complex, programabil cu ajutorul calculatorului, echipat
cu microprocesoare, senzori, sisteme de acționare, structuri mecanice, care are capacitate
de acțiune, de percepere, de decizie ș i de comunicare. [2].
Prezenți în fiecare aspect al vieții noastre, de la simple aspiratoare capabile să curețe
podele, până la roboții industriali utilizați în construcția autoturismelor și a celor trimiși
să exploreze planete din g alaxia noastră, sistemele robotice dispun de trei elemente
esențiale: senzori care adună informațiile din mediul inconjurător, elemente mecanice
care permit interacțiunea cu mediul și unul sau mai multe procesoare prin care
informațiile culese sunt analizate, iar pe baza acestora sunt comandate acțiunile pe care
le efectuează elementele mecanice.
Elementul mecanic care îi permite robotului manipularea diferitor obiecte, se
numește efector final. Acesta este controlat de către dispozitivul de ghidare al robotului,
care asigură mișcările și energia mecanică necesară realiz ării acestora în concordanță cu
acțiunea ce trebuie efectuată. Din punct de vedere al clasificării dispozitivului de ghidare,

Introducere
4 putem vorbi despre roboți cu topologie serială, paralelă și mixtă. Lucrarea de față are ca
și subiect de interes roboții cu topologie serială, în acest caz folosindu -se un braț robotic
serial multifuncțional care permite realizarea unor funcții precum: printare 3D, gravare
cu laser, realizarea unor texte sau desene.
Roboții seriali au de obicei în structura lor 6 cuple cinematice, deoarece este nevoie
de cel puțin șase grade de libertate pentru a putea manipula un obiect și a- l plasa în spațiul
de lucru al robotului. Aceste articulații sunt acționate prin intermediul unor motoare pas
cu pas, care funcționează pe principiul aplicării de impulsuri electrice și convertirea
acestora în mișcări mecanice. În contextul de față, se propune realizarea unei comenzi
numerice a robotului utilizat.
Comanda numerică a unei mașini/robot constă în programarea unui set de
com enzi format din numere, litere și simboluri, care sunt stocate într -un format specific
și înregistrate apoi pe un dispozitiv extern, de obicei un microcontroller. Acest ansamblu
de instrucțiuni, denumit cod G, conține o serie de coordonate (x,y,z) care sunt automat
citite și decodificate, determinând antrenarea motoarelor și implicit mișcarea brațului
robotic de la punctul curent către punctul următor, la fiecare pas.
Așadar, utilitatea roboților este justificată, aceștia înglobând beneficiile unui sistem
capabil, pe baza componentelor hardware și software, de a contribui la calitatea vieții
umane, prin deservirea unor scopuri diverse în numeroase domenii de activitate: medical
(ex. Roboți chirurgicali), educațional (ex. utilizați ca și obiect de studiu în c adrul
laboratoarelor, de către universități, sau direct implicați în educarea copiilor), industrial
(ex. folosiți în procese de asamblare), militar, etc.
1.2 Obiective
În lucrarea de față, autorul și- a propus implementarea unei aplicații destinate
desenării d e portrete și a diferitor ilustrații prin intermediul brațului robotic serial
DOBOT Mag ician, precum si oferirea unor răspunsuri la întrebările:
 Cum funcționează un robot serial?
 Care sunt input- urile unui sistem de această natură?
 Care sunt output- urile unui astfel de sistem?
 Aplicații ale sistemului
 Hardware, software și interfață utilizate
Proiectul este structurat în 3 mari module : achiziție foto/video, procesare de
imagine și realizarea propriu -zisă a desenului, fiecare dintre aceste trei componente
având un rol bine definit. Aplicația utilizează avantajele sistemelor de tip CAD/CAM,
urmărind generarea unui fișier în format G -code cu ajutorul mediului Matlab/Simulink,
care va fi transmis brațului robotic în vederea controlării mișcărilor acestuia și a realizării
desenului dorit. Mai mult decât atât, aplicația reprezintă și un sistem destinat marketing –
ului companiei BOSCH.

Introducere
5 1.3 Specifica ții
În contextul prezentat anterior, se dorește reproducerea cât mai exactă de către
brațul robotic DOBOT Magician a unor portrete obținute cu ajutorul unei camere web sau
a unor ilustrații selectate dintr -un fișier. În acest sens, se realizează o legătură între
utilizator și aplicația propriu -zisă prin intermediul unei interfețe grafice cu utilizatorul,
creată în mediul Matlab, care pune la dispoziție utilizatorului o serie de opțiuni, precum:
 Achiziția video
 Realizarea de capturi
 Salvarea capturilor într -un fișier specific
 Afișarea imaginii
 Selectarea unei imagini din fișier
Achiziția video este realizată cu ajutorul unei camere web obișnuite (Logitech),
conectată prin USB la laptop.. Utilizatorul are posibilitatea de a realiza capturi ale propriei
figuri, care ulterior vor fi salvate într -un fișier , iar dupa alegerea celei mai optime capturi,
aceasta va fi afișată în inter față. În continuare, captura realizată este procesată, urmând
să se extragă coordonatele conturului rezultat în vederea generării fișierului G -code .
La nivel de limitări ale aplicației, se remarcă :
 Timpul de execuție al sistemulu i, care poate fi î mbunătățit
 Spațiul de lucru restrâns, care nu permite realizarea unor desene de
dimensiuni foarte mari
 Calitatea rezultatului final, depinde foarte mult de calitatea imaginii inițiale

Introducere
6

Studiu bibliografic
7 2 Studiu bibliografic
Sursele bibliografice utilizate în realizarea lucrării propuse sunt constituite în
principal din materiale documentate în limba engleză, dar și în limba română și includ:
articole științifice, cărți, suporturi de curs, diverse pagini de internet, majoritatea
repre zentând publicații disponibile online.
2.1 Sisteme cu comandă numerică
Dezvoltarea în domeniul automatizării proceselor a condus la apariția sistemelor cu
comandă numerică la sfârșitul anilor 1950, acestea cunoscând până în prezent o reală
evoluție. În consecință, au devenit indispensabile în anumite arii de activitate, datorită
numeroaselor avantaje pe care le oferă.
Din punct de vedere al structurii, un sistem cu comandă numerică are în
componența sa două elemente principale: mașina propriu -zisă și un controller. Așa cum
este prezentat și în sursa [3], acest tip de mașini permit realizarea mișcărilor de deplasare
de-a lungul a 3 axe de coordonate: X, Y și Z. Axa X reprezintă axa de- a lungul căreia mașina
se poate depl asa în față sau în spate, în timp ce axa Y este axa utilizată pentru deplasarea
stânga- dreapta. Axa Z deservește mișcării pe verticală, sus -jos. Pentru acționarea axelor
de mișcare, se pot folosi elemente de acționare electrice, hidraulice, sau pneumo –
hidr aulice.
În ceea ce privește controlul, acesta se realizează numeric, așa cum sugerează și
denumirea sistemului. Controller -ul, primește o serie de instrucțiuni alcătuite din litere și
cifre, care reprezintă axele de coordonate pe care se realizează deplas area, respectiv
valoarea deplasării, pe care le transformă în impulsuri de diferite frecvențe, ce determină
acționarea motoarelor pas -cu-pas și deplasarea mașinii pe axele de coordonate cu câte un
pas la fiecare impuls primit.
Dintre avantajele principale ale sistemelor cu comandă numerică, se pot aminti [4]:
 Creșterea productivității în domeniul industrial
 Costuri de fabricație ale produselor reduse
 Pot realiza o gamă largă de operații de diferite dificultăți
 Oferă flexibilitate
 Îmbunătățesc semnificativ calitatea produselor, datorită preciziei
 Dispun de capacitate de activitate mare
Dezavantajele pe care le aduc mașinile CNC, sunt:
 Presupun costuri ridicate, comparativ cu mașinile acționate manual
 Costuri ridicate în ceea ce pr ivește mentenanța
 Necesită programarea controller -ului

Studiu bibliografic
8
2.2 Codul G
Provenind de la “Geometric Code”, codul G este cel mai frecvent limbaj de
programare utilizat în programarea mașinilor cu comandă numerică, fiind compus dintr –
o serie de simboluri care formează ca și ansamblu, instrucțiuni. Aceste instrucțiuni conțin
coord onate ale punctelor prin care efectorul final trebuie sa treacă, cu alte cuvinte
definesc traiectoria pe care efectorul final trebuie sa o urmeze pentru a realiza mișcarea
dorită, conținând totodată informații referitoare la:
 Locația deplasării
 Viteza de d eplasare
 Direcția de deplasare
Limbajul folosește așa- numitele coduri G asemeni unor funcții pregătitoare. Fiecare
literă “G” reprezintă o adresă și este urmată de o cifră, formând astfel un cuvânt care
stabilește acțiunea pe care o va face mașina controlată. Câteva exemple care evidențiază
semnificația diverselor coduri G sunt:
 G00 – utilizat pentru poziționarea rapidă a sculei mașinii
 G01 – realizează o interpolare liniară
 G02 – utilizat pentru interpolările circulare, realizate în sens orar
 G03 – pentru interpolare circular în sens antiorar
 G04 – introduce o întârziere
 G21 – prestabilește programarea în unități de măsură
milimetrice
 G90 – stabilește programarea traiectoriilor în coordonate
absolute
Figura 2.1 Mașină cu comandă numerică pentru gravarea lemnului

Studiu bibliog rafic
9
 G91 – folosit pentru programarea traiectoriilor în coord onate
relative, etc.
Tiparul general al codului, se regăsește sub forma [5] :

Figura 2.7 Tiparul general al codului G

literele din secvență reprezentând după cum urmează:
 N – numărul liniei de cod
 G – natura mișcării
 X – axa de mișcare X
 Y – axa de mișcare Y
 Z – axa de mișcare Z
 F – avansul
 S – viteza
 T – selectarea sculei
 M – alte funcții

În figura 2.8 se evidențiază codul G pentru realizarea desenului unei fețe
zâmbitoare. De remarcat în această figură, este prezența parametrilor I și J atunci când se
folosește codul G02, pentru realizarea interpolării circulare. Acești parametrii stabiles c
distanța de la punctul de start la centrul cercului de- a lungul axei X, în cazul parametrului
Figura 2.2 Cod G pentru realizarea desenului feței zâmbitoare

Studiu bibliografic
10 I, respectiv dinstanța dintre punctul de start și centrul cercului de- a lungul axei Y, în cazul
parametrului J. Pentru a exemplifica funcționalitatea secvenței de program, se vor explica
în continuare primele 3 linii de cod, următoarele fiind analoage acestora. Astfel, prima
linie de cod are rolul poziționării rapide a sculei prin comanda G00, în punctul de
coordonate X= -25 și Y=20. În continuare, codul G91 setează programarea traiectoriilor în
sistem de coordonate relative, în același timp poziția sculei modificându -se pe axa X la
valoarea -10. De observat este faptul că, deși pe cea de- a doua linie nu a fost utilizat codul
G00, pentru poziționarea sculei, acesta s-a păstrat în memoria programului de la linia
predecentă. Astfel, dacă o linie de cod nu conține o anumită comandă G, programul
memorează ultima comandă care a fost introdusă și o folosește pe aceea. Cea de- a treia
linie din program realizează o mișcare circulară prin intermediul comenzii G02,
deplasarea realizându -se din punctul anterior, la punctul de coordonate X=10 și Y= -10.
Incrementul I, setat la valoarea 10, definește centrul cercului de- a lungul axei X,
parametrul J având valoarea 0. Prin comanda F200, avansul sculei este prestabilit la
valoarea 200, iar comanda M3 stabilește rotirea sculei în sens orar.
2.3 Comanda numerică directă
O variantă alternativă de comandă numerică o reprezintă comanda numerică
directă sau distribuită. Această modalitate de c omandă presupune controlarea mai multor
mașini cu comandă numerică, interconectate sub forma unei rețele. Necesitatea acestei
comenzi apare datorită memoriei limitate de care dispun unele controllere ale mașinilor
CNC , fapt ce nu permite încărcarea programelor în memoria acestora. În consecință,
încărcarea programului se face într -un calculator independent, de unde este transmis în
mod direct mașinii CNC, bloc cu bloc. În acest fel, calculatorul este capabil să distribuie
programul memorat tuturor mașinilo r conectate în acel moment la el. Astfel, se definesc
principalele componente ale unui sistem DNC:
 Calculatorul principal
 Memorie pentru încărcarea programelor
 Linii de comunicație
 Mașini controlate numeric
La momentul actual, există mai multe tipuri de sisteme DNC, cum ar fi cele bazate
pe standardul RS232. Acestea utilizează cartele multi- port pentru a realiza conexiunea
între mai multe mașini. O altă categorie o constituie sistemele DNC bazate pe terminale,
care încarcă programele la un terminal al mașinii CNC. Ultima și cea mai avantajoasă
categorie de sisteme DNC este categoria sistemelor bazate pe rețele, în care toate mașinile
CNC sunt conectate la rețeaua proprie a companiei.
Avantajele utilizării unei astfel de comenzi sunt:
 Capacitatea de a stoca programele într -un computer separat
 Capacități computaționale ridicate
 Flexibilitate
 Simplitate în efectuarea diagnozei sistemului

Studiu bibliografic
11
2.4 Sisteme CAD/CAM
Denumirea CAD reprezintă un acronim pentru Proiectarea Asistată de C alculator sau
în engleză Computer Aided Design. Această tehnică s -a dezvoltat ca o consecință a evoluției
automatizării proceselor industriale și nu numai, presupunând realizarea de modele pe
calculator ,spre exemplu a unor piese, folosind caracteristicile lor geometrice. Sistemele
CAD permit vizualizarea modelelor în format 3D și simularea acestora în condiții foarte
aprop iate de realitate. Din punct de vedere al avantajelor, sistemele CAD elimină
necesitatea realizării modelelor grafice în mod manual, sunt foarte flexibile și ușor de
utilizat, nu presupun costuri ridicate, permit testarea modelelor într -un mod foarte
realist.
Sistemele CAM, sau Computer Aided Manufacturing (Producție asistată de
calculator) , folosesc sistemele CAD în scopul controlării mașinilor au tomate. Astfel, ne
putem referi la acest tip de sisteme ca fiind asemănătoare cu sistemele de control
computeri zate, singura diferență între cele două tipuri regăsindu -se la nivelul modalității
de codificare a datelor. În cazul sistemelor CAM, datele sunt codificate mecanic.
Primul sistem de natură CAD/CAM a fost dezvoltat de Ivan Sutherland la Institutul
de Tehno logie din Massachusetts între anii 1962 -1963. Acest program, purtând
denumirea de SKETCHPAD, era destinat creării de modele grafice pe calculator și
permitea chiar realizarea desenelor în format tridimensional. Astfel, Sutherland a
revoluționat utilizarea calculatorului, a cărui funcționalități erau folosite până la acel
Figura 2.3 Arhitectura unu i sistem DNC

Studiu bibliografic
12 moment doar în scopul realizării calculelor inginerești, făcând saltul de la desenarea
manuală a modelelor grafice, la realizarea acestora în manieră computerizată.
2.5 Mașini CNC versus Roboți
Așa cum a fost prezentat în subcapitolul 2.5, mașinile cu comandă numerică au fost
dezvoltate pentru a întreprinde operații, în marea majoritate de natură industrială.
Utilizate îndeosebi și în alte numeroase domenii, acestea înlocuiesc cu succes factorul
uman în realizarea diverselor sarcini. Alături de acestea, roboții au început să câștige tot
mai mult teren în diverse arii de activitate, fiind capab ili să realizeze operații de: șlefuire,
tăiere, frezare sau de su dură în arc electric. Astfel, din structu ra și funcțiile pe care le
îndeplinesc , derivă o serie de asemănări și deosebiri între mașinile cu comandă numerică
și sistemele rob otice , prezentate și în blogul [6]. Principalele asemănări se evidențiază la
nivelul operațiilor pe care cele două tipuri de mecanisme sunt capabile să le realizeze,
drept dovadă întâlnim atât mașini CNC, cât și roboți în arii comune de activitate , spre
exemplu: în industria medicală, militară sau cea constructoare de autovehicule. În plus,
un punct comun îl reprezintă și modul de realizare al comenzii în cazul celor două
categorii de mașini, fiind posibil controlul numeric și asupra roboților.
Un prim aspect diferențiator al mașinilor cu comandă numerică, față de roboți se
remarcă la nivel de structu ră fizică. În timp ce mașinile CNC prezintă un design structural
rigid, cea mai comună construcție în care se regăsesc roboții este aceea de braț robotic.
Datorită faptului că brațul robotic are de obicei 6 grade de libertate, roboții oferă avantajul
unei flexibilități mai mari decât mașinile CNC. O altă deosebire între cele două mașinării
este modalitatea de realizare a interpolării în vederea realizării unei anumite mișcări. În
acest sens, mașinile CNC nu necesită în permanență realizarea interpolării pentru a Figura 2.4 Structura unui sistem CAD/CAM

Studiu bibliografic
13 acționa mișcarea pe toate axele de deplasare. Spre exemplu, pentru a realiza o mișcare
liniară de- a lungul unei axe, X sau Y, este suficient să se manipuleze o singură axă de
deplasare. Acest lucru se datorează faptului că mașinile CNC dispun de axe liniare de
deplasare. De cealaltă parte, un braț robotic nu dispune de axe liniare de mișcare, ci doar
de axe de rotație, mișcarea liniară realizându -se prin prin suprapunerea unei axe de
rotație deasupra alteia.
Una dintre cele mai importante deosebiri între mașinile CNC și brațele robotice o
constituie precizia îndeplinirii unei anumite sarcini, diferență ce apare datorită
configurației mașinilor dar și a componentelor pe care le înglobează. Astfel, mașinile CNC
oferă o mult mai bună precizie, asigurată d e raportul dintre numărul de rotații al
motorului și distanța liniară/unghiulară parcursă, plătind însă costul unei viteze mai
reduse. Prin comparație, un braț robotic asigură realizarea unei operații cu o viteză
considerabil mai mare, datorită raportului de transmisie mult mai mic, dar acest fapt
determină scăderea preciziei.
2.6 Roboți seriali
Roboții seriali constituie cele mai utilizate sisteme robotice în domeniile industriale.
Funcționând pe baza logicii de imitare a brațului uman, această construcție este cel mai
adesea întâlnită în cazul lor. Astfel, structura lor include un umăr, un cot și o încheietură,
așa c um este menționat și în sursa [7], acestea reprezentând legăturile robotului.

Figura 2.5 Robot serial

Studiu bibliografic
14
Cu alte cuvinte, roboții seriali sunt sisteme robotizate ale căror structură este
constituită dintr -o serie de lanțuri cinematice cu structură închisă, alcătuită din legături
conectate între ele prin intermediul unor articulații de rotație sau translație. În altă ordine
de idei, legăturile robotului sunt conectate între ele sub forma unui lanț cinematic închis,
prin care se propagă acțiunea de mișcare către efectorul final. Spre deosebire de roboții
seriali, cei cu structură paralelă sunt constituiți din lanțuri cinematice deschise, controlate
în vederea acționării efectorului final.

Figura 2.6 Structura roboților seriali versus structura roboților paraleli

În documentul [8] sunt prezentate pe scurt principalele componente ale unui robot
serial, dar și modul de funcționare al acestuia. Controlarea mișcărilor robotului se
realizează prin intermediul unui controller încorpor at, care primește diferite instrucțiuni
pe baza unui program. Prin intermediul acestor comenzi și a informațiilor legate de starea
internă a robotului, dar și cea externă, preluate de la senzorii integrați în sistem, sunt
acționate elementele actuatoare. A ceste elemente pot fi reprezentate fie de motoare
electrice, hidraulice sau pneumatice, fie de algoritmi avansați de control al mișcării.
Din punct de vedere cinematic, poziția și orientarea efectorului final al robotului
sunt stabilite pe baza unui model geometric al brațului robotic. În acest sens, există două
modele de calcul:
 Modelul geometric direct
 Modelul geometric invers
Suportul de curs [9] conține descrierea detaliată a celor două modele. Astfel,
modelul gemetric direct urmărește determinarea poziției și a orientării efectorului
final al robotului, plecând de la cunoașterea variabilelor ce definesc articulațiile și
anume:
 Unghiurile articulațiilor de rotație
 Distanțele articulațiilor prismatice

Studiu bibliografic
15 Acest model rezolvă problema calculului poziției și orientării sistemului de
coordonate legat de sculă, relativ la sistemul de bază [9]. De cealaltă parte, modelul
geometric invers pleacă de la premisa că poziția și orientarea efectorului final sunt
impuse, adică se cunosc, variabilele ce trebuie determinate fiind cele ale articulațiilor.
Spre exemplu, pentru urmărirea unei traiectorii de către robotul propriu -zis, este
necesar să se cunoască unghiurile sub care vor fi acționate articulațiile de către sistemul
de acționare. Comparativ, problema legată de poziție și orientare este mai ușor de
rezolvat utilizând modelul geometric direct, față de situația în care s -ar utiliza modelul
geom etric invers.
Unul dintre avantajele utilizării roboților cu structură serială se remarcă în primul
rând în ceea ce privește spațiul de lucru larg de care dispun. Un alt avantaj ar fi simplitatea
determinării modelului dinamic al acestora, alături de calibrarea ușor de realizat, dar și
aplicabilitatea roboților seriali în numeroase arii de cativitate, în special în industrie.
Ca și dezavantaje pot fi amintite:
 Determinarea dificilă a modelului cinematic invers
 Rigiditate scăzută
 Precizie medie
 Viteză și ac celerație relativ scăzute

Analiză, proiectare, implementare
16 3 Analiz ă, proiectare , implementare
3.1 Software
3.1.1 Mediul de programare Matlab/Simulink
Denumirea programului reprezintă o abreviere ce provine de la Matrix Laboratory,
fiind un limbaj de nivel înalt, specializat în calcul numeric, ce permite operarea cu matrici,
vizualizarea funcțiilor, implementarea algoritmilor, crearea de interfețe și poate
interacționa cu alte aplicații. Pachetul Simulink pune la dispoziție o serie de librării cu
ajutorul cărora este posibilă realizarea de modele matematice și simularea sistemelor
dinamice, utilizând blocuri specifice. Dintre principalele avantaje ale programului se
remarcă gama largă de algoritmi încorporați pentru procesarea imaginilor, ceea ce
constituie un argument pentru aleg erea soft- ului Matlab în cazul de față. Mai mult decât
atât, datorită coder -ului de care dispune programul, orice cod scris în acest limbaj poate
fi convertit în alte limbaje de nivel înalt precum: C/C++, Python, Java, etc. Privitor la
dezavantaje, acestea se evidențiază la nivel de costuri ale licenței programului.

Figura 3.1 Interfața cu utilizatorul a mediului de programare Matlab/Simulink

Analiză, proiectare, implementare
17 În lucrarea de față s -a utilizat tool -ul Matlab/Simulink 2016b, versiunea pe 64 de
biți pentru preluarea și procesarea imaginilor, pentru realizarea interfeței grafice cu
utilizatorul a aplicației, dar și pentru generarea fișierului G -code.

3.1.2 Mediul de programare Qt
Mediul de programare Qt nu reprezintă în sine un limb aj de programare, ci este un
mediu care permite programarea în diverse limbaje precum: C++, Java, C# sau JavaScript.
Acesta este destinat dezvoltării unei varietăți considerabile de aplicații pentru sisteme
embedded, aplicații pentru desktop sau aplicații mobile , dispunând , de asemenea de un
limbaj de modelare a interfețelor grafic e, care permite realizarea acestora într-un mod
foarte accesibil. Programul pune la dispoziție o documentație bine întocmită, ușor de
urmărit și înțeles, și nu presupune costuri r eferitoare la licență, întrucât este un program
opensource.

În acest caz, mediul de programare Qt a fost folosit pentru realizarea unei ap licații
în scopul preluării fișierului G -code și a controlării componentei hardware.

Figura 3.2 Interfața cu utilizatorul a mediului de programare Qt

Analiză, proiectare, implementare
18 3.2 Hardware
3.2.1 Robotul DOBOT Magician
Ca și componentă hardware s -a utilizat brațul robotic serial DOBOT. Aparținând
firmei cu același nume, DOBOT este un robot comercial care poate fi utilizat atât la nivel
universitar cât și în cercetare.
Din punct de vedere structural, acesta se caracterizează prin prezența a 4 grade de
mobilitate, asigurând o precizie de cca. 0.2 mm. Elementele mecanice s unt acționate prin
intermediul a 3 motoare pas cu pas și a unui servomotor, făcând posibilă realizarea
mișcărilor de -a lungul axelor de coordonate X, Y și Z. Conexiunea fizică a robotului cu
calculatorul se poate realiza în 3 moduri: prin cablu USB, Wireless sau prin Bluetooth, cea
mai uitlizată fiind conexiunea prin cablul USB care a fost utilizată și în cazul de față. În
ceea ce privește controller -ul
Robotul dispune de o serie vastă de accesorii, printre care se numără și o pompă
de vacuum, un extruder d e imprimantă 3D, un laser pentru tăierea diferitelor piese.

3.2.2 Software -ul DoBot Studio
Deși poate fi programat prin intermediul mai multor IDE -uri precum: Repetier
Host, GrblController 3.6 sau DobotBlockly, robotul DOBOT dispune de software -ul DoBot
Studio ca principal mediu de programare. Conform manualului de utilizare disponibil
online în [10], interfața programului oferă utilizatorului posibilitatea de a interacționa cu
robotul printr -o serie de opțiuni, evidențiate în figura 2.5.
Figura 3.3 Brațul robotic DOBOT Magician

Analiză, proiectare , implementare
19 În contextul de față, s -a studiat funcționalitatea “Write & Draw”, care se poate
observa și în figura ce ilustrează interfața software- ului. În acest caz, sistemul primește
drept mărime de intrare o imagine color, care este procesată în background -ul aplicației
și transformată în imagine vectorială cu format *.svg. Sunt extrase apoi coordonatele
pixelilor imaginii în format *.svg și transmise robotului, astfel încât este acționat efectorul
final care are atașat un pix, prin intermediul căruia robotul realizează imaginea primită
ca și input în aplicație.

3.3 Toolbox -ul Image Proccesing
Procesarea de imagine este un subiect de interes, a cărui istoric nu este foarte
îndepărtat, însă a cunoscut un progres semnificativ în ultima perioadă. Scopul principal al
procesării de imagine este acela de a studia o informație provenită de la un sistem de
preluare de imagini și îmbunătățirea acesteia.
Aplicații ale procesării de imagine se regăsesc în domenii precum:
 Medicină
 Armată
 Industrie
 Artă
Mediul Matlab pune la dispoziție pachetul Image Processing Toolbox pentru
procesarea imaginilor, care încorporează numeroase funcții ce permit realizarea unei
varietăți considerabile de operații asupra imaginilor. Dintre aceste funcții se pot aminti
cele pentru filtrarea imaginilor, pentru realizarea operațiilor de segmentare sau a
operațiilor geometrice asupra acestora.
Figura 3.4 Interfața cu utilizatorul a software -ului DoBot Studio

Analiză, proiectare, implementare
20

3.3.1 Stocarea imaginilor în mediul Matlab/Simulink
Mediul Matlab are capacitatea de a stoca imagini de diferite dimensiuni și formate,
suportând următoarele tipuri de date pentru afișarea imaginilor: dublă precizie(double),
întregi fără semn reprezentați pe 16 biți (uint16) și întregi fără semn reprezentați pe 8
biți (uint8). Imaginile sunt percepute ca și matrici bidimensionale sau tridimensionale(în
cazul imaginilor color), fiecărui pixel din imagine atribuindu -se un element al matricii.

Figura 3.5 Segmentarea vaselor de sânge la nivelul retinei
Figura 3.6 Identificarea obiectelor într -o imagine

Analiză, proiectare, implementare
21 Prin urmare, dimensiunile unei imagini sunt caracterizate printr -un număr de
rânduri și un număr de coloane, care constituie lungimea, respectiv lățimea acesteia.
Informațiile referitoare la dimensiunil e unei imagini pot fi accesate din Matlab prin
funcția size() al cărei argument este imaginea propriu -zisă.

3.3.2 Preluarea de imagine de la o cameră web
Preluarea de imagine este un proces care constă în preluarea unor semnale prin
intermediul unui senzor CMOS (Complementary Metal –Oxide –Semiconductor ) care este
alcătuit dintr -un șir de senzori de lumină cu ajutorul cărora o imagine din fața camerei
este convertită într -o imagine digitală. Camerele web nu au incorporată memorie, motiv
pentru care transmiterea im aginilor se face către un PC, în cele mai multe cazuri.
Pentru preluarea imaginilor s -a folosit o cameră web produsă de Logitech C270.
Câteva dintre datele de catalog ale acestei camere sunt enumerate în figura de mai jos:

3.3.3 Conversia RGB – BW
Conversia RGB în BW se referă la transformarea unei imagini color într -o imagine ce
conține doar nuanțe de gri. Astfel, cele două abrevieri provin din limba engleză, RGB
semnificând Red, Green , Blue(Roșu, Verde și Albastru), iar BW sugerează culorile Negru
și Alb, în engleză Black and White. Transformarea unei imagini color în nuanțe de gri este
realizată cel mai adesea prin egalizarea tuturor celor trei componente ale fiecărui pixel cu
media aritmetică a acestora.
Figura 3.7 Logitech C270

Analiză, proiectare, implementare
22 Acest proces este necesar datorită faptului că o imagine color nu poate oferi toate
informațiile de care avem nevoie în vederea realizării diverselor operații. În plus,
imaginile RGB sunt mai greu de manipulat și prin prisma faptulu i că sunt stocate sub
forma unor matrici tridimensionale, pe când imaginile în nuanțe de gri, au doar două
dimensiuni, ceea ce simplifică manipularea lor.

3.3.4 Detectarea contururilor într- o imagine
Un alt aspect important în realizarea aplicației îl constituie detectarea contururilor
dintr -o imagine. Un contur reprezintă un ansamblu de puncte care sugerează prezența
unor discontinuități în ceea ce privește luminozitatea unei imagini, cu alte cuvinte este
acea regiune din imagine unde luminozitatea acesteia est e mai intensificată.
În Matlab contururile pot fi determinate prin intermediul unor detectoare. Fiecare
tip de detector de contururi are un algoritm diferit, precizia acestora depinzând foarte
mult de calitatea imaginilor, iar imaginea este necesar să fie convertită în prealabil în
format GRAY.
Un exemplu de conversie poate fi observat în următoarea secvență de cod:

Figura 3.8 Conversie imagine RGB în GRAY

Rezultatul conversiei este afișat în figura de mai jos:

Figura 3.9 Conversia imaginii din culori RGB în nuanțe de gri

Analiză, proiectare, implementare
23 Dintr -o imagine cu dimensiunea de 1200x1200x3 a rezultat în urma conversiei o
imagine în nuanțe de gri cu dimensiunea de 1200×1200, fiecare pixel având valori de la 0
la 255, unde 255 înseamnă alb iar 0 înseamnă negru.
3.3.5 Extragerea contururilor din imagine
Pentru extragerea contururilor din imagine s -a utilizat funcția edge() conținută în
toolbox -ul de Image Processing. Argumentele acestei funcții sunt:
 Imaginea, în nuanțe de gri, din care se dorește a fi
determinate contururile
 Tipul de identificator de contururi
 Un threshold /valoare prag – parametru care permite
alegerea intensității detecției
3.3.6 Tipuri de detectoare de contururi
Matl ab pune la dispoziție mai multe tipuri de detectoare de contururi, în această
lucrare fiind utilizate 4 dintre ele:
 Sobel
 Prewitt
 Roberts
 Canny
Așa cum a fost prezentat în secțiunea 3.3.4. , contururile sunt acele zone ale
imaginii unde intensitatea lumino asă a acesteia este mai puternică. Identificatorul Sobel
operează asupra acestor zone prin aproximarea gradientului în fiecare punct de
intensitate luminoasă al imaginii. Astfel, rezultatul aplicării acestui detector poate fi ori
vectorul gradient specific imaginii, ori norma acestui vector. Presupunând că I este
imaginea originală, rezultatul aplicării operatorului Sobel va fi egal cu rezultatul
convoluției dintre cele două kernel -uri pe care le utilizează și imaginea propriu -zisă.
𝐷𝐷𝑥𝑥=�10−1
20−2
10−1� * I 𝐷𝐷𝑦𝑦=�1 2 1
0 0 0
−1−2−1� * I (3.1)
Matricile 𝐷𝐷𝑥𝑥 și 𝐷𝐷𝑦𝑦 reprezintă aproximările derivatelor de- a lungul axei X, respectiv
de-a lungul axei Y, iar operatorul “*” sugerează realizarea operației de convoluție în cele
două kernel -uri și imaginea în nuanțe de gri. Pe baza acestor aproximări, se poate calcula
valoarea efectivă a gradientului și direcția acestuia:
D = �𝐷𝐷𝑥𝑥2+𝐷𝐷𝑦𝑦2 (3.2)
φ = atan(𝐷𝐷𝑦𝑦
𝐷𝐷𝑥𝑥) (3.3)
Detectorul Prewitt realizează în mod similar , operațiile pe care realizează
detectorul Sobel, diferența dintre cele două fiind kernel -urile folosite pentru calculul
convoluției cu imaginea în nuanțe de gri. Cele două kernel -uri sunt evidențiate în ecuația
(3.4), unde se calculează aproximările derivatelor:

Analiză, proiectare, implementare
24 𝐷𝐷𝑥𝑥=�10−1
10−1
10−1� * I 𝐷𝐷𝑦𝑦=�1 1 1
0 0 0
−1−1−1� * I (3.4)

În mod analog celor două detectoare prezentate anterior, se comportă și
identificatorul Roberts , cu mențiunea că în acest caz kernel -urile folosite nu au
dimensiunea de 3×3, ci de 2×2:
𝐾𝐾 1=�1 0
0−1� 𝐾𝐾2=�0 1
−10� (3.5)

Dintre cele 4 detectoare de contururi menționate anterior, Canny este un operator
care are la bază un algoritm contruit dintr -o serie de etape, pe lângă determinarea
gradientului funcției de intensitate luminoasă a imaginii. Aceste etape s unt:
1. Filtrarea imaginii în vederea eliminării zgomotului
2. Calculul gradientului funcției de intensitate luminoasă
3. Aplicarea unui procedeu prin care se evită detectarea unor margini
false în imagine
4. Se aplică un threshold dublu pentru identificarea contururilor
5. Marginile detectate sunt conturate prin histereză
În urma testelor experimentale realizate s -a ajuns la concluzia că detectorul Canny
este cel mai potrivit pentru tipul de aplicație ca cel prezentat în acest proiect, drept
urmare s -a apelat la acesta.
3.4 Descrierea aplicației
Din perspectiva implementării, aplicația este structurată în 3 mari module, după
cum ilustrează figura 4.1:
1. Achiziția video/photo sau selectarea unei imagini dintr -un fișier – primele
două submodule
2. Procesarea de imagini – submodulele 3 și 4
3. Componenta de desenare – submodulul 5
Toate cele 3 module sunt integrate într -o interfață grafică cu utilizatorul, care permite
urmărirea de către acesta a fiecărei etape prin care trece imaginea. De la preluarea imaginii cu
camera web Logitech sau selectarea unei imagini dintr -un fișier, până la aplicarea detectorului
de contururi, utilizatorul are control absolut asupra operațiilor.

Analiză, proiectare, implementare
25 În subcapitolele următoare, se va aborda fiecare modul în parte în scopul definirii
funcționalității și a rolului f iecăruia în cadrul aplicației
3.5 Interfața grafică cu utilizatorul
Mediul de programare Matlab permite realizarea de intefețe grafice prin 3
modalități:
1. Mediul App Designer
2. Mediul de dezvoltare GUIDE
3. Prin programarea fiecărui element graphic
Interfața aplicației prezentate a fost dezvoltată prin intermediul mediului de
dezvoltare GUIDE, care oferă o varietate de instrumente ce permit crearea în mod grafic
a interfeței. În plus, GUIDE are capacitatea de a genera automat codul necesar pentru
crearea elementelor grafice, permițând modificarea acestuia în scopul programării
comportamentului fiecărui elem ent graf ic.În figura 3.11 este ilustrat design- ul interfeței
grafice, în care se pot observa opțiunile care sunt puse la dispoziția utilizatorului.
Figura 3.10 Schema de funcționare a sistemului
Figura 3.11 Interfața grafică cu utilizatorul

Analiză, proiectare, implementare
26 Prima fereastră are rolul pornirii camerei web, prin apăsarea butonului “Start
webcam” sau în cazul în care se optează pentru alegerea unei imagini din fișier, această
fereastră va afișa mesajul “Cameră web indisponibilă”. O dată ce utilizatorul realizează o
captură, prin intermediul butonului “Capture”, aceasta este afișată în fereastra
corespunzătoare din interfață. În continuare, user -ul are posibilitatea de a aplica un filtru
imaginii, în vederea eliminării zgomotului, și de a suprapune peste imaginea originală,
sigla BOSCH. În final, meniul “Select edge detector” crează o interacțiune între utilizator
și procedeul procesării de imagine, prin oferirea abilității de a aplica identificatorul de
contururi dorit, dar și de a vizualiza rezultatul acestei o perații.
Numele atribuit interfeței, și anume “Michelangelo”, denotă caracterul artistic al
aplicației, întrucât face posibilă realizarea de portrete și alte ilustrații de către robotul
DOBOT Magician
3.6 Modulul 1 – Achiziția video/photo și selectarea imaginii din fișier
Primul modul al aplicației îl constituie achiziția video/photo, prin intermediul unei
camere web Logitech și al mediului de programare Matlab. Așa cum a fost prezentat
anterior, interfața grafică permite realiz area acestei operații prin apăsar ea butonului
“Start webcam” . Comenzile utilizate pentru preluarea de imagine, sunt evidențiate în
secvența de cod următoare:

Figura 3.12 Funcția pentru preluarea imaginilor de la camera web

Variabila weblist , reține rezultatul apelării comenzii webcamlist() , care returnează
o listă ce conține toate camerele web conectate la computer în acel moment. Pentru a
putea vizualiza imaginile preluate de camera web, este necesară crearea unui obiect de
tip webca m, în cazul nostru fiind denumit vid. În situația în care există mai multe camere
web conectate la sistem, în același timp, obiectul va prelua imaginea video de la prima
camera web detectată, lucru vizibil prin argumentul dat comenzii webcam ().
Prin comanda image (), al cărei rezultat este reținut în variabila hImage , se setează
dimensiunea ferestrei în care va fi afișată imaginea preluată de la cameră, dar și ordinea
acesteia. Pentru previzualizarea obiectului, s -a apelat comanda preview() al căr ei
argumente sunt obiectul de tip webcam și fereastra unde va fi previzualizată imaginea.

Analiză, proiectare, implementare
27 Tot în acest modul este înglobată și funcția de realizare a capturii. În vederea
realizării acestei funcționalități, s -a folosit comanda snapshot() care returnează u n cadru
al video -ului preluat. După efectuarea capturii, utilizatorului i se pune la dispoziție
opțiunea de a salva captura realizată sub un anumit nume, într -un fișier specific. Salvarea
în fișier a imaginii s -a realizat prin comanda imwrite() , care primește drept argumente
imaginea ce urmează a fi salvată și numele atribuit de către utilizator.

Figura 3.13 Realizarea capturii în interfaț a grafică
Figura 3.14 Funcția pentru realizarea capturii

Analiză, proiectare, implementare
28 3.7 Modulul 2 – Procesarea de imagine
Acest modul presupune prelucrarea imaginii în vederea obținerii informațiilor de
interes. Principalele aspecte abordate în cadrul modul ului sunt:
 Efectuarea operațiilor de procesare de imagine
 Extragerea contururilor din imagine
 Extragerea coordonatelor punctelor ce defines conturul
 Generarea codului G
3.7.1 Funcția overlay()
Termenul overlay provine din limba engleză și este utilizat în procesarea de
imagine pentru a face referire la realizarea suprapunerii a două imagini diferite. În
proiectul de față, se realizează suprapunerea unei imagini ce ilustrează sigla firmei
BOSCH peste imaginea originală.
În figura 3.6 se ilustrează modul de c itire a imaginii conținând sigla BOSCH. Întrucât
imaginea logo -ului este unică, având un nume prestabilit, citirea acestuia din fișier s -a
realizat prin comanda uigetfile() care are ca și argumente calea către directorul în care
este stocată imaginea și fo rmatul imaginii. Atunci când este apăsat butonul “ Overlay” din
interfața grafică, aplicația apelează funcția cu același nume, iar utilizatorul este automat
direcționat către fișierul în care se regăsește imaginea cu sigla firmei.
În continuare s -a realizat o redimensionare a logo -ului prin comanda imresize() ,
pentru ca suprapunerea celor două imagini să fie potrivită ca și design. Pentru a putea
realiza operațiile următoare, a fost nevoie de obținerea informațiilor legate de
dimensiunile celor două imagini. Comanda size() pune la dispoziție aceste informații,
stocând în variabilele height, width, respectiv height1, width1 înălțimea, respectiv
lungimea imaginilor.

Figura 3.15 Citirea logo -ului BOSCH și preluarea informațiilor legate de
dimensiunea imaginilor ce urmează a fi suprapuse

Analiză, proiectare, implementare
29 Pentru realizarea efectivă a overl ay-ului s -a folosit o buclă for, în care se calculează
pe baza unei ecuații predefinite, valoarea fiecărei componente RGB .

În figura 3.16 se poate observa prezența parametrilor alphaA și alphaB care au
valoarea 0, respectiv 1. Variabilele a și b rețin diferența dintre height și height1 ,
respectiv width și width1 .

Figura 3.16 Bucla for pentru realizarea overlay -ului
Figura 3.17Realizarea overlay -ului în interfața grafică

Analiză, proiectare, implementare
30 3.7.2 Filtrarea imaginii
Una dintre operațiile importante la care este supusă imaginea după realizarea
overlay- ului este filtrarea acesteia. Prin filtrarea unei imagini se înțelege acel procedeu
prin care se pot modifica sau îmbunătăți caracteristicile unei imagini, putându -se
accentua sau elimina unele dintre acestea. Tehnica de filtrare a unei imagini poate avea
la bază fie procesul de convoluție, fie cel de corelație. În mod particular, toolbox -ul de
Image Processing integrat în mediul Matlab utilizează procesul de corelație pentru a
efectua filtrarea unei imagini. Corelația presupune calcularea sumei ponderate a tuturor
vecinilor unui pixel, însă spre deosebire de convoluție, matricea ponderilor nu este rotită
în timpul realizării operației.
Toolbox -ul de Image Processing încorp orează un număr considerabil de funcții care
permit filtrarea imaginilor, dintre acestea putem aminti funcțiile:
 imfilter() – permite filtrarea imaginilor multidimensionale
 imgaussfilt () – realizează o filtrare Gaussiană a imaginilor 2D
 medfilt2() – aplică un filtru median pentru imaginile 2D
 wiener2() – aplică un filtru adaptiv pentru eliminarea
zgomotului
În această aplicație s -a aplicat filtrul Gaussian pentru a realiza filtrarea imaginii.
Figura 3 .18. Funcția de filtrare a imaginii

Figura 3.18 Imaginea filtrată în interfața grafică

Analiză, proiectare, implementare
31 3.7.3 Extragerea contururilor
Așa cum a fost menționat anterior, pentru extragerea contururilor s -a utilizat
comanda edge(), alături de detectorul de contururi Canny . Rezultatul aplicării acestui
identificator este prezentat în figura de mai jos:

Interfața grafică lasă l a alegerea utilizatorului tipul de detector ce va fi aplicat
imaginii, putându -se salva totodată imaginea ce conține contururile. Pe baza acestora, se
vor putea efectua în continuare operațiile pentru extragerea coordonatelor punctelor de
pe contur.

Figura 3.19 Extragerea contururilor prin detectorul de contururi Canny
Figura 3.20 Implementarea selecției tipului de identificator dorit

Analiză, proiectare, implementare
32 Odat ă determinate contururile, ele pot fi extrase cu ajutorul funcției find().
Aceasta va returna indicii pixelilor dispuși de- a lungul axei x, respectiv de- a lungul axei
y. În urma rezultatelor experimentale s -a observat că această funcție nu este potrivită,
deoarece ea nu returnează valorile conținute pe traiectoria conturului, spre exemplu în
ordine orară, ci parcurge conturul de- a lungul axei y, memorând fiecare index al fiecărui
pixel. Acest lucru duce la stocarea coordonatelor în mod eronat, ceea determină robotul
să realizeze ilustrația dorită diferit față de rezultatul așteptat.
Pentru a soluționa această inconveniență, s -a utilizat funcția bwboundaries() , care
are rolul de a detecta limitele conturului exterior, cât și a celui interior din imaginea în
format binar. Rezultatul apelării acestei funcții este o matrice care conține locațiile
pixelilor ce definesc marginile contur ului.
Secvența de cod care realizează extragerea coordonatelor este prezentată în figura
următoare:

Vectorii px și py declarați în secvența anterioară înregistrează locațiile pixelilor
dispuși de -a lungul axei x, respectiv de-a lungul axei y. Pentru coordonata z, s -a impus
condiția ca de fiecare dată când diferența dintre doi pixeli este mai mare decât valoarea
prag thr eshold , aceasta să primească valoarea 10. Când distanța dintre doi pixeli este mai
mare decât valoarea impusă, denotă faptul că brațul robotic trebuie să se deplaseze către
alt punct fără a atinge foaia cu pixul , pentru a nu realiza linii suplimentare care nu sunt
necesare. D e aceea se atribuie valoarea 10 coordonatei z. Cu alte cuvinte, brațul robotic se
va ridica la înălțimea de 10 mm deasupra foii în acest caz, iar în caz contrar va menține
pixul pe foaie, coordonata z primid valoarea 0.
Figura 3.21 Extragerea coordonatelor conturului

Analiză, proiectare, implementare
33 De remarcat este însă faptul că, coordonatele extrase sunt defapt indici ai pixelilor
de pe contur, sau altfel spus sunt coordonatele imaginii, pe care controller -ul robotului nu
este capabil să le recunoască. Din acest motiv, s -a realizat o transformare din indicii
respe ctivi în coordonate carteziene, având ca și unitate de măsură milimetrul.
Pentru a explica transformarea realizată, presupunem că px înglobează fiecare
coordonată a imaginii, pxs reprezintă coordonata carteziană sau fizică, iar dx reprezintă
distanța dintre doi pixeli consecutivi. De menționat este faptul că variabilele px și dx sunt
adimensionale, iar coordonata x va fi în milimetri. Astfel, știind că dacă distanța dintre doi
pixeli din imagine este 1, acesteia îi corespunde o valoarea în milimetri de 0. 26, se poate
calcula valoarea coordonatei x. În cazul nostru, distanța între fiecare doi pixeli consecutive
din imagine este 1, deci vom calibra dimensiunea cu valoarea de 0.26 mm. Analog, se
aplică această logică și pentru axa de coordonate y.

3.7.4 Generarea codului G
Pentru generarea codului G ce urmează transmis brațului robotic, a fost nevoie
de crearea unui fișier în format *.txt, apoi într -o bulcă repetitive for s-a realizat scrierea
în fișier a fiecărei dintre coordonatele x,y, z, alături de comenzile specifice. S -a folosit
comanda G01 pentru realizarea interpolării liniare. Astfel, contururile curbate au fost
aproximate prin segmente foarte mici, pentru a Evita folosirea comenzilor G02 sau G03
și calcularea parametrilor specifici acestora, I și J.

Figura 3.22 Transformarea indicilor pixelilor în coordonate milimetrice
Figura 3.23 Scrierea fișierului G -code

Analiz ă, proiectare, implementare
34
3.8 Modulul 3 – Realizarea desenului
Pentru realizarea efectivă a desenului a fost necesară preluarea fișierului G -code .
Pentru aceasta, s-a utilizat o aplicație dezvoltată de către un coleg, angajat al firmei
BOSCH, în mediul de programare Qt. Această aplicație a fost scrisă în limbajul de
progra mare Python și integrează o interfață grafică cu utilizatorul, ce permite:
 Conectarea la brațul robotic serial
 Deplasarea brațului robotic pe cele 3 axe de coordonate x, y și z
 Setarea vitezei de realizare a desenului
 Memorarea punctului inițial de pornire
 Vizualizarea în timp real a punctelor prin care trece robotul
 Progresul realizat de robot, în procente
Pentru a putea prelua fișierul G -code, este necesar ca acesta să se afle în același
director cu fișierele sursă ale aplicației din Qt. O dată făcută conexiunea între robot și
aplicație, fișierul se copiază în directorul corespunzător, iar robotul începe desenarea
imaginii. În acel moment, butonul Draw devine inactiv, ca urmare a începerii activității
robotului, iar în orice moment, activitatea acestuia poate fi întreruptă prin apăsarea
butonului Stop . Butoanele pentru manipularea axelor de coordonate permit manevrarea
Figura 3.24 Plotarea punctelor px și py

Analiză, proiectare, implementare
35 în mod manual a brațului robotic, iar butonul Home determină revenirea brațului în
poziția originală.

Figura 3.26 Interfața grafică din Qt
Figura 3.25 Secvență de cod Qt de citire a fișierului G -code

Analiză, proiectare, implementare
36 3.9 Testare și validare
În vederea testării și validării soluției propuse, s -au realizat diverse experimente
practice cu aj utorul brațului robotic DOBOT, utilizând atât aplicația dezvoltată în Matlab,
cât și software- ul propriu al robotului. Acest lucru a permis compararea rezultatelor
obținute prin soluția propusă în lucrarea de față, cu soluția dezvoltată de firma DoBot.
I s-a atașat efectorului final al robotului un pix, apoi prin încărcarea fișierului în
format G -code în aplicația dezvoltată în Qt, s -a urmărit evoluția robotului de- a lungul
traiectoriei descrise de conturul imaginii date ca și intrare. Inițial, testele au fost făcute pe
imagini simple, în marea majoritate reprezentând figuri geometrice, precum pătrate sau
cercuri.
Primele rezultate obținute în urma testării aplicației se pot observa în figura 3. 28.
Se obse rvă faptul că metoda inițială oferă rezultatele scontate, dar nu în proporție de
100%, deoarece robotul nu urmărește traiectoria descrisă de conturul imaginii. Totuși,
acesta realizează desenul, însă datorită extragerii eronate a coordonatelor, mișcarea se
efectuează doar pe una dintre axe, valorile de pe cealaltă axă modificându -se doar la
trecerea dintr -un punct în altul, în rest rămân constante. Deși desenul rezultat este
inteligibil în acest caz, metoda s -a dovedit a nu fi potrivită în cazul realizării de portrete
deoarece figura finală reiese inexact, neputându -se distinge trăsăturile d in aceasta.

Figura 3.27 Desen realizat prin aplicața în formatul inițial

Analiză, proiectare, implementare
37 Pentru a soluționa problema urmăririi traiectoriei, s -a abordat o altă meto dă de
extragere a coordonatelor, cu ajutorul unei funcții puse la dispoziție de mediul Matlab.
Prin aceasta, se parcurge conturul imaginii și se stochează coordonata fiecărui pixel, în
sens o rar. După implementarea acestei soluții, s -au obținut rezultatele din figura 3.2 9:

Se observă faptul că desenul respectă forma figurilor geometrice, însă prezintă
anumite discontinuități sau abateri de la conturul descris. De remarcat este și linia
suplimentară care apare în desen, la trecerea de la conturul pătratului, la cel al
triunghiului. Acest lucru se datorează coordonatei z, care nu a fost calculată
corespunzător și care a necesitat calcule ulterioare pentru eliminar ea acestei problem e.
Ca și un rezultat al soluționării acestei inconveniențe este prezentată figura 3.29, în
care se ilustrează imaginea unui triunghi înscrisă într -un dreptunghi. Calitatea desenului
este afectată de calitatea imaginii originale, care a fo st preluată de pe un site de internet.
În figura 3.30 este evidențiat desenul unui portret realizat prin intermediul
software -ului DoBot Studio.
Figura 3.28 Rezultatul după soluționarea extragerii coordonatelor

Analiză, proiectare, implementare
38

Se remarcă faptul că desenul este realizat cu o acuratețe foarte bună, trăsăturile feței
care sunt mai puțin conturate datorându -se luminii sub care s -a re alizat captura. Acest
lucru afectează calitatea imaginii, și în consecință anumite contururi nu pot fi extrase
complet. Pentru aceasta, în alte teste s -a poziționat un panou de culoare alba în spatele
persoanei din fața camerei web, astfel încât lumina provenită să fie d e aceeași intensitate
Figura 3.29 Rezultatul după calibrarea axei z
Figura 3.30 Portret realizat cu software -ul DoBot Studio

Analiză, proiectare, implementare
39 din toate unghiurile. Acest lucru a determinat o mai bună calitate a imaginii, și implicit a
rezultatului final.

Concluzii
40 4 Concluzii
4.1 Rezultate obț inute
În lucrarea de față este prezentat modul în care se poate programa un robot precum
robotul DoBot, astfel încât să fie capabil să deseneze contururile unor fețe pe care le preia
un PC prin intermediul unei camere web sau a unor ilustrații ale unor imagini s electate
dintr -un fișier.
Pe parcursul lucrării, accentul cade în principal asupra funcționalității brațelor
robotice seriale, a modului în care poate fi procesată o imagine în vederea obținerii unor
informații particulare despre aceasta, dar și asupra mo dalității de generare a unui fișier
G-code pentru controlul numeric al brațului robotic, prin intermediul mediului de
dezvoltare Matlab/Simulink.
Soluția propusă se dovedește a fi potrivită în cea mai mare proporție, oferind
rezultate satisfăcătoare mai ales în ceea ce privește procesarea imaginii. În acest sens,
utilizarea software- ului Matlab a reprezentat un avantaj, întrucât acesta încorporează o
gamă largă de funcții și algoritmi predefiniți pentru realizarea oper ațiilor necesare asupra
imaginilor: suprapunere de imagini, filtrarea imaginii, extragerea conturului și a
coordonatelor contururilor din imagine, precum și generarea fișierului G -code.
Utilizarea aplicației s -a făcut posibilă prin accesarea interfeței gr afice cu utilizatorul,
creată pentru acest proiect în același mediu de programare. Având un design prietenos,
interfața grafică permite user -ului să interacționeze cu diferite elemente grafice, a căror
comportament evidențiază etapele prin care trece imaginea de la preluarea acesteia de la
camera web, până la generarea codului G ce va fi transmis brațului robotic.
În concluzie, lucrarea prezentată propune realizarea unui control numeric a brațului
robotic serial DoBot Magician, prin generarea unui fișier G -code. Sistemul primește ca și
input o imagine fie preluată de la o cameră web, fie selectată dintr -un fișier, care este
prelucrată prin procedeul procesării de imagine. În urma acestui proces, rezultă anumite
informații care vor servi ulterior la determinarea coordonatelor conturului imaginii
introduse. Pe baza acestor coordonate, sistemul oferă ca și output fișierul G -code, care va
fi decodificat de către controller -ul brațul ui robotic în vederea desenării imaginii dorite.

Concluzii
41 Rezultatele experimentale denotă faptul că robotul urmărește în proporție de 80%
traiectoria definită de conturul imaginii procesate. Comparativ cu soluția propusă de
firma reprezentantă, DoBot, soluția propusă în această lucrare nu atinge performanța ei,
însă realizează cu succes controlul numeric al brațului robotic, îmbinând avantajele unei
procesări a imaginii avansate și a unei interfețe ce permite controlul total al utilizatorului
asupra aplicației.
4.2 Direc ții de dezvoltare
În viitor, funcționalitățile aplicației ar putea fi îmbunătațite în ceea ce privește :
 Timpul de execuție
 Viteza de execuție
 Precizia execuției desenului
De asemenea, aplicația ar putea fi extinsă în sensul introducerii unor noi
funcționalități precum gravarea laser sau printarea 3D. Astfel, robotul ar putea real iza
modele 3D sau diverse gravări pe baza imaginii introduse ca și intrare sistemului.

Bibliografie
42 5 Bibliografie

[1] Karel Capek, Roboții universali ai lui Rossum , 1921
[2] "Robotul.Definiție.Structură.", 2014. [Online]. Available:
https://prezi.com/de2y1vkwn 03f/robotul -definitie -structura
[3] Mares F. Si colectivul – Elemente de comanda si control , Editura Negro , Galati 2001
https://ro.wikipedia.org/wiki/MATLAB
[4] "Compania Mepro", 2015.[Online].Available:
https://www.meproutilaje.ro/blog/despre -mepro -utilaje
[5] "Getting Started with G -code".[Online]. Avilable:
https://www.autodesk.com/industry/manufacturing/resources/manufacturing –
engineer/g -code
[6]

"Industrial Robot Arms vs Traditional CNC Machines", 2010.[Online].Available:
http://kokaneecreek.blogspot.com/2010/01/industrial -robot -arms -vs-
traditional.html

[7] D.L Pieper, The kinematics of manipulators under computer control, 1968
[8] "Modele geometrice, cinematice s i dinamice". [Online].Available:
http://iota.ee.tuiasi.ro/~mpobor/doc/Cursuri/RICurs2.pdf
[9] "Structura robotului", 2013.[Online].Available>
https://www.scribd.com/document/149343312/Structura -robotului
[10] "DoBot -Magician- User -Manual", 2017.[Online].Available:
https://www.generationrobots.com/media/Dobot- Magician- User -Manual –
V1.2.4.pdf

Similar Posts