Upload
phamhanh
View
234
Download
4
Embed Size (px)
Citation preview
Anders Rohde-Petersen, s062046
Rune Yding Brogaard, s062023
VISION I INDUSTRIELLE SYSTEMER
Bachelorprojekt, Forår, 2009
Anders Rohde-Petersen, s062046
Rune Yding Brogaard, s062023
VISION I INDUSTRIELLE SYSTEMER
Bachelorprojekt, Forår, 2009
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
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
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
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
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
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
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
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
TABELLER
VIII
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
3.1
Pro
gra
mo
pb
yg
nin
g
Figur 3.2: Kameraets LabView diagram
17
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
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
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
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
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
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
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
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
Kapitel 3. Implementering
Figur 3.16: LabView Diagram
26
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
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
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
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
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
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
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
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
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
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
KapitelAKamera og magnet beslag
37
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
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
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
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