Generarea codului g pentru controlul numeric al unui braț robotic serial [308565]

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

PROIECT DE DIPLOMĂ

Autor: Alina-Maria POPA

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

Autor: Alina-Maria POPA

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

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.

Conținutul proiectului: [anonimizat], [anonimizat], Introducere,[anonimizat], [anonimizat], Bibliografie, Anexe.

Locul documentației: [anonimizat], [anonimizat]: ing. Vasile-Gabriel ȘANDRU

Data emiterii temei: 8 Noiembrie 2017

Data predării: 9 Iulie 2018

Semnătura autorului

Semnătura conducătorului științific

Declarație pe proprie răspundere privind

autenticitatea proiectului de diplomă

Subsemnatul(a) Alina-[anonimizat](ă) cu CI/BI seria AX nr. 528559 , CNP [anonimizat],

autorul lucrării:

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

elaborată în vederea susținerii examenului de finalizare a [anonimizat] , [anonimizat], sesiunea a anului universitar 2017-2018, [anonimizat], [anonimizat], și în bibliografie.

Declar, [anonimizat] a convențiilor internaționale privind drepturile de autor.

Declar, [anonimizat] a mai fost prezentată în fața unei alte comisii de examen de licență.

In cazul constatării ulterioare a [anonimizat], respectiv, anularea examenului de licență.

[anonimizat]

(semnătura)

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 [anonimizat], [anonimizat] G-code. [anonimizat].

2. Soluții alese: procesarea imaginii în mediul de programare Matlab/Simulink, [anonimizat], calculul coordonatelor necesare scrierii fișierului G-code, generarea fișierului G-[anonimizat]-o aplicație dezvoltată în mediul Qt.

3. Rezultate obținute: [anonimizat].

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 cele 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 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

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 11

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 grafică 29

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

Figura 3.19 Extragerea contururilor prin detectorul 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 Transformarea 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ță de cod Qt de citire a fișierului G-code 35

Figura 3.26 Interfața grafică din Qt 35

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

Figura 3.28 Rezultatul 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

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 ramură a tehnologiei care se ocupă cu studiul, dezvoltarea, crearea și operarea roboților si totodată cu procesarea informațiilor, controlul și studiul senzorial al acestora. Sistemele robotice încorporează principiile ingineriei mecanice, ale ingineriei electronice și ale informaticii (inteligența artificială). Î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.

Robotul 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..

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 galaxia 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, 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 comenzi 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 cadrul laboratoarelor, de către universități, sau direct implicați în educarea copiilor), industrial (ex. folosiți în procese de asamblare), militar, etc.

Obiective

În lucrarea de față, autorul și-a propus implementarea unei aplicații destinate desenării de portrete și a diferitor ilustrații prin intermediul brațului robotic serial DOBOT Magician, 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.

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 interfață. Î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 sistemului, 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

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 reprezentând publicații disponibile online.

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, 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 deplasa î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-hidraulice.

Î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ă deplasarea, 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 :

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 privește mentenanța

Necesită programarea controller-ului

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 coordonate 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 deplasare

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

G91 – folosit pentru programarea traiectoriilor în coordonate relative, etc.

Tiparul general al codului, se regăsește sub forma :

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 stabilesc distanța de la punctul de start la centrul cercului de-a lungul axei X, în cazul parametrului 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.

Comanda numerică directă

O variantă alternativă de comandă numerică o reprezintă comanda numerică directă sau distribuită. Această modalitate de comandă 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șinilor 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

Sisteme CAD/CAM

Denumirea CAD reprezintă un acronim pentru Proiectarea Asistată de Calculator 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 apropiate 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 automate. Astfel, ne putem referi la acest tip de sisteme ca fiind asemănătoare cu sistemele de control computerizate, 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 Tehnologie 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 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ă.

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 capabili să realizeze operații de: șlefuire, tăiere, frezare sau de sudură în arc electric. Astfel, din structura și funcțiile pe care le îndeplinesc, derivă o serie de asemănări și deosebiri între mașinile cu comandă numerică și sistemele robotice, prezentate și în blogul. 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 structură 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 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ă de 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.

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 cum este menționat și în sursa , acestea reprezentând legăturile robotului.

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 . Structura roboților seriali versus structura roboților paraleli

În documentul 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 încorporat, 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. Aceste 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 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

Acest model rezolvă problema calculului poziției și orientării sistemului de coordonate legat de sculă, relativ la sistemul de bază . 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 geometric 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 accelerație relativ scăzute

Analiză, proiectare, implementare

Software

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 alegerea 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 . Interfața cu utilizatorul a mediului de programare Matlab/Simulink

Î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.

Mediul de programare Qt

Mediul de programare Qt nu reprezintă în sine un limbaj 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 grafice, 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 referitoare la licență, întrucât este un program opensource.

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

Hardware

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 sunt 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 de imprimantă 3D, un laser pentru tăierea diferitelor piese.

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 , interfața programului oferă utilizatorului posibilitatea de a interacționa cu robotul printr-o serie de opțiuni, evidențiate în figura 2.5.

Î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.

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.

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.

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 dimensiunile unei imagini pot fi accesate din Matlab prin funcția size() al cărei argument este imaginea propriu-zisă.

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 imaginilor 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:

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.

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 faptului 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.

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 este 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 . Conversie imagine RGB în GRAY

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

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

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.

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

Tipuri de detectoare de contururi

Matlab 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 luminoasă 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ă.

* I * 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 = (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:

* I * 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:

(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 sunt:

Filtrarea imaginii în vederea eliminării zgomotului

Calculul gradientului funcției de intensitate luminoasă

Aplicarea unui procedeu prin care se evită detectarea unor margini false în imagine

Se aplică un threshold dublu pentru identificarea contururilor

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.

Descrierea aplicației

Din perspectiva implementării, aplicația este structurată în 3 mari module, după cum ilustrează figura 4.1:

Achiziția video/photo sau selectarea unei imagini dintr-un fișier – primele două submodule

Procesarea de imagini – submodulele 3 și 4

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.

În subcapitolele următoare, se va aborda fiecare modul în parte în scopul definirii funcționalității și a rolului fiecăruia în cadrul aplicației

Interfața grafică cu utilizatorul

Mediul de programare Matlab permite realizarea de intefețe grafice prin 3 modalități:

Mediul App Designer

Mediul de dezvoltare GUIDE

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 element grafic.Î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.

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 operaț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

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 realizarea acestei operații prin apăsarea butonului “Start webcam”. Comenzile utilizate pentru preluarea de imagine, sunt evidențiate în secvența de cod următoare:

Figura . 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 webcam, î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ărei argumente sunt obiectul de tip webcam și fereastra unde va fi previzualizată imaginea.

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ă un 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.

Modulul 2 – Procesarea de imagine

Acest modul presupune prelucrarea imaginii în vederea obținerii informațiilor de interes. Principalele aspecte abordate în cadrul modulului sunt:

Efectuarea operațiilor de procesare de imagine

Extragerea contururilor din imagine

Extragerea coordonatelor punctelor ce defines conturul

Generarea codului G

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 citire 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 formatul 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.

Pentru realizarea efectivă a overlay-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.

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 încorporează 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

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ă la 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.

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 conturului.

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 threshold, 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. De 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.

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 respectivi î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.

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.

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 programare 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 în mod manual a brațului robotic, iar butonul Home determină revenirea brațului în poziția originală.

Testare și validare

În vederea testării și validării soluției propuse, s-au realizat diverse experimente practice cu ajutorul 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 observă 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 din aceasta.

Pentru a soluționa problema urmăririi traiectoriei, s-a abordat o altă metodă 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 orar. După implementarea acestei soluții, s-au obținut rezultatele din figura 3.29:

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 eliminarea acestei probleme.

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 fost preluată de pe un site de internet.

În figura 3.30 este evidențiat desenul unui portret realizat prin intermediul software-ului DoBot Studio.

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 realizat 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 de aceeași intensitate din toate unghiurile. Acest lucru a determinat o mai bună calitate a imaginii, și implicit a rezultatului final.

Concluzii

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 selectate 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 modalităț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 operaț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 grafice 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țului robotic în vederea desenării imaginii dorite.

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.

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 realiza modele 3D sau diverse gravări pe baza imaginii introduse ca și intrare sistemului.

Similar Posts