• Rezultati Niso Bili Najdeni

Razvoj sistema za določanje lege objektov na osnovi globinske kamere

N/A
N/A
Protected

Academic year: 2022

Share "Razvoj sistema za določanje lege objektov na osnovi globinske kamere"

Copied!
70
0
0

Celotno besedilo

(1)

Univerza v Ljubljani Fakulteta za strojništvo

Razvoj sistema za določanje lege objektov na osnovi globinske kamere

Diplomsko delo Visokošolskega študijskega programa I. stopnje Strojništvo – Projektno aplikativni program

Aljoša Burger

Ljubljana, september 2021

(2)
(3)
(4)
(5)

Univerza v Ljubljani Fakulteta za strojništvo

Razvoj sistema za določanje lege objektov na osnovi globinske kamere

Diplomsko delo Visokošolskega študijskega programa I. stopnje Strojništvo – Projektno aplikativni program

Aljoša Burger

Mentor: doc. dr. Rok Vrabič Somentor: doc. dr. Drago Bračun

Ljubljana, september 2021

(6)

vi

(7)
(8)

viii

(9)

ix

Zahvala

Najprej bi se rad zahvalil mentorju doc. dr. Roku Vrabiču, za mentorstvo, strokovno pomoč ter motivacijo v času pandemije. Brez vsega vloženega truda to delo nebi bilo mogoče. Zahvalil pa bi se še družini, za omogočanje študija vsa ta leta.

(10)

x

(11)

xi

(12)

xii

(13)

xiii

Izvleček

UDK 007.52:004.93(043.2) Tek. štev.: VS I/882

Razvoj sistema za določanje lege objektov na osnovi globinske kamere Aljoša Burger

Ključne besede: robotika

slikovni sistemi OpenCV

zaznavanje oblike objektov Robotski operacijski sistem C++

Sodobni industrijski roboti so pogosto uporabljeni za manipulacijo različnih objektov. Za uspešno delovanje pa potrebujejo informacije iz okolice. En od pristopov za zbiranje podatkov in njihovo procesiranje v takem sistem je računalniški vid. V diplomskem delu je zasnovan sistem za prepoznavanje oblike, velikosti in pozicije objekta, ki se premika po tekočem traku, s pomočjo globinske kamere. Predstavljena je teorija zapisa 2D slike, globinske slike, pridobljene s pomočjo stereo vida, ter osnovna predstavitev programskega ogrodja ROS. Razvito je programje, ki je povezano v delovnem okolju ROS. Programska oprema deluje v simulatorju Gazebo ter v realnem okolju s pomočjo Intel D435 globinske kamere. Narejena je primerjava med rezultati v simuliranem in realnem okolju, kjer se vidi pomanjkljivost globinskih podatkov če kamera ni pravilno postavljena glede na delovno območje, in če vplivi okolice niso pravilno upoštevani. Največja težava za procesiranje dvodimenzionalnih podatkov pa je razmerje med ločljivostjo kamere ter območjem interesa.

Na koncu so podani še napotki za nadaljnje delo.

(14)

xiv

(15)

xv

Abstract

UDC 007.52:004.93(043.2) No.: VS I/882

Development of a system for object pose estimation using a depth camera

Aljoša Burger

Key words: robotics

computer vision OpenCV

object shape recognition Robot operating system C++

Modern industrial robots are often used for manipulation of various objects. For a system to work, however, the robot needs information from its environment. An often used approach for collecting and processing of data in such systems is computer vision. In the thesis, a system was designed for recognition of the general shape, height, and position of an object, moving on a conveyor belt, with the use of an RGBD camera. The presented theory explains how 2D and depth images collected with stereo vision are formed as well as the fundamentals of the Robot Operating System (ROS). The software is developed within a ROS workspace.

The software is tested in a simulated enviroment based on Gazebo and in real life using an Intel D435 RGBD camera. A comparison is made between the results from the simulated and recorded data. It is evident that the depth information is susceptible to errors from incorrect camera placement and other negative impacts from the environment. Meanwhile, the largest issue when processing 2D data is the ratio between the camera resolution and the size of the region of interest. In the end further work and system optimisation is proposed.

(16)

xvi

(17)

xvii

Kazalo

Kazalo slik ... xix

Kazalo preglednic... xxi

Kazalo izsekov kode ... xxii

Seznam uporabljenih simbolov ... xxiii

Seznam uporabljenih okrajšav ... xxiv

1 Uvod ... 1

1.1 Ozadje problema ... 1

1.2 Cilji ... 2

2 Teoretične osnove ... 3

2.1 Prepoznavanje objektov v industrijskih aplikacijah ... 3

2.1.1 Pregled stanja tehnike ... 3

2.1.2 SCARA roboti ... 5

2.1.3 Osvetlitev interesnega območja ... 7

2.2 Slikovni sistemi ... 8

2.2.1 Kamere ... 8

2.2.2 Zapis 2D slike in barvni prostori ... 9

2.2.3 Tri-dimenzionalno slikanje površin ... 11

2.2.4 Shranjevanje 3D slike ... 13

2.3 Programska oprema ... 14

2.3.1 ROS ... 14

2.3.2 Gazebo ... 15

2.3.3 URDF ... 16

2.3.4 Rqt.. ... 17

2.4 Knjižnica OpenCV ... 18

2.4.1 Cannyjev filter ... 18

(18)

xviii

2.4.2 Hierarhija kontur ... 20

2.4.3 Gaussovo meglenje ... 20

2.4.4 Razširjenje ... 21

3 Metodologija raziskave ... 23

3.1 Realni sistem ... 23

3.1.1 Obravnavani objekti ... 24

3.1.2 Kamera Intel D435 ... 25

3.2 Simulacijski sistem ... 27

3.2.1 Simulacija sodelovanja dveh SCARA robotov ... 27

3.2.2 Simulacijsko okolje ... 28

3.3 Programski sistem ... 30

3.3.1 Potek procesiranja slike ... 30

3.3.2 Uporabniški vmesnik ... 32

3.3.3 Procesiranje 2D slike ... 33

3.3.4 Procesiranje 3D slike ... 35

3.3.5 Določanje mer in lokacije objektov ... 35

4 Rezultati in diskusija ... 38

4.1 Prepoznavanje oblik ... 38

4.2 Gabaritne mere in pozicija objektov ... 38

4.3 Težave pri zaznavanju ... 41

5 Zaključek ... 43

Literatura ... 45

(19)

xix

Kazalo slik

Slika 2.1: Prikaz zaznanega objekta na desni glede na zastavljene ključne značilnosti [2] ... 3

Slika 2.2: Postavitev TOF kamere glede na območje interesa (A) in izhodni oblak točk v koordinatnem sistemu kamere (B) [3]. ... 4

Slika 2.3: Oblak točk z najmanjšim očrtanim pravokotnikom (rdeča) in obrisom najmanjše oblike v katero so vštete vse točke (A) ter izpeljano omrežje zasedenosti (B) [3] ... 4

Slika 2.4: Prikaz objektov na traku v dveh pogledih. Zelene točke pripadajo traku, rdeče pa objektom [3] ... 4

Slika 2.5: Višinski zemljevid (A), višinski zemljevid po določanju pragov (B), urejena binarna slika (C), prepoznavanje različnih objektov (D), razbiranje ploščine (E) [3] ... 5

Slika 2.6: SCARA robot podjetja FANUC [4] ... 6

Slika 2.7: Prikaz delovnega območja SCARA robota [4] ... 6

Slika 2.8: Metode osvetljevanja ... 7

Slika 2.9: Osvetlitev kovanca: Direktna (A), v svetlem polju (B), v temnem polju (C), od zadaj (D) in direktna difuzna (E) [5] ... 8

Slika 2.10: Primer 3D tiskane rešitve za združevanje 2D RGB ter globinske kamere [6] ... 9

Slika 2.11: Prikaz barvnega modela RGB [8] ... 10

Slika 2.12: HSV barvni model[9] ... 10

Slika 2.13: Nazorni prikaz delovanja kontatknega slikanja [10] ... 11

Slika 2.14: Prikaz deformacije vzorca pri principu strukturirane svetlobe [11] ... 12

Slika 2.15: Nazoren prikaz delovanja stereoskopske kamere [7] ... 12

Slika 2.16: Oblika vzorca, ki ga projicira kamera Intel D435 [12] ... 13

Slika 2.17: Dva pogleda na oblak točk modela torusa [13] ... 14

Slika 2.18: Prikaz globinske slike (A) glede na zajeto sliko (B) [14] ... 14

Slika 2.19: Povezava vozlišč (elipse) prek tem (pravokotniki), za primer simulacije v tej nalogi, prikazano v rqt_graph ... 15

Slika 2.20: Gazebo okolje ... 16

Slika 2.21: XML koda za URDF model modrega valja in prikaz opisanega objekta ... 16

Slika 2.22: GUV programa “Image view” za ogled slikovnih tem ... 17

Slika 2.23: GUV programa “bag” ... 17

Slika 2.24: Prikaz preverjanja lokalnega maksimuma [16] ... 18

Slika 2.25: Nazoren prikaz prepoznavanja robov s Cannyjevim filtrom[16] ... 19

Slika 2.26: Slike s prepoznanimi robovi ulitka in valja s slabimi parametri za iskanje mejnih robov (A) in (B) ter boljšo izbiro za ista objekta (C) in (D) ... 19

Slika 2.27: Primer hierarhije kontur [16] ... 20

Slika 2.28: Sivinska slika pred in po razširjanju [16] ... 21

Slika 3.1: Realni sistem v laboratoriju ... 23

Slika 3.2: Pločevinka barve (A) in valjasti surovec (B) ... 24

Slika 3.3: Ulitek z rebri (A) in ploščat ulitek (B) ... 25

Slika 3.4: Kartonasta škatla ... 25

Slika 3.5: Kamera Intel D435 ... 26

(20)

xx

Slika 3.6: Simulacija sodelovanja dveh SCARA robotov ... 28

Slika 3.7: Urejena simulacija ... 29

Slika 3.8: Povezava vozlišč za posnetek ... 30

Slika 3.9: Povezava vozlišč za simulirani del naloge ... 30

Slika 3.10: Prvi del diagrama poteka procesiranja slike ... 31

Slika 3.11: Drugi del diagrama poteka procesiranja slike ... 31

Slika 3.12: GUV nastavljivih parametrov ... 32

Slika 3.13: Nepravilne nastavitve in prikaz artefaktov ... 33

Slika 3.14: Zajeta regija interesa (A) in celotna posneta slika (B) ... 33

Slika 3.15: Koraki urejanja slike za prepoznavanje kontur: Pretvorba v sivinski barvni prostor (A), meglenje (B), iskanje robov (C), odebeljevanje robov (D) ... 34

Slika 3.16: Izrisana najdena kontura ... 34

Slika 3.17: Na konturo škatle (A) in pločevinke barve (B) narisana popisana oblika ... 35

Slika 3.18: Slikovni prikaz računanja mer orisanega štirikotnika ... 36

Slika 3.19: Slikovni prikaz računanja mer orisanega kroga ... 36

Slika 3.20: Slikovni prikaz reševanja problema višine objekta v eni osi ... 37

Slika 4.1: Globinski posnetek kartonaste škatle ... 38

Slika 4.2: Pločevinka barve (A) in kartonasta škatla (B) na dveh lokacijah ... 39

Slika 4.3: Prebrana napačna višina rebrastega (A) in ploščatega ulitka (B), ter valjastega surovca (C) ... 40

Slika 4.4: Testni objekti v simulaciji: Večkotni zeleni objekt (A), rdeči kvader (B)in moder valj (C) ... 40

Slika 4.5: Rdeč kvader s prebrano pozicijo iz uporabniškega vmesnika (A) in preračunano pozicijo (B) iz simulacije ... 41

Slika 4.6: Prekrivanje objektov ... 41

Slika 4.7: Dotikanje podobnih objektov ... 42

Slika 4.8: Dotikanje različnih objektov ... 42

(21)

xxi

Kazalo preglednic

Preglednica 3.1: Karakteristike kamere Intel D435 [18] ... 26 Preglednica 4.1: Primerjava izmerjenih vrednosti gabaritnih mer z izračunanimi ... 39

(22)

xxii

Kazalo izsekov kode

Program 3.1: Launch datoteka simulacijskega dela ... 27 Program 3.2: URDF datoteka rdečega kvadra ... 29 Program 3.3: GUV za izbiro vira posnetka ... 32 Program 3.4: Branje oddaljenosti objekta v simulaciji ... 35 Program 3.5: Branje oddaljenosti objekta realne kamere ... 35

(23)

xxiii

Seznam uporabljenih simbolov

Oznaka Enota Pomen

B / Gaussova porazdelitev

d mm Seštevek zamikov d1 in d2

d1 mm Zamik prve kamere pri stereoskopskem vidu

d2

f Fs

fs

G Gx

Gy

h hobj

l0

l1

l2

ldif

lobj

M r x xd

y z Δs θ σ

mm mm / / / / / m m m m m m m / m / mm / mm mm

° /

Zamik druge kamere pri stereoskopskem vidu Goriščna razdalja

Matrika slike Intenziteta barve Robni gradient

Horizontalni robni gradient Vertikalni robni gradient

Višina kamere glede na tekoči trak Višina objekta na tekočem traku

Opazovana oddaljenost objekta od središča ROI Prva razbrana gabaritna mera objekta

Druga razbrana gabaritna mera objekta

Razlika med opazovano in realno oddaljenostjo objekta Realna oddaljenost objekta od središča ROI

Maksimalna intenziteta posamezne slikovne točke Razbran radij opazovanega objekta

Ločljivost slike v x smeri

Zamik opazovane točke od središča slikovnega senzorja Ločljivost slike v y smeri

Razdalja med kamero in objektom Zamik med kamerama

Kot robnega gradienta Standardna deviacija Indeksi

dif i j obj T0

T1

T2

s x y

Razlika

Koordinata x slikovne točke na sliki Koordinata y slikovne točke na sliki Objekt

Točka, opazovana na objektu Točka, opazovana na objektu Točka, opazovana na objektu Slika

Smer x kartezičnega koordinatnega sistema Smer y kartezičnega koordinatnega sistema

(24)

xxiv

Seznam uporabljenih okrajšav

Okrajšava Pomen

2D Dvodimenzionalno

3D Trodimenzionalno

FOV FPS GBR GUV

Vidno polje (ang. Field of View)

Slike na sekundo (ang. Frames per Second)

Barvni prostor, zelena, modra, rdeča (ang. Green, Blue, Red) Grafični Uporabniški Vmesnik

HSV OBJ OS RGB ROI ROS SCARA

Barvni prostor, odtenek, nasičenost, vrednost (ang. Hue, Saturation, Value)

Format za shranjevanje informacij o objeku v treh dimenzijah Operacijski Sistem

Barvni prostor, rdeča, zelena, modra (ang. Red, Green, Blue) Regija interesa (ang. Region Of Interest)

Robotski operacijski sistem (ang. Robot operating system) (ang. Selective Compliance Assembly Robot Arm)

SDF STL TOF URDF XML

Datoteka s prostorskimi podatki (ang. Spacial Data File) (ang. Standard Triangle Language)

(ang. Time-of-Fligt)

(ang. Unified Robot Description Format) eXtensible Markup Language

(25)

Uvod

1

1 Uvod

1.1 Ozadje problema

Avtomatizacija sistemov že dolga leta ne kaže znakov zaustavljanja, še posebno v industrijskem okolju. Ena glavnih ovir s katerimi se soočamo na tem področju, je zajemanje senzorskih informacij, katere lahko robot uporabi za izvrševanje svoje naloge. Za reševanje tega problema se pogosto uporablja prepoznavanje objektov s pomočjo strojnega vida, eden od teh temelji na bazi objektov, ki se lahko pokažejo na tekočem traku. S tem robotska roka dobi za vsak znan objekt vse relevantne informacije, ki so že prednaložene in ne razbrane iz slike. Tak sistem je bolj robusten in boljši za delo v večini industrijskih primerov, saj so objekti, ki se lahko pokažejo na tekočem traku znani. Druga možnost pa je uporaba stereo vida, kjer je robustnost zaznavanja zamenjana za splošnost. To pomeni, da bo ta način do neke mere deloval v vsakem okolju.

V tej nalogi se spopadamo s problemom prepoznavanja oblike, mer in pozicije objektov, ki se premikajo po tekočem traku. V preteklosti je za tako nalogo moral biti prisoten človek, saj je naš vidni sistem zelo dober za preprosto analitiko pri prepoznavanju objetkov, vendar pa se to ne sklada s ciljem večanja avtonomije delovnih sistemov. Uporaba optičnega zaznavanja lastnosti objektov v robotiki nam omogoča, da ne potrebujemo dodatne fizične interakcije z objektom za določanje njegovih lastnosti.

Naloga je bila realizirana v vedno bolj popularnem odprtokodnem okolju ROS (ang. Robot Operating System), kjer se je najprej postavilo simulirano okolje v programu Gazebo in v njem program za zaznavanje testiralo, nato pa se je to ponovilo na posnetkih iz resničnega življenja. V naši iteraciji smo uporabili globinsko kamero za čim bolj natančen popis objekta, programska oprema pa mora je morala prepoznati njegove približne mere v treh dimenzijah ter položaj relativno na podano območje interesa ali ROI (ang. Region Of Interest). Na zaslonu mora obrisati prepoznan objekt ter njegove mere in pozicijo izpisati.

(26)

2

1.2 Cilji

Cilji naloge so izdelava programske opreme za prepoznavanje oblike objektov, določanje njihove lege glede na center ROI in gabaritnih mer v metrih ter splošna integracija kode v ROS sistem. Program dovoli izbiro med simuliranim in realnim okoljem za primerjavo ter spreminjanje parametrov za nastavljivost glede na to kakšen objekt je zaznan. Glede na obliko so objekti obrisani s pravokotnikom ali krožnico in so nato prikazani na GUV (Grafični Uporabniški Vmesnik) skupaj z razbranimi informacijami.

Problem zaznavanja je rešen v programskem jeziku C++ s pomočjo OpenCV knjižnice, saj je to močno orodje za razpolaganje s slikovnimi informacijami, specifično s zaznavanjem robov objektov. Podatki bodo pridobljeni iz globinske kamere D435 in simulirane globinske kamere v programu Gazebo. Ti so objavljeni na temah v sistemu ROS na katere se naroči izdelana programska oprema. Po obdelavi je urejena slika objavljena za preverjanje pravilnosti in dodatne nastavljivosti.

V drugem poglavju so predstavljene teoretične osnove pomembne za razumevanje delovanja končnega sistema prepoznavanja oblike objekta na traku, ter programska oprema, ki je bila uporabljena pri izdelavi.

V tretjem poglavju je prikazana strojna oprema, ki je bila postavljena za nabiranje podatkov, objekti, ki so bili uporabljeni za testiranje sistema ter programska oprema, ki je bila napisana za izvajanje procesiranja slike ter določanja velikosti in lega objektov.

Na koncu se rezultate programa primerja z izmerjenimi meritvami. Prikazani so še primeri v katerih program svoje funkcije ne more izvajati, podani pa so še napotki za izboljšanje delovanja in zmanjšanje možnosti, da pride do takih leg objektov v katerih oprema ne more delati pravilno.

(27)

Teoretične osnove

3

2 Teoretične osnove

2.1 Prepoznavanje objektov v industrijskih aplikacijah

V industrijskih aplikacijah se za prepoznavanje objektov ter njihovo manipulacijo uporablja različne rešitve, glede na zahteve sistema.

2.1.1 Pregled stanja tehnike

Direktna slikovna primerjava ima bazo slik objektov, ki jih išče, in jih kot masko postavi čez zaznan objekt, da preveri če je le ta kateri od shranjenih objektov. Težava s to metodo je, da mora biti maska postavljena direktno na objekt ter zasukana v pravo smer in rešitev za to je veliko primerjav na vsakem zaznanem objektu [1]. Korak naprej je olajšanje dela za računalnik, in s tem pospešenje procesa zaznavanja. To pomeni, da je najprej za objekt definiran samo skupek ključnih značilnosti, po katerih je konsistentno prepoznan. To je lahko doseženo skozi risanje številnih povezanih točk na lokacije kjer so opaženi robovi, saj so le ti tesno povezani s ključnimi značilnostmi objekta, ko pride do prepoznavanja s strojnim vidom. Prikaz zaznavanja objekta glede na zastavljene ključne značilnosti je viden na sliki 2.1 [2].

Slika 2.1: Prikaz zaznanega objekta na desni glede na zastavljene ključne značilnosti [2]

(28)

4

Ta način sicer zahteva ročno vnašanje značilnosti, je pa že bilo narejeno določanje z robotskim vidom, ki temelji na Cannyjevem ali pa katerim močnejšim filtrom.

Prepoznavanje obrisa objekta je princip, kjer s pogledom na sivinsko sliko naprava poskusi razbrati samo robove. Na sliki se izbere eno slikovno točko in shrani njeno vrednost (nivo sivine). Potem pogleda vrednost vseh sosedov in, če je vrednost v pragu, ki je lahko tudi nastavljiv, smatra tudi to slikovno točko kot del zaznanega objekta. Po razbranem robu lahko iz njega razberemo kar nekaj lastnosti objekta, kot je njegova ploščina, obseg, generalna oblika ter zaznavanje lukenj in seveda koordinate v regiji interesa [1].

Drug pristop reševanja tega problema je s pomočjo oblaka točk. Ta procesira prejete dodatke na nekoliko drugačen način. Najprej se interesno območje zaznava prazno ter postavi v želeni koordinatni sistem, razvidno na sliki 2.2.

Slika 2.2: Postavitev TOF kamere glede na območje interesa (A) in izhodni oblak točk v koordinatnem sistemu kamere (B) [3].

Na sliki 2.3 je prikazano kako se ze oblak tekočega traku določi mrežo zasedenosti (ang.

occupancy grid) v koordinatnem sistemu območja interesa [3].

Slika 2.3: Oblak točk z najmanjšim očrtanim pravokotnikom (rdeča) in obrisom najmanjše oblike v katero so vštete vse točke (A) ter izpeljano omrežje zasedenosti (B) [3]

Na sliki 2.4 pa je prikaz zaznavanja objekta, ki ne pripada mreži zasedenosti, ki je bila postavljena za tekoči trak. To deluje ker ima omrežje zasedenosti tri dimenzije in, če so točke zaznane v njemu, ali pa niso dovolj goste potem niso štete kot objekt. Tako se zazna objekte, ki se premikajo po traku.

Slika 2.4: Prikaz objektov na traku v dveh pogledih. Zelene točke pripadajo traku, rdeče pa objektom [3]

(29)

Teoretične osnove

5 Na sliki 2.5 je prikazano procesiranje oblaka točk po korakih: Najprej se naredi višinski zemljevid (ang. heightmap). To je slika kjer je globina prikazana v sivinski sliki s tem da črna barva predstavlja največjo oddaljenost. Na za sliko se nastavi specifične prage, da je pridobljen boljši višinski zemljevid, sledijo še morfološke operacije za očiščevanje slike, kot je odstranitev samostojnih točk ter zapolnjevanje lukenj v objektu. Uporabljena je funkcija za prepoznavanje posameznih objektov, in vsakemu določi svojo barvo. Na koncu je narejena še poizvedba o dimenzijah specifičnih objektov, specifično ploščina opažene ploskve [3].

Slika 2.5: Višinski zemljevid (A), višinski zemljevid po določanju pragov (B), urejena binarna slika (C), prepoznavanje različnih objektov (D), razbiranje ploščine (E) [3]

2.1.2 SCARA roboti

Za interakcijo z objekti, po tem ko so zaznani, je poznanih veliko rešitev, najbolj elegantna od katerih je za pobiranje iz traku SCARA robot prikazan na sliki 2.6. Artikulirana robotska roka s selektivno skladnostjo (ang. Selective Compliance Articulated Robot Arm) ali SCARA je roka, ki ima omogočeno prosto premikanje po oseh X in Y in je toga na osi Z. Je roka, sestavljena iz dveh segmentov, ki se lahko vrtita okoli Z osi neodvisno drug od drugega. Ima štiri prostostne stopnje, kar pomeni, da ima omejene določene gibe, v tem primeru nima možnosti naklona ali odklona [4].

(30)

6

Slika 2.6: SCARA robot podjetja FANUC [4]

Delovno območje je v obliki valja okoli nosilne podlage s premerom odvisnim od dolžine segmentov roke razvidno na sliki 2.7. SCARA je odlična za “poberi in odloži” naloge (ang.

pick and place) katere opravlja z veliko hitrostjo.

Slika 2.7: Prikaz delovnega območja SCARA robota [4]

Pomembno je, da se ne preseže obremenitvenih maksimumov, še posebej ko je roka popolnoma iztegnjena, saj ima tako dokaj veliko navorno ročico.

(31)

Teoretične osnove

7

2.1.3 Osvetlitev interesnega območja

Glede na funkcijo sistema za katerega je potrebno pripraviti način osvetljevanja se izbira različne metode, postavitev katerih je prikazana na sliki 2.8.

Slika 2.8: Metode osvetljevanja

Direktna osvetlitev je način osvetljevanja ponavadi dosežena s virom svetlobe v obliki obroča, ki je postavljen tako da je kamera v sredini. Sicer je tako osvetlitev vzporedna z optično osjo, vendar zaradi direktne poti svetlobe do interesnega območja pride do lis kjer se svetloba odbija od podlage in objekta [5].

Osvetlitev v svetlem polju ima vir svetlobe pod majhnim kotom glede na optično os zaradi česar zmanjša bleščanje, vendar je le to še vedno prisotno. Boljši je kontrast kotov zaradi senčenja, vendar pa lahko le te tudi pripomorejo k napačnemu zaznavanju [5].

Osvetlitev temnega polja poveča kot vira svetlobe glede na optično os, in se s tem znebi možnosti zrcalnega odboja proti kameri, težava je z višino objektov ali višino njihovih delov (npr. hladilna rebra) [5].

Osvetlitev od zadaj je optimalen način osvetljevanja, če je cilj prepoznavanje robov objekta ali njihova kontrola. Izgubijo pa se vse podrobnosti na samem objektu [5].

Difuzna osvetlitev je boljša različica direktne osvetlitve, ki uporablja polprepustno zrcalo da zmanjša intenziteto svetlobnih žarkov in se s tem znebi bleščanja. Ker je intenziteta svetlobe, ki pride do kamere manjša je slika lahko pretemna, to pa se popravi z močnejšim virom svetlobe [5].

(32)

8

Rezultat opisanih načinov osvetljevanja je prikazan na sliki 2.9.

Slika 2.9: Osvetlitev kovanca: Direktna (A), v svetlem polju (B), v temnem polju (C), od zadaj (D) in direktna difuzna (E) [5]

2.2 Slikovni sistemi

2.2.1 Kamere

Za izbiro kamere je potrebno dobro razumevanja problema, ki ga rešujemo in na podlagi tega izberemo ustrezno napravo. Prva pomembna lastnost je, če ima kamera zmožnost izdelave globinske (3D) slike. To je uporabno če želimo natančno pozicijo ter tretjo dimenzijo opazovanega objekta čim bolj popisati v naši aplikaciji. V primeru da je cilj povezan s prepoznavanjem barve objekta (npr. zrelost paradižnikov) in natančnost pozicije ni tako pomembna, pa je izbira navadne 2D kamere dobra. Druge specifikacije, ki so pomembne pri kameri so njena ločljivost, velikost slikovnega senzorja, maksimalno število slik na sekundo (FPS), hitrost prenosa podatkov ter cena.

(33)

Teoretične osnove

9 V industrijskih aplikacijah je velikokrat globinski modul ločen od barvnega, vendar je možen nakup ali 3D tiskanje okvirja, v katerega sta modula vstavljena, da sta kameri na specifični razdalji in je tako možno uporabiti integrirano funkcijo za usklajevanje barvne ter globinske slike. Primer tiskane rešitve je prikazan na sliki 2.10.

Slika 2.10: Primer 3D tiskane rešitve za združevanje 2D RGB ter globinske kamere [6]

2.2.2 Zapis 2D slike in barvni prostori

Za predstavitev digitalnega zapisa sivinske slike je potrebnih nekaj predpostavk. Imamo dve spremenljivki i in j za katere velja 1 ≤ i ≤ 𝑥 in 1 ≤ j ≤ 𝑦 in funkcijo 𝑓s(i,j), ki označuje celoštevilsko funkcijo za katero velja 0 ≤ 𝑓s(i,j) ≤ M. Matrika 𝐹s (2.1) je sestavljena iz funkcije 𝑓s(i,j) kjer i in j določata pozicijo posamezne slikovne točke, njena vrednost pa določa intenziteto barve.

𝐹s = [

𝑓s(1,1) ⋯ 𝑓s(1, 𝑥)

⋮ ⋯ ⋮

𝑓s(𝑦, 1) ⋯ 𝑓s(𝑦, 𝑥)

] 2.1

Maksimalne vrednosti 𝑥, 𝑦 ter M so lastnsti kamere, 𝑥 in 𝑦 predstavljata ločljivost, M pa maksimalno intenziteto določeno s številom dodeljenih bitov [7].

Zgoraj je opisan sivinski barvni prostor, obstajajo pa še taki, ki za intenziteto barve nimajo dodeljene samo ene spremenljivke. S tem omogočajo barvni zapis slike.

RGB/BGR ([R]Rdeča, [G]Zelena, [B]Modra)

RGB barvni sistem katere model je prikazan na sliki 2.11, je sestavljen iz treh spremenljivk.

Vsaka predstavlja eno barvo (rdeča, zelena in modra), kombinacije le teh pa sestavijo vse ostale. Za vsako sliko so narejeni trije zapisi, en za vsako od teh spremenljivk, nakar so te postavljene ena čez drugo tako, da se prekrivajo in se barve združijo. Velikost slike tako postane trikrat večja kot navadna sivinska.

(34)

10

Slika 2.11: Prikaz barvnega modela RGB [8]

HSV ([H]Odtenek [S]Nasičenost [V]Vrednost)

HSV je barvni prostor katerega model je prikazan na sliki 2.12, opisuje barvno sliko kot odtenek, nasičenost in vrednost. Odtenek pove kakšna je bazična barva, nasičenost pove če kako bleda je ta barva in vrednost kako temna je. V robotskem vidu ima prednost pred RGB barvnim prostorom, kadar je en od parametrov za prepoznavanje objekta njegova barva, saj so vsi odtenki enkapsulirani v spremenljivki H. Ena od težav pa je da so robne vrednosti odtenka pripisane rdeči barvi (prehod v oranžno, ter prehod v vijolično) to je pogosto rešeno tako, da barvo slike obrnemo in nato iščemo odtenke modre, ki pa nima te težave.

Slika 2.12: HSV barvni model[9]

(35)

Teoretične osnove

11

2.2.3 Tri-dimenzionalno slikanje površin

Poznamo tri metode za tri-dimenzionalno slikanje (ang. 3D imaging); kontaktna, prenosna (transmisivna) ter odsevna.

Kontaktna metoda zbira podatke o obliki preko fizičnega kontakta z objektom. Je počasna in lahko poškoduje izdelek poda pa zelo natančne in točne podatke. Primer je Koordinatni Merilni Stroj (KMS), ki se pogosto uporablja v industrijskem okolju za preverjanje pravilnosti kosov. Na sliki 2.13 je nazorno prikazano zaznavanje oblike površine s kontaktno metodo.

Slika 2.13: Nazorni prikaz delovanja kontatknega slikanja [10]

Prenosna metoda uporablja senzorje, ki zaznavajo sproščanje energije v objektu za določanje oblike. Večinoma se tehnika uporablja v medicini v obliki Magnetne Resonance (MRI), Računalniške Tomografije (CT) ali Pozitronske Emisijke Tomografije (PET). Kjer ločujejo različne dele telesa glede na to koliko energije oddajo, ko jih stimulirajo na različne načine.

Odsevna ali reflektivna metoda je lahko optična ali ne optična. Primer ne optične metode je sonar, ki zazna objekte tako, da pošlje ultrazvočne valove in nato zaznava odboje na objektu. Informacije niso natančne so pa uporabne za ugotavljanje generalne pozicije in oblike. Uporaba sonarja je pogosta v ribolovu.

Optična odsevna metoda deluje v dražjih iteracijah na principu časa preleta (ang. Time of Flight), v bolj komercialno dostopnih primerih pa se uporablja princip strukturirane svetlobe, primer delovanja je prikazan na sliki 2.14, kjer sveti vzorec v infrardečem spektru, in z eno ali več kamerami z IR filtrom preverja kako je ta vzorec deformiran [8]. Druga možnost pa je zaznavanje globine s stereoskopskim vidom.

(36)

12

Slika 2.14: Prikaz deformacije vzorca pri principu strukturirane svetlobe [11]

Stereoskopski vid

Podobno kot človeški vid stereoskopske kamere posnamejo dve sliki ter jih primerjajo med seboj. Ker je razdalja med zaznavali znana, je možen preračun oddaljenosti objekta od kamere.

Slika 2.15: Nazoren prikaz delovanja stereoskopske kamere [7]

Na sliki 2.15 je prikazan je prizor na katerem je zaznana točka P na razdalji 𝑧. Zaznali sta ga dve kameri, ki sta zamaknjeni za 𝛥𝑠 in imata enako goriščno razdaljo 𝑓. Točka je projicirana na oba senzorja z zamikom 𝑑1 oziroma 𝑑2. Tako veljata relaciji (2.2):

𝑑1 𝑥d = 𝑓

𝑧 za levo kamero in 𝑑2

𝛥𝑠 − 𝑥d= 𝑓

𝑧 za desno kamero (2.2)

(37)

Teoretične osnove

13 Razdalja je lahko tako preračunana po formuli (2.3).

𝑑 = 𝑑1 + 𝑑2 =𝑓 ∙𝑥d

𝑧 +𝑓 ∙(𝛥𝑠 − 𝑥d)

𝑧 =𝑓 ∙𝛥𝑠

𝑧 → 𝑧 =𝑓 ∙𝛥𝑠

𝑑 (2.3) Zamik d je pridobljen skozi primerjanje slik in mu je nato določena najbližja diskretna vrednost ponavadi 0-255.

Na sliki se vidi tudi, da ima stereoskopski vid maksimalno dolžino na kateri je še efektiven saj postaneta sliki obeh kamer že preveč podobni za primerjavo. Ima pa tudi minimalno dolžino efektivnosti, ki pa je pogojena s širino senzorjev [7].

Za dodatno pomoč pri zaznavanju, uporabljajo nekatere kamere še IR vzorec, kot dodaten šum, ki ga kameri lahko zaznata, slika 2.16 prikazuje vzorec kamere uporabljene v tej nalogi.

Te vzorci so ponavadi specifične oblike, ki jih zaznavala poznajo in si tako povišajo možnosti, da bo globina razbrana pravilno [12].

Slika 2.16: Oblika vzorca, ki ga projicira kamera Intel D435 [12]

2.2.4 Shranjevanje 3D slike

Od naštetih načinov za 3D slikanje je kontaktna tako natančna, da lahko modele narejene s podatki pridobljenimi na ta način direktno pretvorimo v standardne formate za 3D objekte (STL ali OBJ), za ostale pa so podatki, večino časa pomanjkljivi in potrebujejo za tako pretvorbo še vmesne procese, ki na podlagi prejetih podatkov ekstrapolirajo, kako izgledajo tisti deli, ki so slabše popisani. Za uporabo v industrijskem zaznavanju potrebujemo popisane samo določene točke zato ti procesi niso potrebni. V tem primeru se globinski podatki shranijo v oblak točk ali globinsko sliko. Oblak točk je skupek točk, ki imajo definirane koordinate X, Y in Z in tako sestavijo ter vizualizirajo 3D objekt. Slika 2.17 prikazuje primer oblaka točk za model torusa.

(38)

14

Slika 2.17: Dva pogleda na oblak točk modela torusa [13]

Slika 2.18 pa prikazuje globinski zemljevid, ki deluje bolj kot 2D slika, le da ima še za vsako ima za vsako točko posnetka shranjeno samo razdaljo od kamere do opazovane točke.

Slika 2.18: Prikaz globinske slike (A) glede na zajeto sliko (B) [14]

2.3 Programska oprema

Za izdelavo in delovanje naloge je bila potrebna povezava med različnimi programi. Za simulacijsko okolje je bil uporabljen Gazebo, za predvajanje posnetkov rqt_bag, za GUV

“rqt_image_view”, za procesiranje slike in prepoznavanje objektov pa je bila ustvarjena programska oprema, ki je uporabljala knjižnico OpenCV. Vsi ti programi so bili povezani v ogrodju ROS.

2.3.1 ROS

Robotski operacijski sistem je ogrodje (ang. framework) za pisanje programske opreme za uporabo v robotiki. Vsebuje orodja in knjižnice za olajševanje dela pri izdelavi kompleksnih ter robustnih robotskih sistemov. Ker je baziran na odprtokodnem principu spodbuja sodelovalni razvoj. Rezultat tega je hitrejši napredek novih tehnologij v svetu avtomatizacije in robotike, saj se lahko vsak sodelavec osredotoča na specifike v svoji stroki, ter za svoj projekt uporabisegmente kode, ki so jih naredili drugi.

(39)

Teoretične osnove

15 Roscore je skupek vozlišč in programov, ki je zadolžen za komunikacijo med vsemi vozlišči.

To je že vgrajena funkcija ROSa, klicana z ukazom “roscore” in mora biti vklopljena za delo vseh ostalih vozlišč. Ob klicu ukaza “roslaunch” se začne izvajati tudi roscore [15].

Delovno okolje(ang. workspace) je mapa (ang. directory) znotraj katerega je z uporabo različnih orodij sestavljen celoten projekt. V tem diplomskem delu je bil uporabljen catkin.

To je en od sistemov za grajenje (ang. build system) v okolju ROS baziran na programski opremi Cmake, in je uporabljen za grajenje in prevajanje (ang. build and compile) projektov, kar je potrebno za pretvorbo izvorne kode v izvršljiv program.

Vozlišče (ang. node) v ogrodju ROS je lahko izdajatelj (ang. publisher), naročnik (ang.

subscriber) ali izdajatelj in naročnik hkrati, vendar ne more brati iz iste teme na katero pošilja podatke. Programi, ki sodelujejo med seboj so postavljeni v isti delovni prostor (ang.

workspace), tako je omogočeno istočasno delo na večih projektih brez mesebojnega motenja [14].

Ker so vozlišča samostojni programi, ki komunicirajo preko jasno definiranih vhodov in izhodov, je integracija že narejenega programja z lastnim zelo preprosta. Povezave med vozlišči in temami je možno pogledati s programjem “rqt_graph”, ki vrne prikaz kot se vidi na sliki 2.19.

Slika 2.19: Povezava vozlišč (elipse) prek tem (pravokotniki), za primer simulacije v tej nalogi, prikazano v rqt_graph

Izdajatelj (ang. publisher), Naročnik (ang. subscriber) in Tema (ang. topic)

Izdajatelj objavi podatke določenega tipa, naročnik jih bere in nato z njimi razpolaga kakor želi. Povezava med vsakin izdajateljem in naročnikom je tema, to je vmesna točka, ki olajša integracijo različnih vozlišč.

2.3.2 Gazebo

Gazebo je programska oprema v kateri je v diplomskem delu simulirano testno okolje za zaznavanje oblike objektov. Okolje opišemo v datoteki “.world” v XML temelječemu SDF formatu, vanj so lahko vstavljene tudi urdf datoteke, ki predstavljajo 3D objekte narejene po meri [13].

(40)

16

Slika 2.20: Gazebo okolje

Čeprav je okolje opisano pred zagonom, je možno naknadno dodajanje objektov v sceno.

Nekaj opcij je na voljo že v GUV (slika 2.20), kot je preprosta oblika ali pa različni viri svetlobe, omogočeno je tudi naknadno dodajane zunanjih objektov datotečnega tipa URDF

ali pa STL (ang. Standard Triangle Language).

2.3.3 URDF

URDF (ang. Unified Robot Description Format) je vrsta XML datoteke, uporabljena v okolju ROS. V datoteki definiramo obliko 3D objekta ter njegove lastnosti, ki jih bo Gazebo simulacija upoštevala [14]. Slika 2.21 prikazuje izgled kode URDF formata ter njen rezultat v Gazebo okolju.

Slika 2.21: XML koda za URDF model modrega valja in prikaz opisanega objekta

(41)

Teoretične osnove

17

2.3.4 Rqt

En od mnogih paketov, ki so na voljo v ROSu je Rqt. Vključuje veliko GUV orodij, ki temeljijo na ogrodju Qt.

“Image view” (slika 2.22) je programska oprema za prikaz slike ali videa objavljenega na temi. Uporabljena je bila za izdelavo GUV v tem delu.

Slika 2.22: GUV programa “Image view” za ogled slikovnih tem

Vreča (ang. bag) (slika 2.23) je način shranjevanja informacij, ki so objavljene na teme.

Primeri iz različnega življenja so bili predčasno posneti za testiranje, vendar na ta način so objavljeni podatki ravno tako kot, če bi le ti bili predvajani v živo iz kamere. Aplikacija

“rqt_bag” pa daje možnost snemanja ter predvajanja tega tipa datoteke.

Slika 2.23: GUV programa “bag”

(42)

18

Vmesnik dovoljuje izbiro vreče, katere teme naj bodo objavljene, igranje/pavziranje posnetka ter premikanje naprej in nazaj po slikah.

2.4 Knjižnica OpenCV

OpenCV je odprtokodna knjižnica za računalniški vid, ki vsebuje mnogo algoritmov za procesiranje 2D slike ali videa, ima pa tudi nekaj možnosti za globinske podatke. V tej nalogi so najpomembnejši Cannyjev filter za iskanje robov, funkcija za iskanje kontur ter funkcije za njuno boljše delovanje.

2.4.1 Cannyjev filter

Canny detektor najprej zmanjša prisotnost šuma z meglenjem in nato sliko filtrira s Sobelovim filtrom v horizontalni (𝐺𝑥) ter vertikalni (𝐺𝑥) smeri.

Sobelov filter primerja sosednje slikovne točke in išče ekstremne spremembe, ki predstavljajo rob. Robni gradient (2.4) ter kot smeri (2.5) je preračunan, iz rezultatov filtra [16].

𝐺 = √𝐺x2+ 𝐺y2 (2.4) 𝜃 = tan−1(𝐺y

𝐺x) (2.5) Ko sta robni kot in kot smeri izračunana je slika skenirana, da se odstrani slikovne točke, ki niso lokalni maksimum in s tem naredijo rob bolj oster.

Slika 2.24: Prikaz preverjanja lokalnega maksimuma [16]

Slika 2.24 podaja nazoren prikaz preverjanja lokalnega maksimuma. Točka A je na vertikalnem robu, smer robnega gradienta je vedno pravokotna na dejanski rob. Ker sta točki B in C v smeri gradienta zato mora detektor preveriti katera točka je največja in ostale spremeni v 0, da ne motijo nadaljnih procesov. Ta proces ustvari tanjše in močnejše robove, ki so boljši za slikovno procesiranje.

Zadnji korak je odstranjevanje robov, ki niso pomembni ali pa sploh niso res robovi (slika 2.25). Cannyjeva funkcija knjižnice OpenCV sprejme še dva parametra ki sta zgornja in

(43)

Teoretične osnove

19 spodnja meja. Deluje tako, da preverja če je intenziteta gradienta nad zgornjo mejo, in to določi kot definitiven rob. Če intenziteta pade pod zgornjo mejo bo še vedno štet kot rob čeprav je njegova vrednost tehnično prenizka. Če pa pade intenziteta robu pod spodnjo mejo ali pa nikoli ni bila nad zgornjo mejo, potem pa detektor tega ne bo prepoznal kot rob [16].

Slika 2.25: Nazoren prikaz prepoznavanja robov s Cannyjevim filtrom[16]

Točka na robu A ima močno intenziteto in je prepoznana kot rob, vendar ta pade pod zgornjo mejo do točke C kar pa ne pomeni, da ta ni več šteta kot rob. Točka B pa ni povezana z nobeno točko, ki bi imela dovolj močno intenziteto in ni šteta kot rob čeprav nikoli ne pade pod spodnjo mejo [16].

S spreminjanjem parametrov zgornje in spodnje meje se išče robove, ki so uporabni za posamezno aplikacijo. Slika 2.26 prikazuje realno izhodno sliko zaznanih robov s pomočjo Cannyjevega filtra

Slika 2.26: Slike s prepoznanimi robovi ulitka in valja s slabimi parametri za iskanje mejnih robov (A) in (B) ter boljšo izbiro za ista objekta (C) in (D)

(44)

20

2.4.2 Hierarhija kontur

Ko so najdene konture, se shrani tudi informacija o njihovem nivoju in njihovi relaciji z bližnjimi konturami. Sicer so različni načini shranjevanja glede na to kaj se potrebuje vendar je “RETR_TREE” tista, ki je bila uporabljena v tej nalogi. Za vsako konturo pove katera je naslednja kontura na istem nivoju, katera je bila prejšnja, če je otroška konturo in če je starševska kontura [14]. To je specifično uporabno če ima objekt veliko izbočenih delov (npr. Hladilna rebra), ki imajo močan rob in jih Canny zazna vendar niso uporabni za orisane konture. Slika 2.27 je primer zaznanih kontur, in označeni so določeni robovi, ter njihovo pozicijo v hierarhiji.

Slika 2.27: Primer hierarhije kontur [16]

Zeleno so napisani nivoji konture, oranžno pa zapovrstno število konture. Kontura 0 je na nivoju 0, naslednja kontura na istem nivoju je 7, prejšnje nima, ni otroška, kar pomeni da bi bila vrednost -1 in je starševska konturi 1. Vrednost hierarhije za konturo 0 bi torej bila:

(7, -1, 1, -1) [16].

2.4.3 Gaussovo meglenje

Meglenje slike je konvolucijska operacija, kar pomeni da združi ožja območja točk z namenom , da se doseže željene rezultate, v tem primeru zamegli sliko. To doseže tako da se po sliki premika matrika ki spreminja, vrednost slikovnih točk [17].

𝐵(𝑥, 𝑦) = 1

√2𝜋𝜎2𝑒

𝑥2+𝑦2

2𝜎2 (2.2) Enačba (2.2) je standardna enačba za Gaussovo porazdelitev v dveh dimenzijah, kjer sta 𝑥 in 𝑦 koordinati slikovne točke in je 𝜎 standardna deviacija. Narejena je 2D matrika, ki je liha

(45)

Teoretične osnove

21 v obeh dimenzijah. Določene so ji vrednosti glede na gaussovo porazdelitev, ki predstavljajo utež posamezne celice v filtru. Filter se nato premika po sliki in nastavi vrednost sredinske slikovne točke na preračunano vrednost filtra. Večja matrika poveča nivo meglenja saj se poveča doseg matrike in s tem na opazujočo slikovno točko vpliva še več okolišnjih točk. V sivinskem barvnem prostoru se postopek izvede samo enkrat medtem ko se v RGB barvnem prostoru to izvede za vsako barvo.

2.4.4 Razširjenje

Razširjenje (slika 2.28) je proces kjer se matrika premika po sliki, in preverja vrednost slikovnih točk. Če najde točko, ki ima dovolj visoko vrednost (ponavadi je to svetla barva) potem v dosegu matrike nastavi vse slikovne točke na visoko vrednost. Večja ko je matrika bolj odebeljena je črta[16]. Za delovanje navadnega razširjanja je potrebna sivinska slika, da je lahko prepoznavna visoka vrednost, ki mora biti ojačana.

Slika 2.28: Sivinska slika pred in po razširjanju [16]

(46)

22

(47)

Metodologija raziskave

23

3 Metodologija raziskave

Za implementacijo kode prepoznavanja oblike objektov na tekočem traku, je bilo potrebno najprej postaviti dva sistema za generacijo podatkov.

3.1 Realni sistem

Sistem je bil postavljen v laboratoriju LAKOS (slika 3.1), kjer se je nad tekoči trak v nosilec pritrdilo Intel D435 kamero, in se na njo povezalo z USB C konektorjem. Povezan računalnik je imel na Ubuntu OSu nameščen ROS ter IntelRealsense paket.

Slika 3.1: Realni sistem v laboratoriju

(48)

24

3.1.1 Obravnavani objekti

Za testne objekte se je izbralo nekaj različnih oblik, za izvajanje testov:

Pločevinka barve (slika 3.2 A) Mere: r=0.04m, h=0.07m

Razlog za izbiro: Preprosta valjasta oblika z nekaj podrobnosti, ki lahko motijo zaznavanje oblike.

Valjasti surovec (slika 3.2 B) Mere: r=0.03m, h=0.08

Razlog za izbiro: Preprosta valjasta oblika, vendar z nekoliko reflektivno površino, ki lahko povzroča težave pri zaznavanju višine.

Slika 3.2: Pločevinka barve (A) in valjasti surovec (B) Ulitek z rebri (slika 3.3 A)

Mere: l1,2=0.15m*0.2m, h=0.02m

Razlog za izbiro: Bolj kompleksna oblika s nekaj podrobnosti, ki lahko motijo zaznavanje oblike.

Ploščat ulitek (slika 3.3 B)

Mere: l1,2=0.15m*0.19m, h=0.01m

Razlog za izbiro: Malce bolj kompleksna oblika, ki je zelo nizka in zato lahko povzroča težave pri zaznavanju višine.

(49)

Metodologija raziskave

25 Slika 3.3: Ulitek z rebri (A) in ploščat ulitek (B)

Kartonasta škatla (slika 3.4) Mere: l1,2=0.08m*0.1m, h=0.08m

Razlog za izbiro: Preprosta štirikotna oblika, odličen testni objekt za prva preverjanja delovanja.

Slika 3.4: Kartonasta škatla

3.1.2 Kamera Intel D435

Za generacijo podatkov je bila uporabljena globinska kamera D435, ki je prikazana na sliki 3.5. Sestavljena je iz štirih glavnih komponent: 2 kameri, IR projektor ter RGB modul. S kamerami in IR modulom je kamera zmožna stereo vida, RGB modul pa omogoča zajem barve objekta in okolice. Za povezavo med ROSom in D435 kamero so uporabljene Intel Realsense2 knjižnice, ki so bile prirejene za ROS tako, da posnetke objavljajo na teme.

(50)

26

Slika 3.5: Kamera Intel D435 Preglednica 3.1: Karakteristike kamere Intel D435 [18]

Karakteristika

Uporaba: Notranja/Zunanja Maksimalni doseg:

pribljižno 10m. Natančnost odvisna od kalibracije,

ozadja in osvetlitve Slikovni senzor:

Globalni zaklop, 3µm*3 µm velikost slikovne točke

Globina

Globinska tehnologija: Active IR Stereo

Globinsko zorno polje (FOV):

86° x 57° (±3°)

Minimalna globinska razdalja:

0.105m

Globinska izhodna ločljivost:

Do 1280 x720 Globinska hitrost sličic:

Do 90 fps

RGB

Ločljivost RGB senzorja:

1920 x 1080 Zorno polje RGB

senzorja:

69.4° x 42.5° x 77° (±3°) Hitrost sličic RGB modula:

30 fps Glavne komponente

Kamera:

Intel RealSense Module D430 + RGB kamera

Programska plošča:

Intel RealSense Vision Processor D4

Fizične lastnosti

Standardna oblika: “Camera Peripheral”

Konektor: USB-C 3.1 Gen 1

Dolžina x Debelina x Višina:

90mm x 25mm x 25mm

Pritrditveni mehanizem:

-1 ¼-20 UNC navojna točka

- 2 M3 navojni točki

(51)

Metodologija raziskave

27

3.2 Simulacijski sistem

Za zagon programa za procesiranje in vseh povezanih tem in vozlišč je potrebno zagnati

“launch” datoteko z ukazom “roslaunch”. Ta datoteka kliče vse komponente projekta, ki morajo biti zagnani za delovanje.

Program 3.1: Launch datoteka simulacijskega dela

Ko se ta datoteko zažene, bo odprla “rqt_image_view” za prikaz tega kaj vidi kamera, Gazebo z definirano “world” datoteko, v ta svet bo postavljen tekoči trak, definirane bodo lokacije URDF datotek za program, ki jih bo postavljal in zagnani bodo programi za postavljanje objetkov in procesiranje slike. Pri datoteki za realni sistem je namesto Gazebo zagnan samo program “rqt_bag”, ki je uporabljen za predvajanje podatkov, ki so bili predčasno posneti.

3.2.1 Simulacija sodelovanja dveh SCARA robotov

Za osnovo je bil uporabljen paket “Two SCARA Collaboration” [19], ki je bil sestavljen za simulacijo premikanja valjev različnih barv po tekočem traku, kjer jih glede na to kakšne barve so pobere ena od dveh SCARA robotskih rok, prikazan pa je na sliki 3.6.

(52)

28

Slika 3.6: Simulacija sodelovanja dveh SCARA robotov

V Gazebo svet so postavljeni URDF objekti, ki predstavljajo tekoči trak, dva scara robota ter objekte valje, ki pa niso del sveta ob zagonu temveč jih eksterna koda postavi na začetek traku na nakljčno pozicijo širine z določeno hitrostjo. Tekoči trak ni nič drugega kot kvader, ki ima lastnost, da je njegov koeficient trenja 0, kar pomeni, da ker zračni upor ni simuliran se objekt premika po “traku” s konstantno hitrostjo.

3.2.2 Simulacijsko okolje

Na sliki 3.7 pa je prikazano simulacijsko okolje, ki je bilo urejeno kot testno okolje razvitega programja. Najprej so bili odstranjeni scara roboti, ter vsa koda povezana z njimi. Nato sta bili v datoteko “world” dodani simulirana usmerjena luč (usmerjena v tem primeru pomeni, da oddaja svetlobo samo v eno smer, in se snop svetlobe širi pod relativno ozkim kotom), ki je bila usmerjena direktno na tekoči trak in globinska kamera, ki je oddajala barvno in globinsko sliko na isto temo, kot realna kamera. Za pravilno delovanje je v tej datoteki potrebno dobro definirati objekt, ki naj bi bil vstavljen. Za luč je bila dovolj osnovna pozicija, lastnosti oddane svetlobe. Za kamero pa je poleg tega bilo potrebno opisati še resolucijo slike, teme na katere bo kamera oddajala, slike na sekundo in če je fiksna v svetu (če nebi bila potem bi ob zagonu padla na tekoči trak oziroma bi bilo nujno, da se doda še nosilec zanjo).

(53)

Metodologija raziskave

29 Slika 3.7: Urejena simulacija

Uredilo se je še kodo za generiranje objektov, tako da je lahko na trak postavila več kot dva različna objekta ter naredilo objekte različnih oblik za testiranje.

Program 3.2: URDF datoteka rdečega kvadra

Zgoraj je prikazana URDF datoteka za preprost kvader. Opisane so kolizijske, vizualne ter vztrajnostne lastnosti. Mere so podane v metrih.

(54)

30

3.3 Programski sistem

3.3.1 Potek procesiranja slike

Povezava v ROS sistemu

Slika 3.8: Povezava vozlišč za posnetek

Iz slike 3.8 je razvidno, da je program za procesiranje slike vozlišče, ki se naroči na dve temi; globinsko ter barvno sliko. Po obdelavi objavi posnetek, na temo “GUI”.

Slika 3.9: Povezava vozlišč za simulirani del naloge

Slika 3.9 prikazuje bolj kompleksen diagram, ker vsebuje še povezave za delovanje simulacije. Vozlišče “cylinder_blocks_spawner” oziroma ustvarjalec pošlje pot do mape v kateri so modeli objektov, jim da določene lastnosti za pravilno delovanje in jih postavi v vrsto na temo “current_cylinder_blocks” ali trenutni objekt. Nanj pa je naročen

“cylinder_blocks_poses_publisher” ali taki imenovani izdajalec pozicije ki objektom določi osnovno hitrost in jih ustvari v gazebo okolju. Gazebo po potrebi pošlje informacije o možnih napakah. Naprej je delovanje enako kot pri realnem sistemu.

(55)

Metodologija raziskave

31 Delovanje procesorja slike

Slika 3.10: Prvi del diagrama poteka procesiranja slike

Sliki 3.10 in 3.11 predstavljata diagram poteka programja za procesiranje slike. Ta deluje tako, da je slika pretvorjena v format s katerim lahko razpolagajo funkcije knjižnice OpenCV ko je ta prejeta. Podana je izbira med simulacijskim ter realnim sistemom, saj imata drugačne parametre (kamera je na različni višini, območje interesa ni enake velikosti, tekoči trak ni enako širok itd.). Odpre se GUV za spreminjanje določenih parametrov ob istem času pa je slika pretvorjena v sivinsko ter zamegljena z Gaussovim filtrom. Potem je uporabljen Cannyjev filter za iskanje robov, nato pa so ti ojačani z funkcijo za razširjevanje.

Slika 3.11: Drugi del diagrama poteka procesiranja slike

Klicana je metoda za iskanje kontur in izločene so vse odprte ali premajhne. Preostali kandidati so razdeljeni v dve kategoriji in očrtani s krogom ali kvadratom. Te liki predstavljajo gabaritne mere v dveh dimenzijah. Iz globinske slike je razbrana na sredini lika razdalja do kamere in tako preračunana njegova višina, ker je znana razdalja od tekočega traku do kamere. Lokacija objekta je izračunana iz njegove višine in videno lokacijo središčne točke na kameri. Vse gabarite ki niso višina, in lokacijo objekta še pretvori iz slikovnih točk v metre s pomočjo razmerja med širino tekočega traku in ločljivostjo kamere.

Na koncu je obdelan sivinski posnetek, na katerem se vidijo samo robovi in barvna slika z dorisanimi obrisi in napisanimi gabaritnimi merami.

(56)

32

3.3.2 Uporabniški vmesnik

Ko je program zagnan je podana izbira med simulacijo in resničnimi podatki, saj so določene konfiguracije drugačne, ko pride do urejanja slike.

ros::init(argc, argv, “image_converter”);

ROS_INFO(“Choose setting”);

cv::namedWindow(“Simulation or real”, CV_WINDOW_AUTOSIZE);

//GUV za izbiro videa while(setting==0){

createTrackbar(“1 – Sim | 2 – Real”, “Simulation or --- -. Real”, &setting, setting_max);

waitKey(0);

}

destroyWindow(“Simulation or Real”);

Program 3.3: GUV za izbiro vira posnetka

Prikaže se okno s parametri, ki vplivajo na zaznavanje objektov ter izbira barve obrisov in teksta za uvidevnost do uporabnika (slika 3.12).

Slika 3.12: GUV nastavljivih parametrov

-/P/S/U/V je parameter, ki spremeni vse ostale z vplivom na zaznavanje objektov tako, da zaznajo testne objekte iz vreče. Izbira nastavitve “-“ naredi ostale parametre nastavljive.

Threshold1, Threshold2, velikosti operatorjev (ang. kernel size) ter meje hierarhije in njihov vpliv so razloženi v poglavju 2.5 OpenCV.

Ploščina kontur (ang. contour area) je uporabljena za izločanje kontur, ki so premajhne da bi lahko bile iskan objekt. Tako je zmanjšana če ne celo izničena možnost prikaza artefaktov, ki nastanejo kot posledica različnih vplivov iz okolice.

(57)

Metodologija raziskave

33 Barve so parametri usmerjeni na izgled v uporabniškem vmesniku, za boljšo razvidnost na različnih objektih in površinah.

Če parametri niso nastavljeni pravilno, pride do napak kot so prikazane na sliki 3.13.

Slika 3.13: Nepravilne nastavitve in prikaz artefaktov

3.3.3 Procesiranje 2D slike

3.3.3.1 Zaznavanje kontur

Najprej je potrebno določiti območje interesa (ROI) in prilagoditi sliko tako, da zajema samo to polje. Razlika med zajeto celotno sliko ter območjem interesa je prikazana na sliki 3.14.

V simulaciji je bila kamera postavljena tako, da je ROI bila njena celotna slika, v realnem sistemu pa, je bilo potrebno sliko omejiti na tekoči trak.

Slika 3.14: Zajeta regija interesa (A) in celotna posneta slika (B)

(58)

34

Sliko je nato potrebno urediti na tak način, da bo zaznavanje robov kar se da konsistentno našlo tiste, ki so uporabni za zaznavanje objekta in nanšanje kontur na . To se naredi po korakih prikazanih na sliki 3.15:

Slika 3.15: Koraki urejanja slike za prepoznavanje kontur: Pretvorba v sivinski barvni prostor (A), meglenje (B), iskanje robov (C), odebeljevanje robov (D)

Najprej je barvna slika pretvorjena v sivinsko, nato je uporabljena funkcija “GaussianBlur”, ki sliko zamegli in se tako znebi šuma. Sledi zaznavanje robov z detektorjem, ki naredi nepopolno črto okoli objekta, zato pa je končni korak urejanja slike širjenje najdenih točk in s tem doseg polne konture, ki bo zaznana ko bo klicana funkcija “findContours” oziroma najdi konture, rezultat katere je prikazan na sliki 3.16.

Slika 3.16: Izrisana najdena kontura

3.3.3.2 Procesiranje najdenih kontur

Za vsako konturo je najden najmanjši orisan štirikotnik v obliki točk njegovih vogalov (slika 3.17). Te so nato uporabljene za izris štirikotnika, če originalna kontura objekta ni preveč ovalna, drugače pa so uporabljene za iskanje centra objekta, da se lahko nariše nanj krožnico.

(59)

Metodologija raziskave

35 Slika 3.17: Na konturo škatle (A) in pločevinke barve (B) narisana popisana oblika

3.3.4 Procesiranje 3D slike

3.3.4.1 Simulirana globinska kamera

Podatki za globino simulirane kamere so shranjeni v linearnem vektorju [20], zato deluje iskanje želene točke po naslednji formuli:

centerId = int(mc[i].x) + msg->width * int(mc[i].y);

h_object = depths[centerId];

Program 3.4: Branje oddaljenosti objekta v simulaciji

Kjer je “h_object” spremenljivka v katero se shrani razdalja, “CenterId” željena točka,

“msg->width” širinska ločljivost območja interesa, ter koordinati objekta “mc[i].x” in

“mc[i].y”. Meritev vrne oddaljenost od kamere do objekta v metrih.

3.3.4.2 Realna globinska kamera

Za interpretacijo podatkov iz realne kamere je potrebna pretvorba točk objekta v 16 bitno nepodpisano celo število (ang. unsigned 16 bit integer):

h_object=(0.001*cv_depth->image.at<u_int16_t>

(int(mc[i].x+roiX0, int(mc[i].y)+roiY0);

Program 3.5: Branje oddaljenosti objekta realne kamere

Točkam objekta je potrebno dodati še vrednost mej območja interesa, saj so podatki shranjeni za celotno sliko in ne samo samo območje. Vrne oddaljenost od kamere do objekta v milimetrih kar je še potrebno pretvoriti v metre.

3.3.5 Določanje mer in lokacije objektov

Mere in lokacija objekta so bile interpretirana iz razmerja med slikovnimi točkami ter širino tekočega traku. Pretvorba je preračunana glede na širino tekočega traku ter širinsko ločljivostjo kamere. Ker je tekoči trak v simulaciji širok 1m in je kamera nastavljena tako, da njena celotna ločljivost pokrije ravno to širino je ena točka 1m/720px ali približno 1.4mm

(60)

36

in 0.3m/340px ali 0.9mm za pravo kamero. Mere so tako za pravokotnik preračunane z dvema enačbama (3.1) in (3.2). Na sliki 3.18 je grafično prikazano, kako so izbrane mere za preračun gaberitnih mer štirikotnega obrisa.

𝑙1 = √(𝑥0− 𝑥1)2+ (𝑦0− 𝑦1)2∙ 𝑝𝑟𝑒𝑡𝑣𝑜𝑟𝑏𝑎 (3.1) 𝑙2 = √(𝑥1− 𝑥2)2+ (𝑦1− 𝑦2)2 ∙ 𝑝𝑟𝑒𝑡𝑣𝑜𝑟𝑏𝑎 (3.2)

Slika 3.18: Slikovni prikaz računanja mer orisanega štirikotnika

Za radij krožnice pa so preračunane po enačbi (3.3). Grafični prikaz branja mer pa se vidi na sliki 3.19.

𝑟 =√(𝑥0− 𝑥1)2+ (𝑦0− 𝑦1)2

2 ∙ 𝑝𝑟𝑒𝑡𝑣𝑜𝑟𝑏𝑎 (3.3)

Slika 3.19: Slikovni prikaz računanja mer orisanega kroga

Lokacija objekta ima dodaten korak, ki je pomemben za pravilnost rezultatov. Ker imajo objekti višino in jih kamera gleda od zgoraj, bo to zamaknilo vidno stranico glede na pravo lokacijo na traku. To težavo se je odpravilo po principu na sliki 3.20:

(61)

Metodologija raziskave

37 Slika 3.20: Slikovni prikaz reševanja problema višine objekta v eni osi

Višina kamere ℎ glede na ravnino oziroma tekoči trak je konstantna, višina ℎ𝑜𝑏𝑗 in razvidna razdalja objekta od je koordinatnega središča 𝑙0 pa sta razbrani iz globinske ter 2D slike.

Pravo oddaljenost objekta je tako izračunana s pomočjo izreka o podobnosti trikotnikov (3.4).

𝑙obj= 𝑙0− 𝑙dif= 𝑙0−𝑙0

ℎ ∙ ℎobj (3.4) Za ta potek, je bilo potrebno koordinatno središče prestaviti iz zgornjega levega kota slike naravnost pod kamero, torej na sredino območja interesa.

(62)

38

4 Rezultati in diskusija

Program je bil narejen za simulacijsko okolje, in nato urejen tako, da je lahko uporabljal še posnetek iz resničnega življenja. Rezultati so bili dokaj natančni, do težav pa pride z globinskim posnetkom, saj ima včasih zelo pomankljive informacije (slika 4.1).

Slika 4.1: Globinski posnetek kartonaste škatle

Na sliki se vidi da čeprav je ploskev relativno ravna so še vedno luknje v objektu, kar pomeni, da za industrijski sistem ni dovolj konsistentna.

4.1 Prepoznavanje oblik

Programska oprema prepozna oblike jih očrta glede na število kotov. To pomeni, da prepozna, ko je objekt zelo okrogel in ga očrta s krožnico in če ni potem uporabi kvadrasto mejo. Ta funkcionalnost dela zelo dobro v simulaciji in iz posnetka.

4.2 Gabaritne mere in pozicija objektov

2D oblike so izračunane z relativno natančnostjo problem pa se pojavi pri interpretaciji globine. Prva težava je bila že to da je vidna oddaljenost od kamere do tekočega traku 0.77m medtem ko je izmerjena razdalja 0.82m.

(63)

Rezultati in diskusija

39 Preglednica 4.1: Primerjava izmerjenih vrednosti gabaritnih mer z izračunanimi

Objekti Izmerjeni gabariti [m]

Izmerjena višina [m]

Izračunani gabariti [m]

Izračunana višina [m]

Pločevinka barve r = 0.04 hobj = 0.07 r=0.04m hobj = 0.08 Kartonasta škatla l1,2=0.1×0.08 hobj = 0.08 l1,2=0.11×0.08 hobj = 0.09 Ulitek z rebri l1,2=0.2×0.15 hobj = 0.02 l1,2=0.2×0.16 hobj = 0.72 Ploščat Ulitek l1,2=0.2×0.15 hobj = 0.01 l1,2=0.2×0.15 hobj = 0.72 Valjasti surovec r=0.03 hobj = 0.08 r=0.03 hobj = 0.72

Simulacija /

Rdeč kvader l1,2=0.15×0.15 hobj = 0.3 l1,2=0.18×0.18 hobj = 0.3 Modri valj r=0.05 hobj = 0.1 r=0.05 hobj = 0.1 Zeleni objekt l1,2=0.25×0.3 hobj = 0.05 l1,2=0.26×0.31 hobj = 0.05 Pri realnih objektih je prikaz višine zelo nekonsistenten vendar so na določenih objektih včasih bile vidne prave višinske vrednosti (slika 4.2). Objekta, ki sta občasno pravilno prebrala globino sta bila pločevinka barve ter kartonasta škatla

Slika 4.2: Pločevinka barve (A) in kartonasta škatla (B) na dveh lokacijah Vidi se, da je so globinske informacije včasih pravilne in včasih zelo napačne.

Drugi objekti pa niso nikoli imeli prepoznali pravilne višine (slika 4.3). Pri ulitkih je lahko težava že v tem da sta zelo nizka, vendar je v tem primeru težava nekje drugod saj je prebrana višina objekta nasprotno ekstremna, in je skoraj tako velika, kot je zaznana razdalja do tekočega traku.

Reference

POVEZANI DOKUMENTI

Na sliki 52 vidimo, da je po 1 oziroma 3 urah stimulacije s poli(I:C) in naknadni odstranitvi gojišča prišlo po 36 urah do učinkovitega imunskega odziva le v primeru

Na primer vzdol`na komponenta zaostalih napetosti pred popravilom v varu na sliki 5c je po velikosti enaka kot v reparaturnem varu po popravilu, vendar je napetost te~enja

Oddelek za tekstilne materiale in oblikovanje, Fakulteta za strojni- štvo, Univerza v Mariboru, Smetanova 17, 2000 Maribor/Department for Textile Materials and Design,

Madžarski jezik je po podatkih vprašanih zelo v ozadju, kljub dejstvu, da se na narodno mešanem območju v Prekmurju od zaposlenih v javnih institucijah zahteva zelo

V Porabju (brez selja Slovenska yes) so leta 1990 popisali 1.404 osebe s slovenskim maternim ikom, kar je 54 odstotkov vseh popisanih oseb s slovenskim maternim jezikom

Detekcijska shema je prikazana na Sliki 1., pri čemer ξ označuje razvrščevalnik, ki napoveduje izbrano obrazno značilnost (v našem primeru gre za binarno napoved

Pri razvoju velikih izdelkov je sodelovanje med konstruktorjema izdelka in orodja ter tehnologom še pomembnejše kot sicer.. V veliko pomoč jim je sodobna programska oprema, s

Evalvacija je pokazala, da vstavljanje manjka- jočih vrednosti s predlagano metodo 25 -FR-ME-* in uporabo matrične faktorizacije NG značilno izboljša priporočanje objektov v