• Rezultati Niso Bili Najdeni

3 Strojna oprema 19

3.3 Luči

3.3.3 Luč pri odlagalni poziciji

Luč pri odlagalni poziciji sem postavil s strani, in sicer iz nasprotne kot je postavljena kamera. Postavitev luči je prikazana na sliki 3.8. V tem primeru je barva luči rdeča, saj je pri odlagalni poziciji potrebno preverjati natančnost odlaganja zareznega traku. Enako kot pri podajalcu zareznega traku, je tudi pri odlaganju potrebno doseči zadosten kontrast med zareznim trakom, ki je črne barve in podlago, ki je sive barve.

Razlog za postavitev luči s strani je v preverjanju ali so na odloženem kosu napake, kot npr. mehurčki, kateri se lahko pojavijo zaradi napake pri prijemanju zareznega traku. Pri testiranju konfiguracije se je izkazalo, da se zaradi postavitve luči na sliki pojavlja senca, ki je zelo moteča in ovira razpoznavanje slike. Problem sem sprva poskušal rešiti z naklonom luči, kar pa ni doseglo želenega učinka. Luč je bilo potrebno premakniti višje, kar pa je posledično vodilo do oviranja robotskega manipulatorja. Problem sem rešil tako, da sem celoten nosilec luči premaknil na drugo stran celice.

32 3 Strojna oprema

3.4 Programirljivi logični krmilnik

Programirljivi logični krmilnik (PLK) je digitalna elektronska naprava, ki na podlagi ukazov, shranjenih v programirljivim pomnilniku, izvaja logične, sekvenčne, časovne in aritmetične operacije ter s tem vodi različne naprave in procese preko binarnih in analognih vhodov in izhodov [2].

V tem sistemu je uporabljen logični krmilnik Siemens in sicer, serije S7-1500.

Simatic S7-1500 je ena od mnogih serij programirljivih logičnih krmilnikov nemškega proizvajalca Siemens. Krmilniki so ena od najpomembnejših komponent znotraj proizvodne linije, saj nanj priključimo vse ostale komponente krmiljenja v obliki vhodno-izhodnih enot, preko katerih dobimo in pošiljamo ukaze do izvršilnih enot.

Industrijski krmilniki morajo biti robustni in odporni na motnje, saj je v industriji potrebna natančnost in zanesljivost, s čimer se prepreči materialna škoda, zaradi nenatančnosti izdelkov ter zaradi zaustavitev proizvodnih strojev in linij.

Povezava med kamero in robotskim manipulatorjem je vzpostavljena preko tega krmilnika, ki skrbi tudi za krmiljenje celotne postaje. Vse informacije in ukazi se pošiljajo preko krmilnika. Za vsak zajem slike je potreben ukaz krmilnika. Ko se program na VC5 zaključi, se podatki pošljejo krmilniku, ta pa ji nato pošlje manipulatorju.

3.5 Računalnik VC5

Cognex VC5 je industrijski računalnik namenjen strojnemu vidu. Za komunikacijo ima na voljo dvoje vrat LAN, štiri vrata GigE, ena vrata I-ENET in ena vrata RS232. Za različne senzorje ima na voljo dva priključka DB15 in štiri vhode za enkoderje. Na voljo ima tudi osem vhodov in šestnajst izhodov. Za komunikacijo s PLK sem uporabil protokol PROFINET. Poleg omenjenega ima VC5 na voljo tudi tri vrata USB in en izhod VGA. Vrata GigE imajo možnost napajanja preko etherneta in so namenjena priključitvi kamer. Na računalniku je nameščena vsa programska oprema, potrebna za avtomatizirano obdelavo slik. Razvojni program, ki je na računalniku, se imenuje Cognex Designer, verzija 2.6. Operacijski sistem je Windows 8.1 embeded. Računalnik VC5 je proizvajalec sicer umaknil iz prodaje, zaradi nestabilnosti, vendar pa naročnik zahteva uporabo računalnika VC5. Med izvajanjem projekta sem ugotovil, da ima VC5 veliko pomanjkljivost oz. napako, in sicer to, da se slike shranjujejo na notranji disk SSD. V primeru okvare diska je potrebna zamenjava celotnega računalnika. Problem sem rešil tako, da sem za hranjenje slik uporabil USB ključ. Računalnik VC5 prikazuje slika 3.14 [6].

3.5 Računalnik VC5 33

Slika 3.14: Industrijski računalnik Cognex VC5

34 4 Cognex designer

4 Cognex designer

Cognex designer je integrirani razvojni program namenjen razvoju tako dvodimenzionalnih kot trodimenzionalnih programov za strojni vid. Ima zelo dobro orodje za razpoznavanje različnih vzorcev, merjenje dolžine z zelo visoko natančnostjo ter še mnogo ostalih funkcij. Ker se ne programira grafično, se programira v programskem jeziku C#, ki je razvojni programski jezik namenjen operacijskemu sistemu Windows.

4.1 Uporabniški vmesnik

Predno sem pričel s pisanjem programa za obdelavo slik, ja bilo najprej potrebno izdelati uporabniški vmesnik, ki je namenjen upravljanju in spremljanju sistema s strani operaterja. Program Cognex Designer ponuja več različnih predpripravljenih elementov, ki jih lahko uporabimo za izgradnjo vmesnika. Moje delo je zajemalo optimizacijo obstoječih in razvoj novih vmesnikov. Ker naročnik projekta prihaja iz Romunije, je bilo potrebno vse vmesnike izdelati tako, da je bil primarni jezik romunščina, sekundarni pa angleščina. Ob pritisku na gumb vmesnika »Switch Language« se mora jezik celotnega vmesnika spremeniti v želenega. Naročnik je imel pri izdelavi sistema in vmesnika še dodatne zahteve, in sicer možnost ročnega proženja kamer preko uporabniškega vmesnika ter proženje luči, ki osvetljujejo izdelek, preko optičnega spojnika, ki je na kameri. Prednost proženja luči preko kamere je ta, da se proženje luči in zajem slike vedno izvedeta istočasno, saj kamera ob zajemu slike sproži optični spojnik, ki sproži luči. S tem dosežemo, da je zajeta slika primerno osvetljena.

Uporabniški vmesnik je sestavljen iz več strani, ki so potrebne za programiranje in nadzor samega programa. Najpomembnejša stran vmesnika je »Obdelava slike«, ki je prikazana na sliki 4.1. Poleg te, sem izdelal še strani:

• Informacija sistema,

4.2 Uporabljena orodja 35

Slika 4.1: Stran za obdelavo slike

4.2 Uporabljena orodja

Za izdelavo sistema so bila uporabljena različna orodja, ki so opisana v naslednjih podpoglavjih.

4.2.1 Orodje za pretvorbo slike v binarno obliko

Orodje za pretvorbo slike v binarno obliko pretvori zajeto sliko iz sive v binarno.

Orodje je uporabno pri vseh izdelanih programih, saj lahko z njim odstranimo moteče bleščanje mize od opazovanega predmeta. Primer pretvorbe v binarno sliko je viden na sliki 4.2.

V orodju se lahko nastavi različne parametre, kot so:

• prag, pri katerem se izvede transformacija,

• iskanje temnega predmeta na svetli podlagi ali svetlega predmeta na temni podlagi,

• nastavljanje območja na sliki, ki naj bo pretvorjeno,

• nastavljanje načina praga, ki je lahko fiksen ali dinamičen, ter se spreminja glede na sliko, določi pa ga program,

• nastavljanje minimalne površine, ki naj se pretvori, kar je koristno, če je na mizi, npr., kakšna praska.

36 4 Cognex designer

Slika 4.2: Orodje za pretvorbo v binarno sliko

4.2.2 Orodje za iskanje vzorcev

Orodje za iskanje vzorcev se uporablja za pridobivanje pozicije folije, zareznega traku ter za iskanje referenčne pozicije pri odlaganju. To orodje sem uporabljal največ, saj je eno izmed najosnovnejših orodij za izdelovanje programov strojnega vida.

Tudi pri tem orodju je možno nastavljati parametre, ki določajo njegovo delovanje, in sicer:

• nastavljanje praga,

• nastavitve iskanja, ki je v vseh programih v projektu nastavljen na »PAT max && PAT quick«,

• nastavljanje območja, kjer orodje opazuje,

• možnost maskiranja neželenih značilk,

• možnost omejitve vidnega kota.

Orodje je razmeroma preprosto za uporabo. Najprej je potrebno zajeti referenčno sliko opazovanega predmeta, pri čemer je najbolje, da je predmet v idealni poziciji. Ko je slika zajeta, jo je potrebno povezati v orodje. V orodju se nato pritisne na gumb

»Grab Train Image«, kar zajeto sliko spremeni v učno. Ko je slika zajeta, je potrebno izbrati opazovano sliko kot »Current.TrainImage«, na njej pa se določi učno območje na predmetu, kot to prikazuje slika 4.3. Ko je območje določeno, je potrebno nastaviti še koordinatno izhodišče kosa, kar se lahko naredi s pritiskom na gumb »Center Origin«, ali pa se ga ročno postavi na želeno točko. Ko sta območje in koordinatno

4.2 Uporabljena orodja 37

izhodišče določena, postopek zaključimo s pritiskom na gumb »Train« in kos je naučen.

Ko se postopek konča, orodje poda rezultate iskanja, in sicer:

• ujemanje kosa od učnega,

• koordinate X in Y,

• zasuk in

• število najdenih kosov.

Slika 4.3: Orodje za iskanje vzorcev

4.2.3 Orodje za določanje histograma

Orodje za določanje histograma na opazovanem območju določi histogram slike, in sicer v smislu beline ter standardne deviacije. Vrednosti povprečne beline se gibajo med 0 in 255, standardna deviacija pa določa homogenost površine predmeta. To orodje sem uporabil pri podajalcu folije in pri kontroli odlaganja.

4.2.4 Orodje za nastavljanje koordinatnega izhodišča

Orodje za nastavljanje koordinatnega izhodišča se uporablja za nastavitev novega koordinatnega izhodišča. Orodje sem uporabil kadar je bilo potrebno nastaviti koordinatno izhodišče na opazovan predmet ali na neko določeno referenco. Pri tem

38 4 Cognex designer

se orodju poda vhodna slika in koordinate, orodje pa nastavi novo koordinatno izhodišče. Primer uporabe orodja je pri podajalcu folije, kjer je potrebno preveriti ali je folija pravilnega tipa in nepoškodovana. Ker se folija vedno poda na drugo mesto, je potrebno te napake iskati glede na njeno pozicijo. Koordinate so bile v tem primeru rezultat orodja za iskanje vzorcev.

4.3 Kalibracija

Kalibracija je eden najpomembnejših korakov, ki jih je potrebno izvesti za zanesljivo in natančno merjenje. Za iskanje določenih značilk ali zaznavanje prisotnosti predmeta kalibracija sicer ni potrebna, je pa obvezna takrat, ko je potrebno dobiti podatke v določeni, človeku razumljivi, enoti. Kalibracija je pomembna tudi za pravilno postavljanje robotskega manipulatorja v koordinatnem sistemu kamere.

Kalibracijska stran na uporabniškem vmesniku je prikazana na sliki 4.4.

Slika 4.4: Kalibracijska stran na uporabniškem vmesniku

4.3.1 Kalibracija baznega koordinatnega sistema

Kalibracijo baznega koordinatnega sistema sem v tem projektu naredil s šahovnico. Program Cognex designer ima že vgrajeno orodje za kalibracijo in odpravljanje popačenja kamere.

4.3 Kalibracija 39

Popačenja se pojavljajo zaradi naklona kamere, neravne površine opazovane podlage, pa tudi zaradi leče, saj leča, ki ima zelo kratko goriščno razdaljo zelo popači sliko zaradi svoje oblike. Popačenje leče se na sliki odraža tako, da je rob slike nekoliko ukrivljen.

Bazni koordinatni sistem se lahko premika z uporabo značilk na šahovnici ali z ročno postavitvijo. V tem projektu sem pustil bazni koordinatni sistem na privzetem mestu, kot ga nastavi program, saj je za delovanje programa to nepomembno.

Do kalibracije koordinatnega sistema se dostopa s klikom na gumb »Base Coordinate System«, kot je vidno na sliki 4.4.

4.3.2 Kalibracija robotskega manipulatorja

Robotski manipulator ima na zgornji ploskvi, pri ogliščih nalepljene kalibracijske križce, ki jih program na sliki poišče z uporabo orodja za iskanje vzorcev.

Z uporabo programskega jezika C# sem izračunal središče robotskega manipulatorja, ki predstavlja referenčno točko le-tega. Referenčna točka, ki je definirana s pozicijo X, Y ter rotacijo A, je shranjena kot globalna spremenljivka sistema, program za pobiranje folije oz. zareznega traku pa jo uporabi tako, da od izmerjene pozicije kosa odšteje vrednost reference v smereh X in Y, od izmerjene rotacije kosa pa odšteje rotacijo A. Kljub temu, da imata kamera in robotski manipulator različne koordinatne sisteme, lahko kamera s pomočjo referenčne točke in odmika od ničelne točke (sredina mize) določi kje v njenem koordinatnem sistemu se nahaja manipulator. Kalibracijo robotskega manipulatorja prikazuje sika 4.5.

Kot je vidno s slike 4.5, kalibracijskih križcev, zaradi oblike manipulatorja, ni mogoče postaviti natančno v oglišča. Zaradi teh odstopanj je potrebno kalibracijsko točko zamakniti programsko, kar storimo preko uporabniškega vmesnika in s programom, napisanim v jeziku C#.

Kalibracijo robota je mogoče popraviti s klikom na gumb »Edit«, ki je v sredinskem oknu na sliki 4.4. Odmike reference pa se prav tako nastavlja na sredinskih vnosnih poljih kalibracijske strani uporabniškega vmesnika.

40 4 Cognex designer

Slika 4.5: Kalibracija robotskega manipulatorja

4.3.3 Kalibracija kosa

Pri učenju vzorca kosa je težko določiti točno pobiralno pozicijo, kar pomeni, da je potrebno koordinatno izhodišče kosa spreminjati. To lahko storimo na kalibracijski strani v levem oknu, kot je vidno na sliki 4.4. Za spreminjanje koordinatnega izhodišča kosa sem napisal program v jeziku C#, ki ga prikazuje slika 4.6.

Končne odmike kosa sem nastavil tako, da sem manipulatorju določil pobiralno pozicijo in preverjal kako manipulator kos pobere. Pri določanju koordinatnega izhodišča kosa sem imel na začetku nekaj težav z ujemanjem koordinatnih sistemov kosa in manipulatorja. Ker je kot vsake folije nekoliko drugačen, se mora prijemalo manipulatorja obračati, kar pomeni, da morata biti koordinatna sistema poravnana, in sicer na točki rotacije.

4.3 Kalibracija 41

Slika 4.6: Program za odmikanje referenčne točke kosa

42 4 Cognex designer

4.3.4 Kalibracija odlagalne pozicije

Pri odlaganju folije manipulatorja ni bilo potrebno kalibrirati, saj je odlagalna pozicija vedno enaka. Po drugi strani, je za odlaganje zareznega traku kalibracija potrebna, saj ga manipulator odlaga glede na postavitev odlagališča, ki je na sistemu

»montrack«, ki se pripelje v postajo.

Za kalibracijo sem izbral dve značilki, ki sta na paleti, ki jo dostavi sistem

»montrack«. Značilki nato poišče orodje za iskanje vzorcev in s programom izračuna sredinsko točko med njima, ki se jo določi za novo koordinatno izhodišče z orodjem za nastavljanje koordinatnega izhodišča.

Podobno kot pri manipulatorju, je tudi tu nujna možnost za zamik koordinatnega izhodišča, ki se izvede podobno kot pri manipulatorju, tj. na sredinskem polju kalibracijske strani, kot je prikazano na sliki 4.4.

Odlaganje kosa je vodeno s pomočjo strojnega vida, pri čemer mora biti zarezni trak odložen na določeno mesto s toleranco ± 0,2 mm. Po končanem odlaganju je nujno preveriti tudi pravilnost odlaganja.

4.4 Program za pobiranje folije

Program za pobiranje folije predstavlja prvega od treh programov, ki skrbijo za delovanje sistema. Osnovni algoritem programa je naslednji. Najprej se zajeta siva osem-bitna slika pretvori v binarno. Binarno sliko nato prejme orodje za iskanje vzorcev, ki najprej določi pozicijo folije, tj. določi njene koordinate, in jih zapiše v orodje za določanje koordinatnega sistema ter v orodno skupino, v kateri se izvede koda, prikazana na sliki 4.6. Orodje za nastavljanje koordinatnega izhodišča postavi novo izhodišče na kos v originalni vhodni sivi sliki. Novo izhodišče se v nadaljevanju uporabi za določanje histograma.

V nadaljevanju folijo preverijo tri orodja za določanje histogramov, ki preverjajo ali so na foliji prisotni repki in ali so le-ti zviti. Prisotnost repkov se preverja tako, da se na sliki izmeri belina na točki, kjer naj bi se nahajal repek. Če le-tega ni, je kos zavrnjen, manipulator pa ga pobere in odvrže v zabojnik za smeti.

Ko se izvedejo orodja za pregled, se na sliko nariše znake, in sicer:

• križec baznega koordinatnega sistema,

• križec za referenčno točko manipulatorja,

• križec za koordinatni sistem folije in

• linijo od križca koordinatnega sistema folije do referenčne točke manipulatorja.

Nazadnje se opravi še pregled podatkov s programom, ki ga prikazuje slika 4.7.

4.4 Program za pobiranje folije 43

Če je bila med obdelavo zaznana napaka, kot npr. zviti rep, se v spremenljivko

»errorID« zapiše v naprej določena vrednost, ki določa vrsto napake. V primeru manjših napak, kot je zvit rep, se napaka le zabeleži. Kos se odnese v zaboj za smeti in cikel se ponovi. Ob morebitni hujši napaki, kot je napaka pri zajemanju slike, se na uporabniškem vmesniku pokaže sporočilo, katero mora usposobljena oseba odpraviti.

V primeru obdelave brez napak, se podatki prikažejo na uporabniškem vmesniku, kot je prikazano na sliki 4.8. Rezultat obdelave se nato pošlje preko protokola Profinet do logičnega krmilnika, ki na manipulatorju izvede premik oz.

akcijo. Do krmilnika se prenesejo naslednje informacije:

• koordinata X,

• koordinata Y,

• rotacija A,

• errorID in

• stanje kosa.

Slika 4.7: Program za pregled rezultatov

44 4 Cognex designer

Slika 4.8: Uporabniški vmesnik pri pregledu folije

4.5 Program za pobiranje zareznega traku

Program za pobiranje zareznega traku predstavlja drugega od programov, ki skrbita za delovanje sistema. Pri tem programu je osnovni algoritem nekoliko drugačen kot pri pobiranju folij, saj mora program razpoznati več objektov hkrati. Razlog temu je namestitev zareznega traku, ki je prilepljen na plastični zaščiti, s katere ga mora manipulator pobrati. Plastična zaščita oz. podlaga je vidna na pobiralni mizi na sliki 3.7.

Za pravilno pobiranje se mora zarezni trak nahajati na v naprej določeni poziciji, ki je določena tako, da je po končanem pobiranju naslednji trak že zelo blizu idealne pozicije. Pri pobiranju se manipulator postavi nad zarezni trak, nato pa sta se oba, s pomočjo enkoderja, z enako hitrostjo premikata proti robu mize, kjer je nameščen nož za odstranjevanje zaščite. Predno zarezni trak doseže pobiralno mesto, je potrebno preveriti ali je brez napak in pravilno orientiran. Postopek je podoben kot pri preverjanju folij, tj. s pretvorbo sive osem-bitne slike v binarno obliko. Zaradi dobrega kontrasta med podlago in zareznim trakom, je prag za določanje ali je barva ena ali nič mogoče nastaviti tako, da je barva zareznega traku zelo blizu meje. To pomeni, da so na zareznem traku vidne tudi vse nepravilnosti, npr. lepilo na zgornji strani traka ali

4.5 Program za pobiranje zareznega traku 45

pa luknja v traku. Če je prvi trak v vrsti poškodovan, ga je potrebno premakniti naprej, tako da bo naslednji trak na pobiralni poziciji.

Ker orodje za iskanje vzorcev ne zna razvrščati vzorcev glede na pozicijo, jih je bilo potrebno razvrstiti s programskim jezikom C#. Program sem napisal tako, da najprej preslika vhodne spremenljivke v lokalne in jih prepiše v zbirke. Nadalje zbirke primerja med sabo in zapiše zbirko, ki ima najmanjšo koordinato Y, v zbirko imenovano »FirstPart«. Ko je ta zbirka določena, program poišče še zbirko z največjo koordinato Y, ki se zapiše v zbirko ThirdPart. Ko sta določeni prva in zadnja zbirka, se preostala zbirka zapiše v zbirko »SecondPart«. Program je viden na sliki 4.9 in na sliki 4.10. Elemente zbirk program nato zapiše na izhodne spremenljivke.

Slika 4.9: Program za razvrščanje vzorcev prvi del

46 4 Cognex designer

Slika 4.10: Program za razvrščanje, drugi del

Ko je razvrščanje končano, se za prvi kos v vrsti naredi sprememba pobiralne točke, in sicer s programom na sliki 4.6. Za tem se, enako kot pri pobiranju folij narišejo križci, z izjemo, da je tu dodan še križec pobiralne točke. Po končanem

4.5 Program za pobiranje zareznega traku 47

postopku, se izvede še preverjanje podatkov s programom, ki je prikazan na sliki 4.11 in na sliki 4.12. V primeru, da je prvi kos v vrsti brez napak, se ga postavi v pobiralno točko. Če je prvi trak poškodovan, se na pobiralno pozicijo premakne drugi. Slika se ponovno zajame in program se ponovi.

Slika 4.11: Program za preverjanje podatkov pobiranja zareznega traku, prvi del

48 4 Cognex designer

Slika 4.12: Program za preverjanje podatkov pobiranja zareznega traku, drugi del

Končna obdelana slika zareznega traku je vidna na sliki 4.13

4.6 Program za odlaganje in pregled odlaganja zareznega traku 49

Slika 4.13: Končna obdelana slika pobiranja zareznega traku

4.6 Program za odlaganje in pregled odlaganja zareznega traku Program za odlaganje in pregled odlaganja zareznega traku predstavlja tretjega od programov, ki skrbijo za delovanje sistema. Pri tem programu je bilo potrebno dodati možnost zajemanja dveh slik z isto kamero. Prvi zajem slike je namenjen določitvi odlagalne pozicije, drugi zajem pa preverjanju pravilnosti odlaganja zareznega traku.

Najprej se tako izvede slikanje odlagalne pozicije, rezultat obdelave slike pa se pošlje robotu. Informacije o odlagalni poziciji se sporočajo le za zarezni trak, saj ima folija na odlagalni poziciji mehanska vodila. Za odlaganje zareznega traku je potrebna visoka natančnost, saj je bila zahteva naročnika, da je zarezni trak odložen na 0,20 mm

Najprej se tako izvede slikanje odlagalne pozicije, rezultat obdelave slike pa se pošlje robotu. Informacije o odlagalni poziciji se sporočajo le za zarezni trak, saj ima folija na odlagalni poziciji mehanska vodila. Za odlaganje zareznega traku je potrebna visoka natančnost, saj je bila zahteva naročnika, da je zarezni trak odložen na 0,20 mm