54
Anders Rohde-Petersen, s062046 Rune Yding Brogaard, s062023 V ISION I INDUSTRIELLE SYSTEMER Bachelorprojekt, Forår, 2009

VISION I INDUSTRIELLE SYSTEMER

Embed Size (px)

Citation preview

Page 1: VISION I INDUSTRIELLE SYSTEMER

Anders Rohde-Petersen, s062046

Rune Yding Brogaard, s062023

VISION I INDUSTRIELLE SYSTEMER

Bachelorprojekt, Forår, 2009

Page 2: VISION I INDUSTRIELLE SYSTEMER
Page 3: VISION I INDUSTRIELLE SYSTEMER

Anders Rohde-Petersen, s062046

Rune Yding Brogaard, s062023

VISION I INDUSTRIELLE SYSTEMER

Bachelorprojekt, Forår, 2009

Page 4: VISION I INDUSTRIELLE SYSTEMER

VISION I INDUSTRIELLE SYSTEMER,

Rapporten er udarbejded af:

Anders Rohde-Petersen, s062046

Rune Yding Brogaard, s062023

Vejledere

Nils Andersen & Ole Ravn

DTU Elektro

Automation

Danmarks Tekniske Universitet

Elektrovej

Bygning 326

DK-2800 Kgs. Lyngby

Danmark

www.elektro.dtu.dk/forskning/au.aspx

Tel: (+45) 45 25 35 50

Fax: (+45) 45 88 12 95

E-mail: [email protected]

Udgivelsesdato: 26-06-2009

Klasse: 1 (offentlig)

Bemærkninger: Denne rapport er indleveret som led i opfyldelse

af kravene for opnåelse af graden Bachelor i

teknisk videnskab (BScE) på Danmarks Tekniske

Universitet. Rapporten repræsenterer 15 ECTS

point.

Rettigheder c©A. Rohde-Petersen, R. Brogaard, 2009

Page 5: VISION I INDUSTRIELLE SYSTEMER

Abstract

The report covers the development of a LabVIEW-based vision system for the

robot Easybot from Universal Robots.

The system consists of two parts. A calibration and a vision section. In the

calibration section a coordinat transformation between the camera and robot’s

coordinate system is described. In the vision section it is examined how objects

are recognized, and how their center-of-mass is determined. The coordinates

is sent to the robot using TCP/IP. The robot then collects the objects with an

electromagnet and move it to a specific position.

On the last page of this report a CD is attached. This CD contains a video

demonstration of the project.

I

Page 6: VISION I INDUSTRIELLE SYSTEMER

Resumé

Rapporten omhandler udviklingen af et LabView baseret vision-system til rob-

otarmen Easybot fra Universal Robots.

Systemet består af to dele, en kalibrerings- og en visiondel. I kalibrerings-

delen bliver en koordinattransformation mellem kameraets- og robottens ko-

ordinatsystem beskrevet, og i visiondelen gennemgås det, hvordan objekter

genkendes, samt hvordan deres massemidtpunkt bestemmes. Koordinatsættet

sendes via TCP/IP til robotten, som opsamler objektet med en elektromagnet,

og flytter det til en given position.

På den sidste side i rapporten er vedlagt en CD, som indeholder en videodemon-

stration af projektet.

II

Page 7: VISION I INDUSTRIELLE SYSTEMER

Indhold

Abstract I

Resumé II

1 Indledning 1

1.1 Baggrund . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2 Problemformulering . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.3 Metode og afgrænsning . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.4 Samarbejdspartnere . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.5 Læsevejledning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2 Teori 4

2.1 Om robotten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.2 Koordinat-transformation . . . . . . . . . . . . . . . . . . . . . . . 5

2.3 Billedanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.3.1 Filtrering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.3.2 Edge-detection . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.3.3 Threshold . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.3.4 Erosion & Dilatation . . . . . . . . . . . . . . . . . . . . . . 9

2.3.5 Navngivning . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.3.6 Massemidtpunkt af objekter . . . . . . . . . . . . . . . . . . 12

2.3.7 Corner detection . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.3.8 Klassificering af objekter . . . . . . . . . . . . . . . . . . . . 14

2.4 TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3 Implementering 16

3.1 Program opbygning . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.2 Kalibrering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.3 Koordinattransformation . . . . . . . . . . . . . . . . . . . . . . . . 19

3.4 Harris4Corners . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.5 ROI - Beskær billede . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.6 IndexObjects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.7 TCP/TP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3.8 Lysopsætning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

III

Page 8: VISION I INDUSTRIELLE SYSTEMER

INDHOLD

4 Test 31

4.1 ROI test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.2 Index Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.3 Harris Corner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

5 Konklusion 34

5.1 Diskussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345.2 Resultater . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345.3 Videre arbejde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

A Kamera og magnet beslag 37

B URscript 38

C Matlab kode 40

D CD 41

IV

Page 9: VISION I INDUSTRIELLE SYSTEMER

Figurer

1.1 UR industrirobot & NI Smart Camera . . . . . . . . . . . . . . . . 2

2.1 URarm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.2 Forsøgsopstilling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.3 Foldning i 2D domænet . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.4 Edge detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.5 Eksempel på threshold . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.6 Operatoren benyttet i eksemplerne . . . . . . . . . . . . . . . . . . 9

2.7 Eksempel på dilation . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.8 Eksempel på erosion . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.9 Fjernelse af pixelfejl ved closing . . . . . . . . . . . . . . . . . . . . 10

2.10 4–connectivity (venstre) mod 8–connectivity (højre) . . . . . . . . 11

2.11 Eksempel på labeling ved 4- og 8-connectivity . . . . . . . . . . . . 12

2.12 Filtermatrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.13 Eksempel på harris corner detection . . . . . . . . . . . . . . . . . 13

2.14 Harris Corner Detector . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.15 TCP/IP blokdiagram . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.1 Kommunkationen mellem kamera og robot . . . . . . . . . . . . . 16

3.2 Kameraets LabView diagram . . . . . . . . . . . . . . . . . . . . . 17

3.3 Koordinattransformation_subvi: papir -> robot . . . . . . . . . . . 19

3.4 Illustration af opsætning . . . . . . . . . . . . . . . . . . . . . . . . 19

3.5 Blokdiagram for koordinattransformation_subvi . . . . . . . . . . 21

3.6 Kamera koordinattransformation: kamera -> papir . . . . . . . . 21

3.7 Matrix med papirets dimentioner . . . . . . . . . . . . . . . . . . . 22

3.8 Blokdiagram for kamerakoordinat transformation . . . . . . . . . 22

3.9 Harris4corners . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.10 1. del - indledende behandling . . . . . . . . . . . . . . . . . . . . . 23

3.11 2. del, udførelse af Harris Corner Detection algoritmen . . . . . . 23

3.12 3. del, lokalisering af 4 unikker hjøerner . . . . . . . . . . . . . . . 24

3.13 Cut Image - ROI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.14 ROI blokdiagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.15 Beskæring af billede til Region of interest . . . . . . . . . . . . . . 25

3.16 LabView Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.17 Funktionen IndexObject i LabView . . . . . . . . . . . . . . . . . . 27

V

Page 10: VISION I INDUSTRIELLE SYSTEMER

FIGURER

3.18 IndexObject LabView Diagram . . . . . . . . . . . . . . . . . . . . 273.19 Eksempel på output fra funktionen IndexObject . . . . . . . . . . 283.19 Labview TCP/IP funktioner . . . . . . . . . . . . . . . . . . . . . . 293.20 Sammenligning af refleksion mellem sort skumgummimåtte og sort pap 30

4.1 Beskæring af billede . . . . . . . . . . . . . . . . . . . . . . . . . . 31

VI

Page 11: VISION I INDUSTRIELLE SYSTEMER

Tabeller

2.1 Klassificering af objekter . . . . . . . . . . . . . . . . . . . . . . . . 14

4.1 Indexobjects ved threshold 0.19 . . . . . . . . . . . . . . . . . . . . 324.2 Indexobjects ved threshold 0.26 . . . . . . . . . . . . . . . . . . . . 324.3 Indexobjects ved threshold 0.37 . . . . . . . . . . . . . . . . . . . . 324.4 Indexobjects ved threshold 0.55 . . . . . . . . . . . . . . . . . . . . 324.5 HarrisCorner resultater for varierende k . . . . . . . . . . . . . . 33

VII

Page 12: VISION I INDUSTRIELLE SYSTEMER

TABELLER

VIII

Page 13: VISION I INDUSTRIELLE SYSTEMER

Kapitel1Indledning

1.1 Baggrund

Forskellen på en robot og en maskine er, at robotten skal kunne tage nogle

beslutninger baseret på input fra en eller flere sensorer. En robot er derfor

væsentlig mere fleksibel end en maskine, især i industrisystemer hvor der bliv-

er udført flere forskellige produktioner på det samme samlebånd. En af de mest

avancerede sensorer, som kan benyttes på en robot, er et kamera. Et kamera

kan give en robot lige så mange informationer, som et menneske kan få ved at

holde sig for det ene øje.

1.2 Problemformulering

Visionbaserede robotsystemer er ofte et produkt af lang tids opsætning, op-

måling og konfiguration. I dette projekt ønskes et dynamisk visionsystem frem-

stillet, som hurtigt og nemt kan opsættes og konfigureres af uerfarne personer,

og udføre simple visionopgaver.

Med baggrund heri vil projektet besvare følgende:

• Hvordan opsættes kommunikationen mellem kamera og robot?

• Hvordan omregnes mellem kameraets, robottens og observationspladens

koordinatsystem?

• Hvorledes udføres en visionopgave, som finder antallet af objekter og

deres placering, samt hvilke midler kan gøre systemet mere stabilt over-

for ændrende omgivelser som lys?

1.3 Metode og afgrænsning

Til projektet anvendes Universal Robots industrirobot (figur 1.1, venstre). På

denne fastmonteres et National Instrument Smart Camera (figur 1.1, højre),

1

Page 14: VISION I INDUSTRIELLE SYSTEMER

Kapitel 1. Indledning

som er et industrielt kamera med indbygget DSP og PowerPC.

Figur 1.1: UR industrirobot & NI Smart Camera

Kameraet ønskes monteret på det yderste led af robotarmen (figur 2.2). På

denne måde kan kameraet monteres fra producentens side, og sikre at opsæt-

ningen vil være ens i alle systemer.

Projektet vil fokusere på at benytte robotten så lidt så muligt, da dens com-

puter allerede er hårdt belastet med real-time beregninger. Derfor benyttes de

scripting faciliteter som er tilgængelige i robotsystemet (URscript 2009) kun

til at forbinde til en TCP/IP server og herigennem modtage en liste med (x,y,z)-

koordinatpunkter fra kameraet.

1.4 Samarbejdspartnere

Projektet udføres for Institut for Automation på DTU Elektro i samarbejde med

Universal-robots (UR) og National Instruments (NI). De involverede kontakt-

personer hos de 2 virksomheder har været:

• NI – Christer Green Henriksen (Inside Sales Representative)

• NI – Lars Bang (Inside Sales Representative)

• UR – Kristian Kassow (COO)

• UR – Esben H. Østergaard (CTO)

• UR – Frederik Kvistgaard Ellehøj (Softwareudvikler)

2

Page 15: VISION I INDUSTRIELLE SYSTEMER

1.5 Læsevejledning

1.5 Læsevejledning

I teoriafsnittet beskrives, hvordan de benyttede funktioner til billedanalyse og

koordinattransformation fungerer.

Herefter gennemgås det i kapitlet implementering, hvordan det samlede pro-

gram er opbygget, hvorefter det udledes, hvordan de enkelte funktioner er ud-

ført på baggrund af den gennemgåede teori.

Sektionen test viser med udgangspunkt i 2 testcases, hvordan hver funktion

er blevet testet.

I afsnittet konklusion opridses de opnåede resultater, og deres relevans for nu

og fremtidige robotløsninger diskuteres, herefter sluttes der af med en beskriv-

else af, hvilke retninger der kan arbejdes videre i.

For det korte overblik kan baggrund, problemformulering, program opbygn-

ing og konklusion med fordel læses.

3

Page 16: VISION I INDUSTRIELLE SYSTEMER

Kapitel2Teori

2.1 Om robotten

I projektet er anvendt en robotarm af typen UR-6-85-5-A fra Universal Robots(figur

2.1. Armen er opbygget af aluminiums rør med 6 bevægelig led, som er benævnt

A:Base, B:Shoulder, C:Elbow samt D,E,F:Wrist 1,2,3. På wrist 3 er der mon-

teret en holder til kameraet1 samt en 24 volts elektromagnet med en løfte ka-

pacitet på 20 newton. Magneten aktiveres via robottens Digital port [D0].

Robotten bliver programmeret i et C lignende programmeringssprog kaldet

UR-script. UR-script indeholder de nødvendige funktioner for TCP/IP kommu-

nikation og lineære bevægelser. Lineære bevægelser vil sige, at magneten på

wrist 3 følger en ret linje mellem start og slut koordinaterne.

Figur 2.1: URarm

(a) (b)

Figur 2.2: Forsøgsopstilling

1Se Appendix A

4

Page 17: VISION I INDUSTRIELLE SYSTEMER

2.2 Koordinat-transformation

2.2 Koordinat-transformation

I systemer som består af flere elementer med hvert sit koordinatsystem, er det

ønskeligt at kunne regne i mellem disse. Der findes 2 metoder, enten en lineær

koordinattransformationsmatrix eller ved at løse et lineært ligningssystem ved

hjælp af least-square metoden.

Koordinat-transformationsmatrix Transformationen består af følgende trin:

1. Translation, en matrice som flytter koordinatsættet i forhold til et offset

(tx, ty)

T (tx, ty) =

1 0 −tx0 1 −ty0 0 1

(2.1)

2. Rotation, en matrice som roterer koordinatsættet om z aksen i forhold til

en vinkel Θ

Rz(Θ) =

cosΘ −sinΘ 0

sinΘ cosΘ 0

0 0 1

(2.2)

3. Skalering, en matrice som ændre skaleringen af x- og y-aksen

S(sx,sy) =

sx 0 0

0 sy 0

0 0 1

(2.3)

Den samlede transformationsmatrix, hvor x er det koordinatsæt der ønskes

omregnet til x’, fås som matrix-produktet:

x′ = S×R×T × x (2.4)

Ønskes der at gå den anden vej fra x′ til x, tages den inverse matrix af matrix-

produktet SRT .

x = [S×R×T ]−1 × x′ (2.5)

5

Page 18: VISION I INDUSTRIELLE SYSTEMER

Kapitel 2. Teori

Least-square Metoden kan benyttes, når en translationsmatrix ønskes bestemt

på baggrund af en kendt inputmatrix samt det tilhørende output.

Ligningssystemet opskrives, hvor x1...xn er input- og x′1...x′n er outputkoordi-

nater:

x1...

xn

=

1 x1′ y1

......

...

1 xN′ yN

a0

a1

a2

+

ε1...

εn

⇒ x = A ·

a0

a1

a2

+ ε (2.6)

y1...

yn

=

1 x1′ y1

......

...

1 xN′ yN

b0

b1

b2

+

η1...

ηn

⇒ y = A ·

b0

b1

b2

+η (2.7)

Løsningen kan herefter bestemmes som

a0

a1

a2

=

(

AT A)−1

AT · x (2.8)

b0

b1

b2

=

(

AT A)−1

AT · y (2.9)

2.3 Billedanalyse

2.3.1 Filtrering

Filtrering af et billede foregår ved en foldning i 2D domænet, som illustreret

på figur 2.3.

Ved en 3x3 kerne skal der benyttes 9 pixels fra inputbilledet til at regne 1 pixel

i output billedet. Pixelen i output billedet regnes som:

out(1,1) = a · in(0,0) +b · in(0,1) + · · ·+ i · in(2,2) (2.10)

Dette giver dog problemer når kanten af output billedet skal beregnes, da pix-

elværdierne uden for input billede ikke kendes. Der findes flere teknikker til at

6

Page 19: VISION I INDUSTRIELLE SYSTEMER

2.3 Billedanalyse

Figur 2.3: Foldning i 2D domænet

håndtere dette. Bl.a. Zero-padding, hvor alle pixels uden for inputbilledet an-

tages at være 0, eller even/odd-padding hvor man spejler hhv. billedets yderste

eller næstyderste kant for at “simulere” værdierne uden for billedet.

2.3.2 Edge-detection

Edge detection er en måde at finde kanter i et billede på. Operationen kan

sammenlignes med et highpass filter, da man kun ønsker at finde de steder i

billedet, hvor variationen er størst.

Måden man finder disse kanter på, er ved at udregne længden af gradientvek-

toren i et hvert punkt i billedet. For at finde x- og y-komposanten af gradi-

entvektoren, kan man benytte følgende matricer beskrevet ved sobel-operatoren:

Gx =

1 0 −1

2 0 −2

1 0 −1

Gy =

1 2 1

0 0 0

−1 −2 −1

(2.11)

Processen som er illustreret på figur 2.4 (Rodrigues 2008), fungerer ved at

hver matrix køres henover billedet. Herved dannes der 2 billeder, et gradient

billede i x-retningen og et gradient billede i y-retningen. Normalen og derved

det færdigbehandlede billede kan herefter findes ved: G =√

G2x +G2

y.

7

Page 20: VISION I INDUSTRIELLE SYSTEMER

Kapitel 2. Teori

Figur 2.4: Edge detection

2.3.3 Threshold

Thresholding benyttes til at lave et gråtone billede om til et binært billede ved

formlen:

vout =

{

1,hvis vin > Threshold

0, ellers

}

(2.12)

Et eksempel på threshold kan ses på figur 2.5.

(a) Oprindeligt billede (b) Thresholdet ved 0.35

Figur 2.5: Eksempel på threshold

8

Page 21: VISION I INDUSTRIELLE SYSTEMER

2.3 Billedanalyse

Fordelen ved threshold proceduren er, at billedet bliver nemmere at analy-

sere, man kan f.eks. nemt separere mørke objekter på en hvid baggrund eller

omvendt. Dog skal teknikken anvendes varsomt, hvis den benyttes i en opsæt-

ning, hvor lyset skifter, da skygger pludselig kan få stor betydning, og belyste

områder kan forsvinde.

2.3.4 Erosion & Dilatation

Efter et billede er blevet thresholdet, kan der sagtens være små områder, i det

som ønskes identificeret som et objekt, der bliver fejlfortolket som baggrund.

Dette ønskes korrigeret gennem billedanalyse, og til dette formål kan de mor-

fologiske operationer erosion og dialation benyttes.

Operationen udføres ved en given operator, i eksemplerne nedenfor er opera-

toren på figur 2.6 benyttet.

Figur 2.6: Operatoren benyttet i eksemplerne

Dilation Lægger X antal lag på de fundne objekter (figur 2.7)

(a) Orignal (b) Dilation

Figur 2.7: Eksempel på dilation

Erosion Skraber X antal lag af de fundne objekter (figur 2.8)

9

Page 22: VISION I INDUSTRIELLE SYSTEMER

Kapitel 2. Teori

(a) Original (b) Erosion

Figur 2.8: Eksempel på erosion

Kombineret Udføres en erosion efter en dilatation, svarer det til at trække

det fra som er lagt til, så objektets størrelse ikke ændrer sig. Men hvis

der i objektet før fandtes huller vil disse være blevet fjernet. Derfor kaldes

metoden for closing, og effekten er illustreret på figur 2.9.

(a) Original (b) Dilatation & erosion

Figur 2.9: Fjernelse af pixelfejl ved closing

Modsat vil en Erosion efterfulgt af en Dilatation skille objekter ad, som

det kan fornemmes ved det nederste objekt på figur 2.8b. Denne metode

kaldes derfor også opening.

10

Page 23: VISION I INDUSTRIELLE SYSTEMER

2.3 Billedanalyse

2.3.5 Navngivning

Efter det binære billede er blevet behandlet, ønskes det undersøgt hvor mange

objekter der er i billedet. Dette kan gøres ved en “connected component” anal-

yse, som kan udføres som enten 4–connectivity eller 8–connectivity. Valget af-

spejler om objekter, som kun er forbundet diagonalt, opfattes som 1 eller 2

objekter. Proceduren foregår på følgende måde (Carstensen 2002):

1. Vælg den passende kernematrix (figur 2.10)

Figur 2.10: 4–connectivity (venstre) mod 8–connectivity (højre)

2. Gennemløb billedet. f(x,y) defineres som det binære billede og l(x,y) er det

navngivne.

Hvis f(x,y) = 0 (baggrund) så sættes l(x,y) = 0

Hvis f(x,y) = 1 så afhænger l(x,y) af, hvor mange labels der findes i de

omkringliggende felter defineret af den valgte kernematrix

0 labels => l(x,y) tildeles et fortløbende nummer, som ikke er givet før

1 label => l(x,y) tildeles den samme label

flere end 1 label => l(x,y) tildeles en af dem, og der laves en ækvivalensliste,

hvor det noteres at de n antal labels hører til det samme objekt.

3. Gennemløb billedet igen og anvend ækvivalenslisten. Et eksempel på la-

beling kan ses på figur 2.11.

11

Page 24: VISION I INDUSTRIELLE SYSTEMER

Kapitel 2. Teori

Figur 2.11: Eksempel på labeling ved 4- og 8-connectivity

2.3.6 Massemidtpunkt af objekter

Når objekterne er fundet, ønskes deres massemidtpunkt (x,y) bestemt. For det

binære billede f (x,y), som er 1 ved objektet og 0 ellers, er massemidtpunktet

bestemt som:

x =∑row’s ∑col’s row · f (row,col)

∑row’s ∑col’s f (row,col)(2.13)

y =∑row’s ∑col’s col · f (row,col)

∑row’s ∑col’s f (row,col)(2.14)

2.3.7 Corner detection

Der kan findes hjørner i en afbilledet rektangel ved en "hit and miss-transfor-

mation. Ved at lave en foldning i 2D domænet med filteret i figur 2.12, bliver

der en pixel med værdien 1 i outputbilledet, for hvert område i inputbilledet

som er magen til filteret. Filteret kan derefter roteres 90 grader, og køres igen

for at finde den næste type hjørner. Denne proces gentages, indtil filteret har

været roteret 90-,180-, og 270 grader.

Figur 2.12: Filtermatrix

12

Page 25: VISION I INDUSTRIELLE SYSTEMER

2.3 Billedanalyse

Problemet ved denne metode er dog, hvis rektanglet er roteret en smule, eller

hjørner ikke er så skarpt defineret som i matricen, så bliver der ikke fundet

nogen hjørner.

Derfor tages metoden Harris Corner Detection i brug. Den bygger ligesom

Edge Detection på billedets gradientvektor, og definerer et hjørne som værende

et punkt, hvor gradientvektoren i både x og y retningen ændrer sig meget

(Aanæs 2008).

Figur 2.13: Eksempel på harris corner detection

I et hjørne er begge billedets komposanter høje mens ved kanten er kun 1 af

dem høje. Den matematiske formel for at beregne de gradientvektoren er bereg-

ningstung, da den indeholder en kvadratrod. Derfor opfandt han den tilnær-

mende metode: "Harris Corner Detection"givet ved flowchartet på figur 2.14.

Figur 2.14: Harris Corner Detector

Hvor dX angiver billedets gradient i X retningen og dY billedets gradient i Y

retningen. Boksen Smooth kan f.eks. opnås ved at køre et gauss filter henover

billedet. Efter R er bestemt køres en threshold, for kun at finde de værdier

som er større end en given konstant, og sidst køres en non-max suppresion

filtrering som betyder, at det undersøges, hvorvidt der findes pixels, som ligger

op af hinanden, og fjerner disse, så der kun findes 1 punkt i hvert hjørne.

13

Page 26: VISION I INDUSTRIELLE SYSTEMER

Kapitel 2. Teori

2.3.8 Klassificering af objekter

Mulighederne er mange for at klassificere objekter, og metoden som skal benyttes,

afhænger af hvilke objekter man ønsker at separere. I tabel 2.1 er listet et par

metoder.

Anvendelse: Metode: Eksempel

Finde cirkler meden given radius

Cirkulær Hough Trans-formation

Klassificere ob-jekter ud fraantal hjørnerog hjørnernesplacering

Harris corner detector

Adskillelse af rek-tangler og cirkel

1. Find objektetsmassemidtpunkt2. Find kanter ved edgedetection3. Find den korteste ogden længste afstand frakanten til massemidt-punktet.4. Jo tættere på 1forholdet mellem min ogmax er, jo mere lignerobjektet en cirkel.

Tabel 2.1: Klassificering af objekter

14

Page 27: VISION I INDUSTRIELLE SYSTEMER

2.4 TCP/IP

2.4 TCP/IP

TCP/IP (Transmission Control Protocol / Internet Protocol) er en kommunika-

tions protokol mellem 2 enheder på et netværk. TCP/IP har til formål at over-

føre data mellem disse, selvom der er koblet flere enheder på netværket.

IP protokollen holder styr på, hvem der sender til hvem. Dette gøres ved,

at hver enhed har en unik 12 cifret IP-adresse. Det er IP protokollens opgave

at finde en vej gennem netværket fra afsender til modtager, hvilket på store

netværk, som internettet, kan være en kompleks opgave.

TCP protokollen sørger for at dele data op i mindre bitkombinationer kaldet

pakker. TCP sender disse pakker ved at give IP protokollen data og en adresse.

TCP holder styr på om data er blevet sendt korrekt og sender dem igen, hvis

det ikke er tilfældet.

Hvis der er flere mulige ruter til en modtager, kan pakkerne komme frem i

en forkert rækkefølge, derfor nummererer TCP protokollen hver enkelt pakke

inden de sendes, så modtageren kan sammenkæde data korrekt. TCP pro-

tokollen hos modtageren vil vente, indtil den har modtaget alle pakkerne kor-

rekt. Ovenstående system er ret smart lavet, men som det ser ud nu, kan der

Figur 2.15: TCP/IP blokdiagram

kun afsendes en ting af gangen på netværket. Da man gerne vil have mulighed

for at have flere forskellige forbindelser til en computer, blev der indført porte.

En port er et nummer mellem 0 og 65535(InternetAssignedNumbersAuthority

2009), som bliver tildelt af TCP afsenderen. Når flere programmer på en com-

puter benytter sig af TCP/IP protokollen, vil hvert program benytte sin egen

port, og de kan dermed kommunikere samtidig.

En illustration af princippet kan ses på figur 2.15

15

Page 28: VISION I INDUSTRIELLE SYSTEMER

Kapitel3Implementering

3.1 Program opbygning

På figur 3.1 ses et blokdiagram der beskriver kommunikationen mellem kamer-

aet og robotten. Hvert bogstav- og tal-label under kameraets funktion henviser

til LabView diagrammet i figur 3.2.

Figur 3.1: Kommunkationen mellem kamera og robot

16

Page 29: VISION I INDUSTRIELLE SYSTEMER

3.1

Pro

gra

mo

pb

yg

nin

g

Figur 3.2: Kameraets LabView diagram

17

Page 30: VISION I INDUSTRIELLE SYSTEMER

Kapitel 3. Implementering

A Først oprettes en TCP/IP forbindelse mellem kameraet og robotten, hvor

kameraet er serveren, og robotten er klienten. Når forbindelsen er oprettet

anmoder robotten om at sende kalibreringskoordinaterne, dvs. yderkanterne

af opperationsområdet, ved at sende teksten "GET C"til kameraet.

B Kameraet sender dernæst "C 1"til robotten for at fortælle, at den er klar til

at modtage kalibreringskoordinaterne. Robotten bevæger sig nu rundt til de 3

hjørnepunkter af papiret,1 og gemmer koordinaterne i 3 variable.

C Når robotten har gemt koordinaterne til de 3 punkter, sendes de som:

X1,Y1,Z1,X2,Y2,X3,Y3. Når kalibreringen er udført, bevæger robotten sig til

startpositionen, som er den position, hvor kameraet tager et billede af objek-

terne på den sorte overflade.

1 Robotten anmoder serveren om variablen S ved at sende "GET S".

2 Kameraet svarer tilbage ved at sende antallet af objekter på papiret, som f.

eks kunne være: "S 4".

3,4,5 Hvis antallet af objekter er større end 0, anmoder robotten om koordi-

naterne til et objekt ved at sende "GET X", GET Y", "GET Z". Robotten bevæger

sig nu hen til objektet, og samler det op ved at aktivere elektromagneten.

Derefter bevæger den sig til afleveringspositionen, og slipper objektet ved at

deaktivere magneten igen.

Når proceduren for at finde og opsamle et objekt er afsluttet bevæger robotten

sig til startpositionen, og proceduren 1-5 starter forfra.

3.2 Kalibrering

Kalibreringen af systemet foregår ved at brugeren flytter wrist3, hvor mag-

neten udgør centrum, ned til 3 hjørnepunkter af papiret. Robotkoordinaterne

til hjørnepunkterne sendes herefter til kameraet, der ved hjælp af LabView

1se kapitel 3.2 for nærmere beskrivelse

18

Page 31: VISION I INDUSTRIELLE SYSTEMER

3.3 Koordinattransformation

funktionen Koordinattransformation og kameraets eget koordinatsystem, kali-

brer systemet, således at når kameraet ser et objekt på en given pixel-position,

kan kameraet sende objektets koordinat til robotten.

3.3 Koordinattransformation

Papir->Robot Funktionen koordinattransformation_subvi (figur 3.3), laver

papir koordinater om til robotkoordinater.

Figur 3.3: Koordinattransformation_subvi: papir -> robot

Robottens base bestemmes ud fra 3 kalibreringspunkter (P1,P2,P3) givet ved

(X1,Y1), (X2,Y2) og (X3,Y3). Herefter kan funktionen omregne fra papir koor-

dinater f.eks. (100mm, 100mm) til robotkoordinater (X i robot, Y i robot) eller

den anden vej.

Til dette benyttes metoden beskrevet i teoriafsnittet under 2.2. Der skal der-

for ud fra de 3 kalibreringspunkter (P1,P2,P3) på figur 3.4, findes 3 matricer:

S (Skalering), R (Rotation), T (Translation).

Figur 3.4: Illustration af opsætning

Første kalibreringspunkt P1 (X1,Y1) ønskes at være nul punkt for papiret.

19

Page 32: VISION I INDUSTRIELLE SYSTEMER

Kapitel 3. Implementering

Derfor opskrives translationen som:

T =

1 0 −X1

0 1 −Y 1

0 1 1

(3.1)

Herefter skal koordinatsystemet roteres efter vinklen defineret mellem P1 og

P3. Den vinkel v der skal roteres med udregnes som

v = tan−1(

Y 1−Y 3X1−X3

)

(3.2)

Herefter kan rotationen opskrives som:

R =

cos(v) −sin(v) 0

sin(v) cos(v) 0

0 0 1

(3.3)

Sidst skal der opskrives en skalering. Denne er umiddelbart ikke nødvendig,

hvis kalibreringspladen holdes på samme side af armen som i eksemplet. Men

da systemet ønskes så dynamisk som muligt opskrives en skalering således, at

det er muligt at flytte kalibreringspladen til den anden side.

S =

sx 0 0

0 sy 0

0 0 1

(3.4)

S =

x2−x1|x2−x1|

0 0

0 y2−y1|y2−y1|

0

0 0 1

(3.5)

Herefter udregnes robottens X og Y koordinat ved formlen

Robot = (S ·R ·T )−1 ·Papir (3.6)

Den samlede implementering kan herefter beskrives ved blokdiagrammet på

figur 3.5

20

Page 33: VISION I INDUSTRIELLE SYSTEMER

3.3 Koordinattransformation

Figur 3.5: Blokdiagram for koordinattransformation_subvi

Kamera->Papir Funktionen kameraWorldTrans (figur 3.6) kan fortælle, hvor

observerede pixels i kameraet befinder sig på papiret. Til dette benyttes pa-

pirets hjørnekoordinater (Fra Harrish4Corners) som kalibreringspunkter.

Figur 3.6: Kamera koordinattransformation: kamera -> papir

Da koordinat transformationen mellem kameraet og papiret er væsentlig

mere avanceret, bliver vi nødt til at løse ligningssystemet nævnt i teori afs-

nittet 2.2. Som beskrevet er løsningen til ligningssystemet givet ved

PapirOUT Koordinater =(CornerArrayT ·CornerArray)(−1) ·CornerArrayT ·Papiretsdimensioner ·Kamerakoordinater

(3.7)

Arrayet med hjørner (CornerArray) kommer fra Harrish4Corners. Denne funk-

tion returnerer 4 hjørner sorteret efter deres intensitet. Derfor er der først nødt

til at blive gennemført en sortering som sørger for at første element er det øver-

ste venstre hjørne, næste element er det øverste højre hjørne osv.

21

Page 34: VISION I INDUSTRIELLE SYSTEMER

Kapitel 3. Implementering

Dette kan så holdes op imod en matrice med de punkter hjørnerne svarer til

i papirets koordinatsystem, givet ved 3.7.

Figur 3.7: Matrix med papirets dimentioner

Den samlede implementering kan herefter beskrives ved blokdiagrammet

(figur 3.8).

Figur 3.8: Blokdiagram for kamerakoordinat transformation

3.4 Harris4Corners

Funktionen Harris4Corners (figur 3.9) tager 1 billede og en threshold værdi

som input, og returnerer de 4 hjørner, som har den højeste intensitet.

Figur 3.9: Harris4corners

Første del af Corner Detectoren (figur 3.10) laver billedet binært ved en thresh-

old, hvorefter der ved brug af de morfologiske operationer dilation og erosion

fjernes små pixelfejl fra billedet. Herefter køres et lowpass filter henover billedet,

for at undgå at små variationer i kanten kan blive opfattet som hjørner.

22

Page 35: VISION I INDUSTRIELLE SYSTEMER

3.4 Harris4Corners

Figur 3.10: 1. del - indledende behandling

Herefter udføres Harris Corner Detection algoritmen (figur 3.11) nævnt i

kapitel 2.3.7.

f x2 = gauss(dX2) (3.8)

f y2 = gauss(dY 2) (3.9)

f xy = gauss(dX ·dY ) (3.10)

R = ( f x2 · f y2− ( f xy)2)− k · ( f x2+dy2) · ( f x2+dy2) (3.11)

Konstanten K, blev ved test bestemt til k=1/25 (kapitel 4.3)

Figur 3.11: 2. del, udførelse af Harris Corner Detection algoritmen

Herefter er outputtet et billede, hvor pixelens intensitet angiver, hvor meget

det ligner et hjørne. Næste step er at finde de 4 pixels med højest intensitet, og

sikre at de ligger i en passende afstand fra et af de tidligere bestemte hjørner.

Første skridt er at lave billedet om til et array. Herefter gennemløbes en

løkke, indtil der er fundet 4 hjørner. Denne løkke gør følgende:

23

Page 36: VISION I INDUSTRIELLE SYSTEMER

Kapitel 3. Implementering

1. Find pixelen med den højeste intensitet og gem dennes (row,col)-værdi i

et cluster

(a) Hvis der ikke tidligere er gemt nogle hjørner i outputarrayet, gemmes

denne pixel i arrayet

(b) Ellers undersøges det om afstanden mellem den fundne pixel, og alle

de hjørnepunkter gemt i outputarrayet er større end 20.

i. Hvis den er det, gemmes pixelens koordinater

2. Det undersøges, om der er fundet 4 hjørner, hvis der er det returneres

arrayet, ellers gentages processen fra trin 1.

Figur 3.12: 3. del, lokalisering af 4 unikker hjøerner

3.5 ROI - Beskær billede

Boksen på figur 3.13, Cut Image - ROI, beskærer ved hjælp af koordinaterne

fra Harris4corner billedet fra kameraet, så kun den sorte kalibreringsplade

indgår i billedet. Som output gives et billede, samt et koordinatsæt for hvor

langt fra (0,0) billedet er beskåret (X1,Y1 på figur 3.14).

Figur 3.13: Cut Image - ROI

24

Page 37: VISION I INDUSTRIELLE SYSTEMER

3.5 ROI - Beskær billede

På figur 3.14 er illustreret hvordan Cut Image - ROI fungere. Labview dia-

grammet kan ses på figur 3.16. De fire koordinatsæt fra Harris4corner splittes

op i en liste af fire x-koordinater og en liste af fire y-koordinater. De to lister

sorteres, så de mindste tal står øverst i listen2.

Figur 3.14: ROI blokdiagram

Hvis den sorte overflade er drejet i forhold til kameraet, er man interesseret i

at få klippet et område ud, som kun indeholder sort (figur 3.15). Derfor udtages

kun de to midterste tal i de sorterede X,Y lister, hvorved 2 nye koordinatsæt

dannes.

Figur 3.15: Beskæring af billede til Region of interest

Billedet konverteres til et array af punkter, og de to koordinatsæt anvendes

til at udtage et subarray med de to koordinatsæt som grænser. Dette array

omdannes herefter igen til et billede, og gives som output i boksen Cut Image

- ROI. Billede består nu kun af den sorte plade, og de objekter der eventuelt

måtte befinde sig på overfladen.

2Se figur 4.1 på side 31 for et eksempel med reelle værdier

25

Page 38: VISION I INDUSTRIELLE SYSTEMER

Kapitel 3. Implementering

Figur 3.16: LabView Diagram

26

Page 39: VISION I INDUSTRIELLE SYSTEMER

3.6 IndexObjects

3.6 IndexObjects

IndexObjects funktionen (figur 3.17) finder antallet af objekter i et edge-detected

billede (Image Src), og angiver koordinatsættet til massemidtpunktet samt

arealet af hvert objekt i et array kaldt Particle Measurements. Funktionen

giver desuden et outputbillede (Image Out), der kunne se ud som på figur 3.19.

Hver farve angiver et objekt, og nummeringen starter fra toppen af billedet3.

Figur 3.17: Funktionen IndexObject i LabView

Inputbilledet bliver udsat for morfologien dialate4 og dernæst en erodering, så

eventuelle huller i linjerne rundt om objekterne bliver fjernet. Billedet består

nu af forskellige linjer, der hver især indkapsler et objekt. Indkapslinges ud-

fyldes ved hjælp af LabView funktionen FillHole. Dette gøres ved, at alle pix-

elvædier omkredeset af linjestykkerne sættes til 1.

Figur 3.18: IndexObject LabView Diagram

Da der kan være støj på billedet, i form af små objekter fra snavs og pletter

på den sorte overflade, fjernes små objekter ved at erodere billedet 3 gange og

dernæst dialate 3 gange igen. På denne måde får man et billede ud, der kun

består af store objekter.

3Rød=1, Grøn=2, Blå=3, Gul=44Se afsnit 2.3.4 for yderlige beskrivelse af morfologifunktionen.

27

Page 40: VISION I INDUSTRIELLE SYSTEMER

Kapitel 3. Implementering

Som en sidste filtrering af billedet fjernes alle objekter der støder op til kan-

ten af billedet. Dette kunne f.eks være et blankt beslag, der holder den sorte

overflade fast, og som kameraet dermed ser som et objekt.

Når ovenstående billedbehandling er udført, indekseres objekterne ved at

lave en connectet-component analyse (kapitel 2.3.5). Et nyt billede som figur

3.19 vil blive produceret bestående af værdierne 1 til n, hvor n angiver antallet

af objekter.

Til sidst bestemmer LabView funktionen, Particle Analysis, massemidtpunk-

tet og arealet af hvert objekt.

Figur 3.19: Eksempel på output fra funktionen IndexObject

28

Page 41: VISION I INDUSTRIELLE SYSTEMER

3.7 TCP/TP

3.7 TCP/TP

Kommunikationen mellem robotten og kameraet består af tekststrenge. Når

robotten skal bruge værdien på en variabel X, sender robotten "GET X"til kam-

eraet. Kameraet svarer "X 12000", hvilket vil sige, at robottens variabel X får

værdien 12000. Processen kan ligeledes forløbe modsat, så kameraet kan hente

data fra robotten.

Denne kommunikation mellem kameraet og robotten foregår via LabViews

indbyggede TCP/IP-funktioner, som kan ses i figur 3.19.

(a) TCP Listen (b) TCP Read

(c) TCP Write (d) TCP Close Connection

Figur 3.19: Labview TCP/IP funktioner

[TCP listen] venter indtil robotten (client) opretter forbindelse til kameraet

(server) på den specificerede port. Når robotten har oprettet forbindelse til

kameraet, læser [TCP Read] de data robotten sender.

[TCP Read] anvender indputtene mode, connection ID, bytes to read og time-

out. Mode angiver hvorledes [TCP Read] skal håndtere de andre input. Connec-

tion ID er forbindelses identifikationer, IP-adresse og port. Det er nødvendigt

at videreføre denne, da svaret på "GET X"skal sendes tilbage ad samme vej.

Bytes to read angiver antallet af bytes der læses, før funktionen betragtes som

udført. Da pakker kan blive tabt i netværket, er der ydermere angivet en time-

out, der angiver hvor lang tid der ventes inden funktionen går videre, hvis der

er modtaget færre bytes end angivet.

I projektet er anvendt metoden immediate. Denne metode venter timeout

tiden, medmindre der er begyndt at komme TCP data ind. Funktionen re-

29

Page 42: VISION I INDUSTRIELLE SYSTEMER

Kapitel 3. Implementering

turnerer så den data der er i pakken, så længe den er mindre en Bytes to

read.

Når programmet i kameraet stoppes lukkes TCP forbindelsen til robotten ved

hjælp af [TCP close].

3.8 Lysopsætning

Lysopsætningen til kameraet er relativ fleksibel, idet det er muligt at styre

billedbehandlings threshold. For at opnå en stabil lysopsætning benyttes en

60w pære som lyskilde. Pæren er fastmonteret et stykke væk fra underlaget og

lyser næsten lodret ned på objekterne, så kun mindre skygger opstår.

Objekterne er placeret på en matsort skumgummimåtte så refleksioner fra

overfladen undgås. På figur 3.20 sammenlignes henholdsvis et sort stykke pap

og en sort skumgummimåtte med samme lysopsætning og kamera indstill-

inger. Som det fremgår af figur 3.20b, reflekterer pappet lyset væsentligt mere

end den sorte gummimåtte, selvom begge materialer af øjet anses for sort.

(a) Sort skumgummimåtte (b) Sort pap

Figur 3.20: Sammenligning af refleksion mellem sort skumgummimåtte og sortpap

30

Page 43: VISION I INDUSTRIELLE SYSTEMER

Kapitel4Test

Efter hver funktion er blevet udviklet, er de testet med statiske billeder eller

faste konstanter. Efter det er faststlået, at de virker, testes det for, om de er

stabile nok til at klare de små afvigelser, som vil forekomme når billederne

kommer i real-time fra kameraet. Et eksempel på en statisk test kan ses i

kapitel 4.1, og et eksempel på en tolerance test kan ses i kapitel 4.2.

4.1 ROI test

ROI-funktionens opgave er at beskære et billede. Billedet til venstre på figur

4.1 og et array gives som input til funktionen. Outputbilledet kan ses til højre

på figuren, hvor Xcutoff og Ycutoff henholdsvis er 17 og 18.

Figur 4.1: Beskæring af billede

4.2 Index Objects

Inputbilledet til funktionen IndexObjects skal være et thresholdet og edge de-

tected billede. IndexObjects er testet med forskellige thresholds på original-

billedet, for at bestemme hvor følsom funktionen er for støj. I tabel 4.1 til 4.4

fremgår påvirkningerne af henholdsvis funktionens inputbillede, outputbillede

og bestemmelse af massemidtpunkt for objekterne.

Det ses af tabel 4.1 at der ved en lav threshold opstår meget støj på billedet,

men at det ikke har nævneværdigt påvirkning på outputbilledet og dermed

31

Page 44: VISION I INDUSTRIELLE SYSTEMER

Kapitel 4. Test

massemidtpunktet for objekterne, i forhold til de optimale forhold i tabel 4.2.

Afvigelsen af henholdsvis X og Y koordinaten for de fire objekter er beregnet

til −0,22% og 0,18%, hvilket antages at være en ubetydelig afvigelse.

Ved en forøgelse af thresholdgrænsen fjernes støjen, men nogle af objekterne

risikerer at blive fjernet fra billedet. I tabel 4.3 ses det på inputbilledet, at

de runde møtrikker ikke længere fremstår tydeligt og kanterne er ligeledes

blevet utydeligere. Afvigelsen af massemidtpunktets X- og Y-koordinat fra den

optimale threshold i tabel 4.2 er henholdsvis 0.13% og −0.04%.

Objekt X Y Areal

1 160,04 78,65 30132 338,28 167,13 36773 161,70 213,47 36334 322,54 306,71 3166

Tabel 4.1: Indexobjects ved threshold 0.19

Objekt X Y Areal

1 160,00 78,54 29262 337,67 168,19 34113 161,54 213,47 35654 321,22 307,18 2931

Tabel 4.2: Indexobjects ved threshold 0.26

Objekt X Y Areal

1 159,60 78,90 27702 337,34 168,48 33023 161,21 213,59 34824 320,98 306,71 2645

Tabel 4.3: Indexobjects ved threshold 0.37

Objekt X Y Areal

1 181,98 70,66 1452 142,42 89,41 5053 337,36 168,59 31914 160,18 214,23 32155 340,86 293,66 125

Tabel 4.4: Indexobjects ved threshold 0.55

32

Page 45: VISION I INDUSTRIELLE SYSTEMER

4.3 Harris Corner

4.3 Harris Corner

Det ønskes ved test undersøgt, hvilken konstant k, der giver det bedste resul-

tat for Harris Corner Detectoren. Til dette formål blev der udviklet et matlab

program, som kan ses i appendix C.

Resultatet for varierende k kan ses i tabel 4.5.

K Resultat billede

> 1/10 Der er meget lille differentier-ing mellem billedets højeste oglaveste værdi, derfor kan der ikkefindes nogle hjørner

N/A

1/25

Der findes kun 4 hjørner, ogforskellen mellem hjørnepunkterog resten af kanterne gør detmuligt at skelne imellem dem.

1/40

Forskellen mellem hjørnepunkterog steder i billedet hvor kantenkan have et skarpt knæk er lille,og det er derfor svært at sortereefter, hvad der er kant, og hvadder er hjørner

Tabel 4.5: HarrisCorner resultater for varierende k

33

Page 46: VISION I INDUSTRIELLE SYSTEMER

Kapitel5Konklusion

5.1 Diskussion

De fleste industrirobotter fungerer i dag ved at samle objekter op fra præde-

finerede positioner. Så visionbaserede opsamlere, der kan samle objekter op,

som ikke ligger i snorlige rækker, er ret nyt. Dette er årsagen til, at da det

danske firma Scape Technologies i 2008 præsenterede deres visionbaserede

bin-picker, vandt den Ingeniørens Produktpris, og fik i 2009 et tilskud fra

Højteknologifonden på 12,6mio. kr.

Men ud over visionmodulet har kalibreringsdelen også stor betydning. Hvis

man ønsker at producere robotten i store mængder, er det en nødvendig forud-

sætning at kunderne selv kan opsætte systemet:

»Kravet til at sælge i stor skala er, at man laver en maskine, som ikke kræver

tilretning. Det vil give os mulighed for at indgå på et fuldstændigt udyrket ver-

densmarked«, siger Rune Larsen fra Scape Technologies. (Holt 2009)

Dette bekræfter at både kalibrerings- og visiondelen af vores projektet bel-

yser nogle af de emner, som har stor relevans for nu- og fremtidige robotløs-

ninger. Den fleksibilitet som et visionsystem giver, gør at der nemt kan skiftes

mellem flere forskellige produktioner på et samlebånd, hvilket kan minimere

omkostningerne.

5.2 Resultater

Det er lykkedes at lave et visionmodul til robotarmen fra Universal Robots, der

er nemt at sætte op, og som kan udføre simple visionopgaver.

Ved hjælp af robottens scriptingfaciliteter URScript, blev der oprettet en TCP/IP

forbindelse mellem robotten og kameraet. Kameraet havde det overordnede

ansvar for processen, og sendte de koordinater til robotten, som den skulle fly-

tte sig hen til.

Robottens koordinatsystem blev kalibreret ved at køre magneten ned til 3

34

Page 47: VISION I INDUSTRIELLE SYSTEMER

5.3 Videre arbejde

af hjørnerne på kalibreringspladen. Kameraet blev kalibreret ved at sammen-

holde kalibreringspladens størrelse, og pixelværdierne for de 4 hjørner som

blev fundet ved hjælp af en Harris Corner Detector.

Slutteligt blev der udført en visiondel, som fandt antallet af objekter på pladen

og deres massemidtpunkt. Massemidtpunkterne blev ved hjælp af koorinat-

transformationerne fra kalibreringen omskrevet til robotkoordinater og sendt

til robotten, som så opsamlede objekterne.

5.3 Videre arbejde

Produktet har opnået de krav, som er sat i forbindelse med opgaven, men der

findes 2 retninger, der kan arbejdes videre i.

1. Kalibreringsproceduren

I stedet for at kalibreringsproceduren foregår ved, at brugeren med robot-

ten markerer kalibreringspladens hjørnepunkter, kan der opstilles en al-

goritme som ved at ændre robottens placering i x og y retningen noterer,

hvor meget hjørnernes placering flytter sig. Ud fra kameraets placering i

z aksen og linsens geometri, kan punkternes placering herefter udregnes.

Dette vil gøre kalibreringen endnu nemmere, da arbejdet for brugeren

bliver mindsket.

2. Billedbehandlingen

Systemet kunne videreudvikles således, at man ved at lægge et objekt

på kalibreringspladen kunne aflæse objektets features, f.eks. ved brug

af Harris Corner Detectoren. Herefter kunne der opsamles objekter med

tilsvarende features.

Endvidere kunne der kigges på en histogram tilpasnings algoritme, således

at en brugerstyret threshold kunne undgås.

35

Page 48: VISION I INDUSTRIELLE SYSTEMER

Litteratur

Aanæs, H. (2008), Image Matching, http://www2.imm.dtu.dk/j̃mc/02501/ lec-

tures/02501_CorrLec.pdf.

Carstensen, J. M. (2002), Image analysis, vision and computer graphics.

Holt, J. R. (2009), Millioner til prisvindende, dansk robot,

http://ing.dk/artikel/98987-millioner-til-prisvindende-dansk-robot.

InternetAssignedNumbersAuthority (2009), Port Numbers,

http://www.iana.org/assignments/port-numbers.

Rodrigues, J. (2008), 02154 - Design Project Edge Detector,

https://www.campusnet.dtu.dk/cnnet/filesharing/SADownload.aspx?

ElementId=286135&FolderId=379417&FileId=1827654.

URscript, U. R. (2009), UR-script, https://www.campusnet.dtu.dk/cnnet/filesharing/

SADownload.aspx?ElementId=298965&FolderID=439776&FileId=2151126.

36

Page 49: VISION I INDUSTRIELLE SYSTEMER

KapitelAKamera og magnet beslag

37

Page 50: VISION I INDUSTRIELLE SYSTEMER

KapitelBURscript

set_payload(0.5)set_gravity([0.0, 0.0, 9.82])while True:

server = "192.38.66.239"port = 30035connected = scape_comm_open(server, port)calibrate = 0movel(Waypoint_5, a=1.2, v=0.25)if connected==True:

textmsg("Connected to camera")while calibrate==0:

calibrate = scape_get_var("C")endif calibrate==True:

textmsg("Calibrating system. Please Wait...")movel(Waypoint_0, a=1.2, v=0.25)pose1 = get_forward_kin()movel(pose1, a=1.2, v=0.25)pose2 = get_forward_kin()movel(Waypoint_2, a=1.2, v=0.25)pose3 = get_forward_kin()scape_set_var("X", pose1[0] * 10000)sleep(0.4)scape_set_var("Y", pose1[1] * 10000)sleep(0.4)scape_set_var("Z", pose1[2] * 10000)sleep(0.4)scape_set_var("X", pose2[0] * 10000)sleep(0.4)scape_set_var("Y", pose2[1] * 10000)sleep(0.4)scape_set_var("X", pose3[0] * 10000)sleep(0.4)scape_set_var("Y", pose3[1] * 10000)sleep(0.4)pic_pos = pose_add(pose1, pose_sub(pose2,pose1))start = 1textmsg("Indsæt objekter indenfor den sorte overflad")

endwhile True:

38

Page 51: VISION I INDUSTRIELLE SYSTEMER

movel(Waypoint_5, a=1.2, v=0.25)textmsg("Looking for objects on surface")sleep(1.0)start = scape_get_var("S")if start!=0:

X = scape_get_var("X")/100000.0sleep(0.5)Y = scape_get_var("Y")/100000.0sleep(0.5)Z = scape_get_var("Z")/100000.0textmsg("start == 1")pose = p[X,Y,Z,3.15,0,0]movel(pose,1.2,0.3,0,0)textmsg("PickUp item...")digital_out[0] = Truesleep(1.0)movel(Waypoint_3, a=1.2, v=0.25)textmsg("Drop Item...")digital_out[0] = False

endend

else:textmsg("Can not connect to camera")

endhalt

end

39

Page 52: VISION I INDUSTRIELLE SYSTEMER

KapitelCMatlab kode

c lear a l l ; c l c ;ny = imread ( ’ c :\ papir\udenpapir . png ’ ) ;f igure ( ) ; imshow ( ny ) ;treshold = 0 .33 ;ny = im2bw( ny , treshold ) ;image = double ( ny ) ;thresh = 0 . 8 ;fx = [1 0 −1;1 0 −1;1 0 −1];fy = fx ’ ;dx = conv2 ( image , fx , ’ valid ’ ) ;dy = conv2 ( image , fy , ’ valid ’ ) ;gauss = f s p e c i a l ( ’ gaussian ’ ) ;dxy = conv2 ( dx .∗dy , gauss , ’ same ’ ) ;f igure ( ) ; imshow ( dxy ) ;dx2 = conv2 ( dx .∗dx , gauss , ’ same ’ ) ;f igure ( ) ; imshow ( dx2 ) ;dy2 = conv2 ( dy .∗dy , gauss , ’ same ’ ) ;f igure ( ) ; imshow ( dy2 ) ;him = ( dx2 .∗dy2−dxy .∗ dxy ) − (1 /10 )∗ ( ( dx2 + dy2 ) ) . ∗ ( dx2 + dy2 ) ;f igure ( ) ; imshow (him ) ; hold on ; axis on ; hold o f f ;[ r , c ] = f ind (him>thresh ) ;f igure ( ) ; imshow ( image ) ; hold on ; p lot ( c , r , ’ r + ’ ) ; hold o f f ;

40

Page 53: VISION I INDUSTRIELLE SYSTEMER

KapitelDCD

Den vedlagte cd indeholder følgende:

• Projektdemonstration.wmv

• Rapport.pdf

• Kildekode:

– Kamera:

∗ kamera.vi

∗ sub_vis:

· CenterOfMass.vi

· Harris4Corners.vi

· IndexObjects.vi

· kameraWorldTrans.vi

· koordinattransformation_subvi.vi

· ROI.vi

– Robot:

∗ Cam_dtu.script

41

Page 54: VISION I INDUSTRIELLE SYSTEMER