SlideShare una empresa de Scribd logo
1 de 45
Afstudeerwerk ingediend tot het behalen van het diploma van
master in de industriële wetenschappen: opleiding elektronica ICT
Promotoren: Drs. Stijn Duchateau (Xios Hogeschool)
ing. Vincent Claes (Xios Hogeschool)
Steven Palmaers MSc (Xios Hogeschool)
Academiejaar 2012 – 2013
FPGA accelerated vision
XIOS HOGESCHOOL LIMBURG
DEPARTEMENT TOEGEPASTE INGENIEURSWETENSCHAPPEN
Tobias Adryan
Inhoudsopgave
Dankwoord I
Abstract II
Lijst van afkortingen en symbolen..................................................................III
Lijst van figuren....................................................................................................V
Lijst van tabellen................................................................................................. VI
1. Inleiding........................................................................................................... 7
1.1 PXL ............................................................................................................. 7
1.2 MSD: Mechatronic System Design............................................................. 7
1.3 Wat is een FPGA ........................................................................................ 8
1.3.1 Inleiding........................................................................................ 8
1.3.2 De opbouw .................................................................................... 9
1.3.3 Wat is de Zynq............................................................................ 10
1.3.4 Programma's schrijven voor FPGA's ......................................... 11
2 De case 12
Het algoritme ....................................................................................................... 14
2.1 De opstelling............................................................................................. 14
2.2 Voorwaarden............................................................................................. 14
2.3 Mathematisch concept.............................................................................. 15
3 Kinect 18
3.1 Inleiding.................................................................................................... 18
3.2 Sensoren ................................................................................................... 18
3.3 Camera's ................................................................................................... 19
3.4 Structured light........................................................................................ 21
3.5 Precisie van de Kinect .............................................................................. 22
3.5.1 inleiding...................................................................................... 22
3.5.2 Berekening van de resolutie....................................................... 22
3.5.3 Haalbaarheid van vereisten....................................................... 24
3.6 Kinect drivers ........................................................................................... 25
3.6.1 Microsoft..................................................................................... 25
3.6.2 Openscource................................................................................ 25
4 Zedboard........................................................................................................ 26
4.1 Specificaties.............................................................................................. 26
4.2 Waarom het Zedboard .............................................................................. 26
5 Xillinux 28
5.1 Inleiding.................................................................................................... 28
5.2 Toepassingen en kenmerken.................................................................... 28
5.3 Userspace vs kernelspace......................................................................... 29
5.4 Xillybus..................................................................................................... 29
6 Interfaces....................................................................................................... 31
6.1 inleiding.................................................................................................... 31
6.2 Kinect naar CPU ...................................................................................... 31
6.3 CPU naar FPGA....................................................................................... 32
6.4 FPGA naar HDMI .................................................................................... 32
6.5 FPGA naar CPU....................................................................................... 33
7 Discussie ........................................................................................................ 34
7.1 De meetopstelling..................................................................................... 34
7.2 De verwachtingen..................................................................................... 35
7.3 De metingen.............................................................................................. 37
8 Conclusie en toekomstvisie........................................................................ 39
8.1 Conclusie................................................................................................... 39
8.2 Mogelijke verbeteringen........................................................................... 39
Referenties 40
I
I
Dankwoord
Eerst en voor al wil ik mijn ouders bedanken, om dit allemaal mogelijk te maken
en voor hun steun doorheen mijn schoolcarrière. Daarnaast wil ik ook mijn
promotoren Vincent Claes, Steven Palmaers en Stijn Duchateau bedanken voor
hun geduld en goede raad. Niet te vergeten ook al de andere mensen die met mij
hebben moeten omgaan tijdens deze soms stressvolle periode, zodat ik mij ten volle
kon concentreren op mijn master thesis.
Tobias Adryan
II
Abstract
De kinect is al jaren in gebruik in de gaming industrie, de prijs voor zo een camera
is daardoor ook buitengewoon laag. Dit maakt de Kinect ook interessant voor
andere toepassingen. Omdat andere vergelijkbare systemen vele malen meer
kosten, opent de Kinect een brede waaier van nieuwe toepassingen. Bij dit
onderzoek gaat het om zo een nieuw toepassingsgebied te verkennen. Er werd
gekozen voor een testcase die een volume berekening doet. De berekening van dit
volume werd er gebruik gemaakt van het Zedboard. Het Zedboard is een low-cost
development board dat ondersteunt wordt door een open source community. Bij
systemen waar het gaat om visueel detecteren en analyseren van voorwerpen of
personen wordt veelal gebruik gemaakt van klassieke processoren. Maar deze zijn
gebouwd om sequentieel bewerkingen uit te voeren, dit zorgt voor een probleem als
het om beeldverwerking gaat. Namelijk dat bij veel toepassingen de responstijd erg
groot wordt en dat is meestal absoluut niet in het voordeel van gebruiksgemak. Het
probleem bij processoren is dat ze altijd maar één handeling tegelijk kunnen doen
en bij beeldverwerking komen grote hoeveelheden data voor, als deze sequentieel
verwerkt moeten worden zorgt dit voor een enorme bottleneck bij de processor.
Daarom wordt hier dus een FPGA gebruikt om de zware bulk berekeningen over te
nemen, deze is veel beter geschikt voor grote blokken data parallel te verwerken.
Het doel van dit onderzoek is dus om zo een processor-FPGA omgeving te
ontwikkelen die het beste van beide werelden kan gebruiken. Hierbij wordt er
gebruik gemaakt van een Xilinx zynq-7000, dit is een chip van Xilinx die een
dualcore ARM cortex A9 processor en een Artix 7 FPGA met elkaar verbind in één
package. Dat is dan ook de meest geschikte basis voor een hardware accelerated
video processor.
III
Lijst van afkortingen en symbolen
ADC
AES
AMBA
ARM
ASIC
AXI
CLB
CLI
DDR
DMA
DSP
DVI
FIFO
FPGA
GPIO
GUI
HDL
HDMI
HPC
I2C
I/O
IOB
IP
OLED
PCI
PCIe
PL
PS
RISC
RSA
SD
SDRAM
SHA
SoC
Analog Digital Convertor
Advanced Encryption Standard
Advanced Microcontroller Bus Architecture
Advanced RISC Machine
Application-specific integrated circuit
Advanced eXtensible Interface
Configurable Logic BLock
Command Line Interface
Double Data Rate (SDRAM)
Direct Memory Access
Digital Signal Processing
Digital Visual Interface
First In First Out
Field Programmable Gate Array
General Purpose I/O
Graphical User Interface
Hardware Descriptive Language
High-Definition Multimedia Interface
High Performance Computing
Inter Integrated Circuit
Input/Output
I/O Block
Intellectual Property
Organic Light Emitting Diode
Peripheral Component Interconnect
PCI express
Programmable Logic
Processing System
Reduced Instruction Set Computer
Rivest Shamir Adleman
Secure Digital
Synchonous Dynamic Random Access Memory
Secure Hash Algorithm
System On Chip
IV
SPI
SRAM
TMDS
UART
USB
USB OTG
VESA
VGA
VHSIC
Serial Peripheral Interface
Shadow Random Access Memory
Transition-Minimized Differential Signaling
Universal Asynchronous Reciever/Transmitter
Universal Serial Bus
USB On The GO
Video Electronics Standards Association
Videa graphics Array
Very High Speed Integrated Circuit
V
Lijst van figuren
Figuur 1 Opbouw van een FPGA.................................................................................9
Figuur 2 Opbouw Zynq..............................................................................................10
Figuur 3 Testcase pixel grootte .................................................................................13
Figuur 4 Testcase opbouw .........................................................................................14
Figuur 5 Vormen beperking ......................................................................................15
Figuur 6 Integraal .....................................................................................................15
Figuur 7 Riemann......................................................................................................16
Figuur 8 Meting van op verschillende afstanden Wolfram.com (Riemann).............17
Figuur 9 Kinect onderdelen.......................................................................................19
Figuur 10 Kinect camera's.........................................................................................20
Figuur 11 IR pattroon................................................................................................21
Figuur 13 Beeldhoek met variablelen.......................................................................23
Figuur 14 Zedboard geheel........................................................................................26
Figuur 15 Zedboard opbouw......................................................................................26
Figuur 16 Xillybus FIFO's.........................................................................................30
Figuur 17 Interfaces geheel.......................................................................................31
Figuur 18 FPGA-HDMI interface..............................................................................32
Figuur 19 Meetopstelling ..........................................................................................34
Figuur 23 Schaduwprobleem.....................................................................................38
VI
Lijst van tabellen
Tabel 1 Kinect eigenschappen...................................................................................20
Tabel 2 Kinect eigenschappen[7][1][2] ......................................................................22
Tabel 3 Positieve afwijking........................................................................................35
Tabel 4 Negatieve afwijking......................................................................................36
Tabel 5 Meetresultaten..............................................................................................37
7
1. Inleiding
1.1 PXL
Hogeschool PXL is vanaf oktober 2013
een hogeschool in Belgisch Limburg met
vestigingen in Hasselt, Genk en Diepenbeek.
Het is een zelfstandige hogeschool, niet direct
gebonden aan een onderwijsnet. Door haar
actief pluralistisch karakter werkt PXL
samen met alle onderwijsnetten. De hogeschool is ontstaan uit de fusie tussen
de XIOS Hogeschool Limburg en de Provinciale Hogeschool Limburg. Samen met
de Universiteit Hasselt behoort Hogeschool PXL tot de Associatie Universiteit-
Hogescholen Limburg.
De hogeschool wordt bestuurd door een Raad van Toezicht en een Raad van
Bestuur. Voorzitter is Frank Smeets, covoorzitter is Luc Houbrechts en algemeen
directeur is Ben Lambrechts.
1.2 MSD: Mechatronic System Design
Dit project heeft plaatsgevonden binnen het PWO-project MSD, MSD staat voor
Mechatronic System Design. MSD is een nieuw PWO-onderzoeksproject dat de
professionele opleidingen van elektronica-ict, elektromechanica en toegepaste
informatica samen brengt.
Zo kunnen grotere multidisciplinaire applicaties verwezenlijkt worden. Het project
combineert Mechanische constructies met state-of-the-art elektronica. Daarnaast
wordt de HMI (Human Machine Interface) afgehandeld door smartdevices die op
iOS of Android draaien.
Het is ook daarom dat dit onderzoeksproject met de Kinect geknipt is voor MSD.
De Kinect is een nieuwe vorm van HMI waarbij er geen fysiek contact meer nodig
is tussen het toestel en de gebruiker. Hiernaast wordt bij machinebouw veel visie
toegepast, bij het analyseren van inkomende goederen of kwaliteitscontrole aan het
einde van een process.
8
1.3 Wat is een FPGA
1.3.1 Inleiding
De FPGA of Field-Programmable Gate Array is fundamenteel gezien een
herprogrammeerbare silicium chip. Door gebruik te maken van programmeerbare
logische blokken die aan elkaar gehangen worden door inter-connecties, kan je
custom hardware maken. Het grote voordeel van FPGA's de
herprogrammeerbaarheid, dit maakt ontwerpen waarin een FPGA zit uiterst
flexibel. Zo zal bijvoorbeeld door een puur softwarematige update een nieuwe
interface kunnen worden voorzien voor hardware die op voorhand niet gekend was.
Een ander groot voordeel van de FPGA is de mogelijkheid op in real-time dingen te
gaan verwerken en zelfs volledig onafhankelijk en parallel .
Naast de vele voordelen zijn er natuurlijk ook wel nadelen. Zo zal een schakeling in
een FPGA altijd trager zijn als die in een ASIC (Application Specific Integrated
Circuit). Hierbij zal de FPGA ook meer energie gaan verbruiken. Hiernaast is het
omzetten van de HDL (Hardware Descriptive Laguage) naar een fysieke schakeling
in de FPGA uiterst complex en neemt dus ook veel tijd in beslag, dit vertraagd het
ontwikkelingsproces. Natuurlijk is het ontwikkelen van een ASIC ook uiterst duur
en zal de keuze voor een FPGA meestal gemaakt worden voor een laag volume
productie of een product dat uiterst flexibel moet zijn. Dit hoofdstuk zal versimpeld
uitleggen wat een Field-Programmable Gate Array eigenlijk is.
9
1.3.2 De opbouw
Figuur 1 Opbouw van een FPGA
De Field-Programmable Gate Array is hoofdzakelijk opgebouwd uit drie elementen,
IOB's, CLB's en routing channels. IOB's zijn Input Output Blocks, zij zijn de
buffers die de logica met de buitenwereld verbinden. De CLB's zijn de Common
Logic Blocks waarin de programmeerbare logica zit, deze layout maakt de routing
veel eenvoudiger. De gedetailleerde samenstelling van de CLB's is verschillend
voor verschillende fabrikanten en verschillende series van FPGA's. Daarnaast zijn
er nog de Routing channels die alles met elkaar verbinden, dit is een netwerk van
"draden" die met elkaar zijn verbonden via elektronische "schakelaars".
10
1.3.3 Wat is de Zynq
Zoals te zien op Figuur 2 is de Zynq een all-in-one oplossing voor toepassingen die
een sterke applicatie processor nodig hebben naast een custom co-processor of
programmeerbare logica om custom interfaces te kunnen maken.
Figuur 2 Opbouw Zynq
Het groene deel in het midden van figuur 2 illustreert de inhoud van de applicatie
processor. Het gele deel beschrijft de inhoud van de FPGA. De inhoud van de
FPGA is natuurlijk zeer beperkt, hier zijn alleen interfaces beschreven. De rest van
de invulling van de FPGA is te voorzien van de ontwerper.
11
1.3.4 Programma's schrijven voor FPGA's
Door de complexiteit van de FPGA's is er zware software nodig om deze te
programmeren. De FPGA ontwerper schrijft zijn code in HDL (Hardware
Descriptive Laguage) en definieert hiermee zijn hardware design. De meest
gebruikte HDL hier in europa is VHDL ( VHSIC Hardware Descriptive Laguage),
in Amerika wordt er gebruikt gemaakt van Verilog. Maar al deze code is nutteloos
zonder de UCF (User Constraints File) file dit het bestand waarin de in en
uitgangen worden bepaald de zogenaamde netlist. Dit is meteen ook de reden
waarom HDL code zo portable is. De volledige code staat los van de hardware waar
hij op draait (op een paar uitzonderingen na) en is alleen aan zijn hardware
gebonden via de netlist.
12
2 De case
Het is de bedoeling om een volume meting te kunnen uitvoeren van objecten in real
time. Dat wilt dus zeggen dat het volume van pakjes die op een lopende band
voorbij komen kan gemeten worden. De opstelling wordt opgebouwd met een
Microsoft Kinect camera en een lopende band.
De camera hangt boven de band om zo de objecten die voorbij komen te kunnen
meten. Tijdens het proces blijft de Kinect camera op exact dezelfde plaats hangen.
Momenteel is dit beperkt tot één Kinect en dus is er ook een beperking op de vorm
van de te meten voorwerpen, de vereiste resolutie voor deze toepassing is ±1mm.
Meer informatie hierover is te vinden in hoofdstuk 3 het algoritme.
13
Figuur 3 Testcase pixel grootte
Figuur 3 toont een statisch platform omdat dit een testcase is. Met dit systeem zou
een volledig geautomatiseerd systeem kunnen worden gebouwd dat zelf pakjes
sorteert naar volume en vorm met een optimale benutting van de beschikbare
ruimte. Dit kan bijvoorbeeld een postorder bedrijf de mogelijkheid geven om pakjes
optimaler te stockeren.
14
Het algoritme
2.1 De opstelling
Het doel van het algoritme is om het volume van een object te kunnen berekenen.
Aangezien de opstelling momenteel beperkt is tot één camera moet er worden van
uitgegaan dat het object één vlakke kant heeft waarmee hij op of tegen een vlak
rust zoals geïllustreerd op figuur 4 hieronder.
Figuur 4 Testcase opbouw
2.2 Voorwaarden
De vorm van het object is door deze opstelling ook beperkt, als het object naar
onder toe versmalt wordt er bij deze opstelling eigenlijk het volume van een object
berekend dat zijden heeft die recht naar beneden gaan.
15
Figuur 5 Vormen beperking
2.3 Mathematisch concept
Het algoritme bestaat fundamenteel uit een integraal voor iedere rij pixels van het
dieptebeeld, hieronder is een voorbeeld uitgewerkt voor een 2 dimensioneel figuur.
Hieronder zichtbaar op figuur 6 een versimpeld voorbeeld hiervan, namelijk een
functie van ( ) .
Figuur 6 Integraal
De oppervlakte onder de curve is wat van belang is. Die oppervlakte kan gevonden
worden door de integraal van deze functie te berekenen. Maar dit kan ook
benaderd worden met de Riemann som, het dieptebeeld op de computer ziet er
vloeiend uit, net alsof het een functie zou zijn die continu is, maar niets is minder
waar. Het is een digitaal beeld en bestaat dus eigenlijk uit pixels of samples, dus
16
zou het een nutteloos werk zijn om er een continue functie op te fitten om deze dan
uit te rekenen in software die volgens de Riemann som werkt. Bij een Riemann
som gaat het immers om de functie op te delen in kleine delen en deze dan op te
tellen. Voor deze toepassing van de Kinect volstaat het dus volledig om de
zogenaamde benadering te gebruiken die de Riemann som voorstelt. Zoals op
figuur 7 hieronder te zien volgen de blokjes van de samples niet exact de curve. Dit
is een probleem dat veroorzaakt wordt door de beperkte resolutie van de
dieptecamera van de Kinect. De problemen en afwijkingen die dit met zich mee
brengt worden besproken in hoofdstuk 3.5 over de precisie van de Kinect.
Figuur 7 Riemann
Maar in de Kinect zijn er niet 2 dimensies maar wel 3 dimensies, namelijk x, y en
z. Waarbij x en y respectievelijk de horizontale en de verticale verplaatsing in het
vlak tegenover de Kinect voorstelt en de z component diepte (afstand) tot de Kinect
sensor voorstelt. Dit is niet de afstand van het object tot de diepte camera maar de
afstand van het vlak waarin de 2 camera’s en de IR projector zich bevinden[7]. Op
die mannier definieert de Kinect een volledig lineair orthogonaal assenstelsel.
Figuur 8 hieronder illustreert de afwijking van de gemeten diepte tegenover de
echte vorm van het voorwerp.
17
Figuur 8 Meting van op verschillende afstanden Wolfram.com (Riemann)
Op figuur 8 is te zien hoe de halve bol wordt benaderd door de meting op
verschillende afstanden, de resolutie waarmee de het object wordt gemeten ligt in
direct verband met de afstand van de sensor tot het object. In hoofdstuk 3.5 over de
precisie van de Kinect wordt hier meer over verteld.
18
3 Kinect
3.1 Inleiding
Oorspronkelijk ontwikkeld als de "next generation gaming interface" voor de Xbox
360, de microsoft Kinect bevat een reeks aan sensoren, de meest prominente uit de
reeks is de primesense afstandssensor.[2]
Goedkope afstandssensoren waren altijd al aantrekkelijk als alternatief voor dure
laser scanners voor werkgebieden zoals indoor mapping, bewaking of robotica. De
Kinect was dan misschien wel ontworpen als "natural interaction in a computer
game environment" maar door de aard van de data die de Kinect verzameld heeft
de Kinect al veel aandacht naar zich getrokken. Van onderzoekers in
onderzoeksvelden als indoor mapping en 3D modellering.[1]
3.2 Sensoren
De Microsoft Kinect wordt vaak valselijk als camera beschreven, daarbij kan de
Kinect eigenlijk beter beschreven worden als een "sensor array" omdat hij eigenlijk
een vrij groot aantal sensoren bevat. Bij het uit elkaar halen van de Kinect vind je:
een rgb kleuren camera, een IR projector, een IR camera, een microfoon array en
een 3-as accelerometer. Ook al zijn er zoveel sensoren zal hier vooral gefocust
worden op de camera's omdat deze de Kinect echt wel uniek maken.[2]
19
Figuur 9 Kinect onderdelen
3.3 Camera's
Zoals hierboven reeds vermeld heeft de Kinect twee camera's hierbij gaat het om
een kleuren camera en een IR camera. Ze staan beiden langs elkaar in het midden
van de Kinect op ongeveer 2,5cm afstand van elkaar. De projector zit ongeveer
7,5cm links van het midden (vooraanzicht).
20
Figuur 10 Kinect camera's
Deze afmetingen zijn bekomen door de stereo calibratie methode [4][5] Tabel 1 [3]
bevat de specificaties van de Kinect volgens Microsoft[7].
Tabel 1 Kinect eigenschappen
Sensor eigenschap Waarde / Bereik
Beeldhoek 57°horiz., 43° vert.
Tilt motor hoek ±28°
Resolutie color stream 640x480 (VGA)
Resolutie diepte stream 320x240 (QVGA)
Nominale Resolutie (diepte) op 2m 1mm
Nominale Resolutie (horiz.-vert.) op 2m 3mm
Framerate ±30Hz
Diepte bereik 0,8m - 3,5m
Skeletal tracking bereik 0,8m - 3,5m
Audio formaat 16 kHz, 16-bit mono pulse code
modulatie
Audio ingangskarakteristieken Array van 4 microfoons met 24-bit ADC
21
met ingebouwde DSP voor noise en echo
onderdrukking
Interface USB + externe stroombron
3.4 Structured light
De Kinect straalt een IR patroon uit op de omgeving om de diepte te bepalen zoals
te zien op figuur 11 [3]. Zoals op figuur 11 te zien straalt de projector een pseudo
random patroon uit maar deze wordt vervormd door de IR camera. De projector die
dit doet wordt ook wel structured light projector genoemd[2].
Figuur 11 IR pattroon
Deze foto komt van een externe IR camera, aangezien de IR camera van de Kinect
het beeld vervormd. Elk puntje van dat patroon is uniek en kan onderscheiden
worden van de anderen. Het exacte algorithme dat de Kinect gebruikt is niet
bekend maar in het patent[7] is er sprake dat er gebruik wordt gemaakt van
pixelshifts om de diepte te kunnen meten. Dit met behulp van een gecallibreerd
referentie beeld. Een speculatieve maar gedetailleerde discussie hierover is te
vinden op de ROS.org wiki pagina[5] over Kinect kalibrering.
22
3.5 Precisie van de Kinect
3.5.1 inleiding
Bij het ontwikkelen van een meetopstelling is het natuurlijk van belang om van
tevoren te weten wat voor een precisie van de opstelling kan verwacht worden. De
Kinect sensor registreert kleur -en diepte beelden aan een snelheid van 30 beelden
per seconde. Deze beelden worden geregistreerd in een resolutie van 640x480.
Verdere eigenschappen van de Kinect zijn te vinden in de tabel hieronder.
Tabel 2 Kinect eigenschappen[7][1][2]
Sensor eigenschap Waarde / Bereik
Beeldhoek 57°horiz., 43° vert.
Tilt motor hoek ±28°
Resolutie color stream 640x480 (VGA)
Resolutie diepte stream 320x240 (QVGA)
Nominale Resolutie (diepte) op 2m 1mm
Nominale Resolutie (horiz.-vert.) op 2m 3mm
Framerate ±30Hz
Diepte bereik 0,8m - 3,5m
Skeletal tracking bereik 0,8m - 3,5m
Audio formaat 16 khz, 16-bit mono pulse code
modulatie
Audio ingangskarakteristieken Array van 4 microfoons met 24-bit ADC
met ingebouwde DSP voor noise en echo
onderdrukking
Interface USB + externe stroombron
3.5.2 Berekening van de resolutie
Met de informatie over de beeldhoeken en de resolutie waarmee de beelden worden
vastgelegd, kunnen functies worden opgesteld om de precisie van de Kinect te
beschrijven. De afstand tussen het object en de sensor wordt gemeten tussen de
oppervlakte van het object tot het brandpunt van de camera. Om de precisie van de
Kinect te kunnen berekenen kan gebruik gemaakt worden van de
driehoeksmeetkunde. De driehoek die voor de berekening van belang is, is
hieronder getekend op figuur 12, samen met de variabelen die voor deze
23
berekening van belang zijn. Deze driehoek kan gebruikt worden voor de
horizontale en de verticale afmetingen van de pixels te berekenen. De variabel α is
de beeldhoek, A is de werkelijke breedte van het beeld. Om de formules simpeler te
maken is ervoor gekozen om maar de halve driehoek te gebruiken in de berekening
van daar dus ook de variabelen α/2 en A/2. De variabele X stelt de afstand van het
object tot het brandpunt van de camera voor en de y variabele die niet op de figuur
13 te zien is, stelt respectievelijk de breedte of de hoogte van een pixel voor.
Volgens de specificaties van Microsoft zelf zouden de pixels perfect vierkant moeten
zijn, om dit te controleren en ter zelfcontrole worden hieronder de afmetingen van
de pixels zowel in de horizontale als in de verticale richting berekend.
Figuur 12 Beeldhoek met variablelen
In de horizontale richting is α 57° en A = Yh*640p, α/2 is dus 28,5° en A/2 = Yh
*320p. Om Y te vinden is er een vergelijking nodig, hiervoor wordt de tangensregel
gebruikt.
24
( )
Omgevormd naar een vergelijking die als oplossing de Y variabele heeft, geeft dit
dan.
( )
In de verticale richting kan dezelfde formule gebruikt worden maar dan met de
resolutie en de hoeken van die richting, de formule zou er als volgt uit zien.
( )
Een pixel vertegenwoordigd volgens Microsoft een oppervlakte van 3 mm x 3 mm
als het object zich 2 meter van de camera bevind. De net bekomen formules kunnen
hiermee dus gecontroleerd worden.
( )
( )
Hierbij is te zien dat Microsoft wel behoorlijk ongeveer is geweest met zijn
specificaties.
3.5.3 Haalbaarheid van vereisten
Als een precisie van 1mm moet bereikt worden kan daarom niet gezegd worden dat
de pixel 1mmx1mm moet vertegenwoordigen, men kan wel stellen dat de pixel
1mm² moet zijn in dat geval zou * gelijk moeten zijn aan 1mm², dat geeft dus.
( ) ( )
√(
( )
) (
( )
)
Om een resolutie van 1mm te kunnen hebben moet de Kinect 60cm van het object
verwijderd zijn. Dat wil zeggen dat dit niet haalbaar is met de standaard Kinect
die je bij de Xbox 360 krijgt, bij de standaard Kinect moet het object minimaal
80cm van de camera verwijderd zijn anders kan de Kinect de meting niet
25
uitvoeren. De Kinect for windows daarintegen heeft een "near-mode" dan kan er
gekozen worden om dichter bij te kunnen meten, namelijk vanaf 40 cm dit beperkt
de maximale diepte tot 3m, de standaard Kinect heeft een bereik van 80cm tot 4m,
maar zelfs in deze near-mode mag het object in kwestie maximaal 20cm hoog zijn
of het valt buiten de meetbare zone.
3.6 Kinect drivers
Ondanks dat de Kinect door microsoft is uitgebracht is hij eigenlijk niet ontworpen
door Microsoft maar door Primesense. Primesense had voordat ze in de handen van
Microsoft terecht kwamen een nauwe band met OpenNI, die nu de opensource
verder ondersteunt.
3.6.1 Microsoft
Microsoft heeft de Kinect natuurlijk eerst en vooral uitgebracht voor de Xbox360.
Van dag één dat de Kinect uit was zijn de hackers en modders aan het werk gegaan
om de Kinect aan het werken te krijgen aan de PC op Linux. Het heeft dan ook niet
lang geduurd voordat de Kinect gekraakt was en kon uitgelezen worden op de pc.
Microsoft heeft zich zeer negatief opgesteld tegenover dit gebeuren. Maar later zag
Microsoft zelf in dat het een gevecht tegen de bierkaai was. Dus heeft Microsoft
toen besloten om deze groep mensen te ondersteunen. Microsoft is toen op de
proppen gekomen met Kinect for Windows. Microsoft ondersteunt ook alleen maar
Kinect voor Windows. Ookal werkt hij ook op ander besturingssystemen die beter
over weg kunnen met de data.
3.6.2 Opensource
Natuurlijk is OpenNI nadat Primesense werd overgenomen door Microsoft niet
gestopt. OpenNI ondersteunt de opensource beweging nog steeds met broncode
voor zijn software en proprietary binaries die nodig zijn om te kunnen
communiceren met de Primesense SoC die in de Kinect zit. OpenNI voorziet deze
binaries zowel voor Windows als voor Linux en zelfs voor Linux op ARM!
26
4 Zedboard
4.1 Specificaties
Het zedboard is een evaluatie en
ontwikkelingsbord dat gebaseerd is
op de Xilinx-7000 All Programmable
SoC (AP Soc). Hij combineerd een
dualcore Cortex-A9 processor
systeem(PS) met 85,000 serie-7
programmeerbare logica cellen van
de Artix FPGA, de Zynq-7000 AP
SoC kan ingezet worden in een breed
spectrum van toepassingen. Het
zedboard is een bord met vele mogelijkheden en on-board periferie en
uitbreidingsmogelijkheden dit maakt het de ideale kandidaat voor vele
toepassingen.

Figuur 14 Zedboard opbouw
4.2 Waarom het Zedboard
Het Zedboard is comunity-based development board voor de Zynq het bied een
volledig pakket aan I/O met de Zynq 7020 voor een uiterst lage prijs, het is
daarmee ook het enige Zynq development board dat binnen het budget paste. Er
werd voor de Zynq gekozen omdat dit platform een Dual-core ARM A9 applicatie
processor heeft met in dezelfde chip een Atrix 7 FPGA. Dit was de perfecte basis
voor dit project aangezien dan de volledige bewerking kan gebeuren op één enkele
chip!
Figuur 13 Zedboard geheel
27
28
5 Xillinux
5.1 Inleiding
De Xillinux distributie is zowel software voor de ARM core als voor de FPGA (PL),
het is een "volledige" linux distributie, zelfs met een grafische desktop omgeving.
Je kan er via de USB OTG kabel een keyboard en muis aansluiten, en via de VGA
connector ook een monitor. Het is niet alleen een demo applicatie maar ook een
kick-start development kit, die de integratie tussen de linux omgeving op de ARM
processor en de programmable Logic (PL) in de FPGA.
Een demo configuratie van de Xillybus IP core is inbegrepen in de logica van
Xillinux. Je kan natuurlijk ook zelf een custom core programmeren. Of één
downloaden van de Core factory met de nodige licenties. Xillinux is gebaseerd op
Ubuntu 12.4LTS voor de ARM processor, met deze linux distributie kan het
zedboard zelfs bijna dienen als een echte desktop computer. Hij gebruikt de SD
kaart als harde schijf en via de USB OTG aansluiting wordt usb muis en
toetsenbord aangesloten, via de VGA poort kan je gewoon ieder scherm dat conform
is aan de VESA standaard aansluiten.
Naast de desktop omgeving kan je Xillinux ook gebruiken zonder de desktop GUI,
voor taken die meer vragen van de processor kan de GUI gewoon weg gelaten
worden en in de CLI verder werken[10]. Dit is ook gebeurt in de demo applicatie
om wat meet headspace te hebben om een vloeiende werking te garanderen.
5.2 Toepassingen en kenmerken
Er zijn vele mogelijke toepassingen voor dit systeem, de belangrijkste zijn hier
opgelijst.
 Data capturing
 HPC (high performance computing)
 FPGA control vanaf de host
 Debugging
 Cryptografie
De belangrijkste kenmerken van de Xillybus zijn:
 Tot 160 FIFO's via dezelfde bus
29
 Niet systeem gebonden (xilinx/altera,Linux/windows)
 Gebruikt DMA als communicatie naar de host
 Ondersteunt PCI Express of AXI bus
 Programmeren gebeurt in de userspace
 Geen specifieke driver nodig op de host
5.3 Userspace vs kernelspace
Er is een groot verschil tussen drivers die in de userspace geschreven worden en
drivers die in de kernelspace liggen. Een userspace driver is eenvoudiger te
schrijven, maar er ontstaan problemen als er echt diepgaande toegang nodig is tot
bepaalde adressen of hardware functies. In gevallen dat er zo een diepgaande
toegang nodig is wordt normaalgezien geopteerd om de driver in kernel space te
schrijven. Een driver in de kernelspace functioneert als module, een zogenaamde
kernel module. Een programma dat in de kernel space draait heeft absolute
bevoegdheid over alles, dat is meteen ook het grote gevaar met programma's die in
de kernelspace draaien. Hiernaast moet alles tussen de kernel driver en de rest
van het operating system direct en low level gebeuren. Fouten die hier gemaakt
worden zijn vaak nefast voor de rest van het systeem[11].
5.4 Xillybus
De Xillybus is een end-to-end oplosing voor data transport van de linux host en de
FPGA, in de context van deze thesis gaat het alleen maar over de communicatie
met Linux, maar de Xillybus kan met andere development platformenen zelfs ook
met Microsoft Windows gebruikt worden, dit gebeurt dan via de PCI bus. In een
embedded omgeving op een ARM-processor wordt de AMBA bus (AXI3/AXI4)
gebruikt. De Xillybus IP core kan dus gebruikt worden voor PC based systemen
maar ook in een embedded omgeving. Momenteel is Xillybus for Zynq alleen nog
maar beschikbaar op het zedboard.
30
Figuur 15 Xillybus FIFO's
Zoals boven op figuur 16 te zien, moet de logica van de toepassing alleen maar
communiceren met FIFO's die mee in de logica staan. Zo zal de toepassing in de
logica de data in de onderste FIFO op het diagram schrijven en zal de Xillybus IP
core merken dat er data beschikbaar is in de FIFO. Kort daarna zal de Xillybus IP
core beginnen met lezen en de data doorsturen naar de host en hierdoor de data
leesbaar maken in de userspace van de applicatie op de ARM processor. Daarna
handelt de axi bus de verdere communicatie af, deze genereert DMA aanvragen
voor de ARM core bus.
De applicaties op de ARM core gebruiken device files om te communiceren met AXI
bus, deze device files dienen als een soort pijpleidingen om data heen en weer te
sturen naar de programmeerbare logica. Dit maakt het eenvoudiger om informatie
over te dragen van de ARM naar de FPGA. Verder moet hierdoor alleen maar in de
userspace geprogrammeerd worden en worden de gevaren van in de kernelspace te
programmeren omzeild[10].
31
6 Interfaces
6.1 inleiding
Bij een ontwerp waarbij er een besturingssysteem zijn data haalt van een extern
toestel en deze verder leid naar de FPGA om dan weer data terug te krijgen van de
FPGA. Terwijl de FPGA ook zijn data toont op een extra scherm. Zijn de interfaces
het belangrijkste deel van het project. Hierbij is vooral timing van belang, omdat er
in een FPGA niet per definitie wordt gewerkt met processen doen zich daar een
paar problemen voor. Daarom moeten al deze interfaces ontworpen worden met
desynchronisatie en synchronisatie.
Figuur 16 Interfaces geheel
6.2 Kinect naar CPU
De Kinect wordt aangesloten via een USB-poort, dit is voor het Zedboard via een
USB OTG kabel en een USB HUB, dit is dus gevoelig voor grote hoeveelheden data
die via één USB controller moeten passeren. De twee datastreams die van de
Kinect komen zijn samen goed voor een datastream van ongeveer 20MB/s. Omdat
er maar gebruik gemaakt wordt van één Kinect camera en aangezien de andere
toestellen die zijn aangesloten via de HUB een toetsenbord en een muis zijn, vormt
dit echter geen probleem voor de demo applicatie. De RAW USB data wordt
omgezet via de NITE middleware, verder wordt de data beschikbaar gemaakt in de
userspace via het OpenNI framework.
32
6.3 CPU naar FPGA
De CPU naar FPGA interface verzorgd de FPGA met de diepte data van de Kinect.
Hierbij heb ik gekozen voor een 32-bit interface via de Xillybus. De Xillybus is zoals
uitgelegd in hoofdstuk 5 is de interface die mee in de Xillinux distributie zit op met
de FPGA te kunnen communiceren. Volgens de specificaties[10] zou de verwachte
bandbreedte bij 195MB/s liggen, natuurlijk alleen maar haalbaar als DMA
gebruikt wordt.
6.4 FPGA naar HDMI
Figuur 17 FPGA-HDMI interface
In de FPGA bevind zich een geheugen dat de de image data bij houd, dit is een
dual-port ram zodat de HDMI generator en de Xillybus ten alle tijden tegelijk aan
het geheugen kunnen. Hieruit leest de videodata generator zijn diepte data die in
de image memory zit. In de video data generator wordt de timing en het formaat
voorzien voor de video data input van de ADV7511. Dit komt grotendeels overeen
met het formaat dat zou voorzien worden voor een VESA[2] compliant VGA maar
dan in de YCbCr colorspace in plaats van RGB. Via de I2C interface wordt de
ADV7511 geconfigureerd. Daarna zal de ADV7511 de video data omzetten naar
signalen voor HDMI/DVI uitgang.
33
6.5 FPGA naar CPU
De interface van de FPGA naar de CPU is ook bewust simpel gehouden, de logica
in de FPGA berekend het volume van het te meten object in pixels en compenseert
voor het verschil in grootte van de pixel die ontstaat door de hoogte die de pixel
vertegenwoordigd. Omdat de omrekening van het volume in pixels naar het volume
in mm³ kommagetallen nodig heeft gebeurt die omzetting bij de CPU omdat deze er
beter voor geschikt is.
34
7 Discussie
7.1 De meetopstelling
Natuurlijk moet al deze theorie ook getest worden, figuur 19 hier onder
verduidelijkt de testopstelling. Hierbij bevind zich de Kinect camera 1m boven het
meetvlak, bij een minimale meetdiepte van 80 cm geeft dit maar een bruikbaar
venster van 20cm om de meting door te voeren. Er werd voor deze afstand gekozen
omdat dit een maximale resolutie geeft op een zo klein mogelijk oppervlak om de
metingen uit te voeren met de Kinect for Xbox360.
Figuur 18 Meetopstelling
Op figuur 19 is te zien dat het object dat gemeten wordt geen kubus is, maar een
voetstuk waarop zich een plaatje bevind. Op deze manier konden door vier
voetstukken en vier plaatjes op exacte afmetingen te fabriceren, 16 voorwerpen
met verschillende afmetingen gesimuleerd worden. Omdat de camera recht boven
35
het voorwerp staat en bij gevolg alleen maar het bovenvlak ziet geeft dit exact
hetzelfde resultaat.
7.2 De verwachtingen
Omdat op 1m diepte gemeten wordt zal de verwachte resolutie nu anders liggen
dan bij de berekeningen van hoofdstuk 3. Met de breedte van een pixel en de
lengte ervan.
( )
( )
Hieruit kan berekend worden wat de verwachte fout op de meting zal zijn voor de
te meten voorwerpen. De maximale fout treed op als een rand van het voorwerp net
op de grens van twee pixels ligt en als de hoogte van het voorwerp net op de grens
ligt tussen twee niveaus van de dieptemeting. Dit kan het volume groter laten
lijken dan in de realiteit, dit zou een positieve afwijking zijn. Het voorwerp kan ook
kleiner lijken dan in de werkelijkheid, dan wordt er gesproken over een negatieve
afwijking. Deze twee uiterste gevallen zijn in tabel 3 en tabel 4 weergegeven.
Tabel 3 Positieve afwijking
36
Tabel 4 Negatieve afwijking
37
7.3 De metingen
Zoals te zien in tabel 5 hieronder is de precisie van de Kinect veel slechter als
verwacht. Bij de procentuele fout is duidelijk te zien dat deze significant stijgt als
de hoogte van de voet stijgt. Dit is net het tegengestelde van wat er verwacht was.
De berekeningen gaan er van uit dat er buiten de pixel fouten geen andere fouten
meer zijn. Maar dat is niet zo, de significante stijging in fout is te verklaren door de
opbouw van de Kinect, het voorwerp staat dan wel recht onder de camera van de
Kinect, maar zoals in hoofdstuk 3 beschreven staat de IR projector absoluut niet in
het midden maar sterk naar links verschoven.
Tabel 5 Meetresultaten
Door het verschil in inkijkhoek ontstaat er naast een voorwerp een schaduw in het
IR patroon dat zorgt voor de fout in de meting. Die schaduw is dus maar een zeer
beperkte invloed op objecten die laag zijn en dus dicht op het meetplatform. Maar
grotere voorwerpen werpen een grote schaduw, dit is het ergste bij hoge en smalle
objecten. Figuur 23 illustreert dit probleem.
38
Figuur 19 Schaduwprobleem
Op de figuur 19 is te zien dat doordat de IR projector meer naar links staat, de
camera in staat is om de schaduw te zien achter het voorwerp. Zelfs zonder het
probleem met de schaduw is er enorm veel ruis die onderdrukt moet worden. Om
deze ruis weg te filteren wordt er gebruik gemaakt van een lopend gemiddelde en
een beperking in mogelijke waarden, maar toch is een ruis piek van 1000mm³ of
meer zeker geen uitzondering.
39
8 Conclusie en toekomstvisie
8.1 Conclusie
De Microsoft Kinect is als dieptecamera om absolute metingen uit te voeren niet
geschikt. De Kinect is ontworpen om relationele data op te nemen en te verwerken,
zoals een object of gebaar herkenning. De Kinect beschikt ook over een custom
ASIC die deze verwerking uitvoert, aangezien deze anders te veel rekenkracht zou
vragen van de host. De Microsoft Kinect is tenslotte gemaakt voor de Xbox360, dit
is een spelconsole, die veel grafisch ingewikkelde verwerkingen moet kunnen doen
om een spel te kunnen draaien en dus zou die extra belasting een nefaste gevolgen
hebben voor de kwaliteit van spellen die gebruik maken van de Kinect. De Kinect
is dus voor absolute meet toepassingen niet geschikt. Maar hij zou wel kunnen
ingezet worden voor bijvoorbeeld object herkenning op een lopende band of voor een
interactieve etalage.
8.2 Mogelijke verbeteringen
De huidige Kinect is een dieptecamera die met behulp van structured light de
diepte bepaald en dit in VGA kwaliteit. Maar de Xbox360 is aan het einde van zijn
leven toegekomen en zal al binnenkort worden vervangen door zijn opvolger. Die
opvolger is de Xbox One en wordt standaard in een bundel verkocht met de nieuwe
Kinect. Deze dieptecamera is een time-of-flight camera, dit is hetzelfde systeem dat
ook gebruikt wordt door professionele dieptecamera's. Time-of-flight is veel
preciezer als de structured light methode, daarbovenop neemt de nieuwe Microsoft
Kinect zijn beelden op in 1080p resolutie. Dit geeft een veel hogere precisie als de
VGA resolutie van de oude kinect, deze methode is ook veel minder gevoelig aan
ruis dan de structured light methode. Met andere woorden is deze nieuwe Kinect
met hoge waarschijnlijkheid wel geschikt voor vooropgestelde case. Helaas is de
nieuwe kinect nog niet beschikbaar en konden er dus geen testen mee uitgevoerd
worden.Om dit systeem bruikbaar te kunnen maken om in de praktijk volume
metingen te doen, moet de beperking in vorm van de voorwerpen die gemeten
kunnen worden, verholpen worden door meerdere Kinect camera's te gaan
gebruiken.
40
Referenties
[1] ACCURACY ANALYSIS OF KINECT DEPTH DATA, K. Khoshelham, ITC
Faculty of Geo-information Science and Earth Observation, University of
Twente, 2011
[2] The Kinect Up Close: Modifications for Short-Range Depth Imaging, Mark
Theodore Draelos, North Carolina State University, 2012
[3] Kinect Depth Sensor Evaluation for Computer Vision Applications, M.R.
Andersen, T. Jensen, Aarhus University, Februari 2012
[4] N. Burrus. (2010) Kinect calibration. [Online]. Available:
http://nicolas.burrus.name/index.php/Research/KinectCalibration
[5] K. Konolige and P.Mihelich. (2010) Kinect_calibration/technical. ROS.org.
Discussion of the Kinect’s software workings. [Online]. Available:
http://www.ros.org/wiki/Kinect_calibration/technical
[6] Microsoft.com
[7] Programming Guide,Microsoft Research, 2011, Kinect forWindows SDK,
Beta 1 Draft Version 1.0. [Online]. Available:
http://research.microsoft.com/en-
us/um/redmond/projects/Kinectsdk/docs/ProgrammingGuide_KinectSDK.pdf
[8] Depth mapping using projected patterns, U.S. Patent 12/522,171, 2010.
[9] Getting started with Xillinux for Zynq-7000 EPP, Xillybus Ltd, 2012
[10] Xillybus.com
[11] Linux device drivers 3th edition, O'Reilly Media, Januari 2005
[12] Analyse voor het hoger onderwijs 3de druk,Gustaaf Deen, Paul
Levrie , de boeck, 2011
[13] http://www.vesa.org/

Más contenido relacionado

Destacado

Kajian tindakan kpd3026
Kajian tindakan kpd3026Kajian tindakan kpd3026
Kajian tindakan kpd3026Adibah Huda
 
Organization chart template - Functional business (neutral)
Organization chart template - Functional business (neutral)Organization chart template - Functional business (neutral)
Organization chart template - Functional business (neutral)njpeters
 
Presentacion virus alexx_1
Presentacion virus alexx_1Presentacion virus alexx_1
Presentacion virus alexx_1alex
 
Surgical Crown Lengthening 2
Surgical Crown Lengthening 2Surgical Crown Lengthening 2
Surgical Crown Lengthening 2Jasmine
 
North American energy 2016 outlook
North American energy 2016 outlookNorth American energy 2016 outlook
North American energy 2016 outlookBloomberg LP
 
Migrating your e-store in 2017 - SuperSize Digital
Migrating your e-store in 2017 - SuperSize DigitalMigrating your e-store in 2017 - SuperSize Digital
Migrating your e-store in 2017 - SuperSize DigitalSavage Marketing
 

Destacado (8)

Kajian tindakan kpd3026
Kajian tindakan kpd3026Kajian tindakan kpd3026
Kajian tindakan kpd3026
 
Organization chart template - Functional business (neutral)
Organization chart template - Functional business (neutral)Organization chart template - Functional business (neutral)
Organization chart template - Functional business (neutral)
 
Presentacion virus alexx_1
Presentacion virus alexx_1Presentacion virus alexx_1
Presentacion virus alexx_1
 
Organization chart
Organization chartOrganization chart
Organization chart
 
Surgical Crown Lengthening 2
Surgical Crown Lengthening 2Surgical Crown Lengthening 2
Surgical Crown Lengthening 2
 
North American energy 2016 outlook
North American energy 2016 outlookNorth American energy 2016 outlook
North American energy 2016 outlook
 
Crown lengthening
Crown lengtheningCrown lengthening
Crown lengthening
 
Migrating your e-store in 2017 - SuperSize Digital
Migrating your e-store in 2017 - SuperSize DigitalMigrating your e-store in 2017 - SuperSize Digital
Migrating your e-store in 2017 - SuperSize Digital
 

Similar a Mechatronic System Design

Alle voordelen van FlexPod en EMC VSPEX converged infrastructuren op een rij
Alle voordelen van FlexPod en EMC VSPEX converged infrastructuren op een rijAlle voordelen van FlexPod en EMC VSPEX converged infrastructuren op een rij
Alle voordelen van FlexPod en EMC VSPEX converged infrastructuren op een rijProact Netherlands B.V.
 
Smart Industry | KvK Mix & Match Monday - Tom Bouws, 19 jan 2015
Smart Industry | KvK Mix & Match Monday - Tom Bouws, 19 jan 2015Smart Industry | KvK Mix & Match Monday - Tom Bouws, 19 jan 2015
Smart Industry | KvK Mix & Match Monday - Tom Bouws, 19 jan 2015CLICKNL
 
Workshop Digital Radio (03/27/2009)
Workshop Digital Radio (03/27/2009)Workshop Digital Radio (03/27/2009)
Workshop Digital Radio (03/27/2009)Maarten Verwaest
 
Masterthesis - Wat als dingen gaan denken en doen?
Masterthesis - Wat als dingen gaan denken en doen?Masterthesis - Wat als dingen gaan denken en doen?
Masterthesis - Wat als dingen gaan denken en doen?Stefan Kosters
 
417 4k Hoge Kwaliteit Video - Andres Steijaert & Frank Kresin
417   4k Hoge Kwaliteit Video - Andres Steijaert & Frank Kresin417   4k Hoge Kwaliteit Video - Andres Steijaert & Frank Kresin
417 4k Hoge Kwaliteit Video - Andres Steijaert & Frank KresinSURFfoundation
 
XML en Organisatie: vijf tegenstellingen
XML en Organisatie: vijf tegenstellingenXML en Organisatie: vijf tegenstellingen
XML en Organisatie: vijf tegenstellingenPieter van der Hijden
 
CineGrid @ VPT Alles Over Projectie
CineGrid @ VPT Alles Over ProjectieCineGrid @ VPT Alles Over Projectie
CineGrid @ VPT Alles Over ProjectieFrank Kresin
 
Webinar: 'Terug naar eenvoud in ICT | Dé roadmap voor ICT-innovatie & datacen...
Webinar: 'Terug naar eenvoud in ICT | Dé roadmap voor ICT-innovatie & datacen...Webinar: 'Terug naar eenvoud in ICT | Dé roadmap voor ICT-innovatie & datacen...
Webinar: 'Terug naar eenvoud in ICT | Dé roadmap voor ICT-innovatie & datacen...ICT-Partners
 
CineGrid Amsterdam Kick-off
CineGrid Amsterdam Kick-offCineGrid Amsterdam Kick-off
CineGrid Amsterdam Kick-offFrank Kresin
 
BA Netapp Event - Always there IT Infrastructuur
BA Netapp Event - Always there IT InfrastructuurBA Netapp Event - Always there IT Infrastructuur
BA Netapp Event - Always there IT InfrastructuurB.A.
 
A2 Bforum P1 05 De Nayer Jan Meel Fast Promoco
A2 Bforum P1 05 De Nayer   Jan Meel   Fast PromocoA2 Bforum P1 05 De Nayer   Jan Meel   Fast Promoco
A2 Bforum P1 05 De Nayer Jan Meel Fast Promocoimec.archive
 
ED3, Blauwdruk of schets. Wat heb je er aan?
ED3, Blauwdruk of schets. Wat heb je er aan?ED3, Blauwdruk of schets. Wat heb je er aan?
ED3, Blauwdruk of schets. Wat heb je er aan?Ingmar Koch
 
6. Wilbert Prinssen - Technolution
6. Wilbert Prinssen - Technolution6. Wilbert Prinssen - Technolution
6. Wilbert Prinssen - TechnolutionDutch Power
 
RONVER Systems solutions NL 2014
RONVER Systems solutions NL 2014RONVER Systems solutions NL 2014
RONVER Systems solutions NL 2014RONVER
 
Internet-of-Things met LoRaWAN; Pieter van der Hijden; HCC!amsterdam, Amstelv...
Internet-of-Things met LoRaWAN; Pieter van der Hijden; HCC!amsterdam, Amstelv...Internet-of-Things met LoRaWAN; Pieter van der Hijden; HCC!amsterdam, Amstelv...
Internet-of-Things met LoRaWAN; Pieter van der Hijden; HCC!amsterdam, Amstelv...Pieter van der Hijden
 
Ontwikkelen van een nieuwe site voor de standaard & onderzoek naar het opzett...
Ontwikkelen van een nieuwe site voor de standaard & onderzoek naar het opzett...Ontwikkelen van een nieuwe site voor de standaard & onderzoek naar het opzett...
Ontwikkelen van een nieuwe site voor de standaard & onderzoek naar het opzett...Niels Timmermans
 
The Big Switch
The Big SwitchThe Big Switch
The Big SwitchSURFnet
 

Similar a Mechatronic System Design (20)

20081007 Workshop BOM-VL WP3
20081007  Workshop BOM-VL WP320081007  Workshop BOM-VL WP3
20081007 Workshop BOM-VL WP3
 
Alle voordelen van FlexPod en EMC VSPEX converged infrastructuren op een rij
Alle voordelen van FlexPod en EMC VSPEX converged infrastructuren op een rijAlle voordelen van FlexPod en EMC VSPEX converged infrastructuren op een rij
Alle voordelen van FlexPod en EMC VSPEX converged infrastructuren op een rij
 
Smart Industry | KvK Mix & Match Monday - Tom Bouws, 19 jan 2015
Smart Industry | KvK Mix & Match Monday - Tom Bouws, 19 jan 2015Smart Industry | KvK Mix & Match Monday - Tom Bouws, 19 jan 2015
Smart Industry | KvK Mix & Match Monday - Tom Bouws, 19 jan 2015
 
Workshop Digital Radio (03/27/2009)
Workshop Digital Radio (03/27/2009)Workshop Digital Radio (03/27/2009)
Workshop Digital Radio (03/27/2009)
 
Masterthesis - Wat als dingen gaan denken en doen?
Masterthesis - Wat als dingen gaan denken en doen?Masterthesis - Wat als dingen gaan denken en doen?
Masterthesis - Wat als dingen gaan denken en doen?
 
417 4k Hoge Kwaliteit Video - Andres Steijaert & Frank Kresin
417   4k Hoge Kwaliteit Video - Andres Steijaert & Frank Kresin417   4k Hoge Kwaliteit Video - Andres Steijaert & Frank Kresin
417 4k Hoge Kwaliteit Video - Andres Steijaert & Frank Kresin
 
XML en Organisatie: vijf tegenstellingen
XML en Organisatie: vijf tegenstellingenXML en Organisatie: vijf tegenstellingen
XML en Organisatie: vijf tegenstellingen
 
CineGrid @ VPT Alles Over Projectie
CineGrid @ VPT Alles Over ProjectieCineGrid @ VPT Alles Over Projectie
CineGrid @ VPT Alles Over Projectie
 
Webinar: 'Terug naar eenvoud in ICT | Dé roadmap voor ICT-innovatie & datacen...
Webinar: 'Terug naar eenvoud in ICT | Dé roadmap voor ICT-innovatie & datacen...Webinar: 'Terug naar eenvoud in ICT | Dé roadmap voor ICT-innovatie & datacen...
Webinar: 'Terug naar eenvoud in ICT | Dé roadmap voor ICT-innovatie & datacen...
 
CineGrid Amsterdam Kick-off
CineGrid Amsterdam Kick-offCineGrid Amsterdam Kick-off
CineGrid Amsterdam Kick-off
 
BA Netapp Event - Always there IT Infrastructuur
BA Netapp Event - Always there IT InfrastructuurBA Netapp Event - Always there IT Infrastructuur
BA Netapp Event - Always there IT Infrastructuur
 
A2 Bforum P1 05 De Nayer Jan Meel Fast Promoco
A2 Bforum P1 05 De Nayer   Jan Meel   Fast PromocoA2 Bforum P1 05 De Nayer   Jan Meel   Fast Promoco
A2 Bforum P1 05 De Nayer Jan Meel Fast Promoco
 
ED3, Blauwdruk of schets. Wat heb je er aan?
ED3, Blauwdruk of schets. Wat heb je er aan?ED3, Blauwdruk of schets. Wat heb je er aan?
ED3, Blauwdruk of schets. Wat heb je er aan?
 
Scriptie
ScriptieScriptie
Scriptie
 
6. Wilbert Prinssen - Technolution
6. Wilbert Prinssen - Technolution6. Wilbert Prinssen - Technolution
6. Wilbert Prinssen - Technolution
 
RONVER Systems solutions NL 2014
RONVER Systems solutions NL 2014RONVER Systems solutions NL 2014
RONVER Systems solutions NL 2014
 
Internet-of-Things met LoRaWAN; Pieter van der Hijden; HCC!amsterdam, Amstelv...
Internet-of-Things met LoRaWAN; Pieter van der Hijden; HCC!amsterdam, Amstelv...Internet-of-Things met LoRaWAN; Pieter van der Hijden; HCC!amsterdam, Amstelv...
Internet-of-Things met LoRaWAN; Pieter van der Hijden; HCC!amsterdam, Amstelv...
 
Alice In The Cloud
Alice In The CloudAlice In The Cloud
Alice In The Cloud
 
Ontwikkelen van een nieuwe site voor de standaard & onderzoek naar het opzett...
Ontwikkelen van een nieuwe site voor de standaard & onderzoek naar het opzett...Ontwikkelen van een nieuwe site voor de standaard & onderzoek naar het opzett...
Ontwikkelen van een nieuwe site voor de standaard & onderzoek naar het opzett...
 
The Big Switch
The Big SwitchThe Big Switch
The Big Switch
 

Más de Vincent Claes

Percepio Tracealyzer for FreeRTOS on MiniZED
Percepio Tracealyzer for FreeRTOS on MiniZEDPercepio Tracealyzer for FreeRTOS on MiniZED
Percepio Tracealyzer for FreeRTOS on MiniZEDVincent Claes
 
Xilinx Vitis FreeRTOS Hello World
Xilinx Vitis FreeRTOS Hello WorldXilinx Vitis FreeRTOS Hello World
Xilinx Vitis FreeRTOS Hello WorldVincent Claes
 
Programming STM32L432 Nucleo with Keil MDK
Programming STM32L432 Nucleo with Keil MDKProgramming STM32L432 Nucleo with Keil MDK
Programming STM32L432 Nucleo with Keil MDKVincent Claes
 
Debugging Xilinx Zynq Project using ILA Integrated Logic Analyzer IP Block
Debugging Xilinx Zynq Project using ILA Integrated Logic Analyzer IP BlockDebugging Xilinx Zynq Project using ILA Integrated Logic Analyzer IP Block
Debugging Xilinx Zynq Project using ILA Integrated Logic Analyzer IP BlockVincent Claes
 
Using Virtual IO (VIO) on Xilinx ZYNQ FPGA's
Using Virtual IO (VIO) on Xilinx ZYNQ FPGA'sUsing Virtual IO (VIO) on Xilinx ZYNQ FPGA's
Using Virtual IO (VIO) on Xilinx ZYNQ FPGA'sVincent Claes
 
Profiling Xilinx Zynq Software Applications in SDK (MiniZED board)
Profiling Xilinx Zynq Software Applications in SDK (MiniZED board)Profiling Xilinx Zynq Software Applications in SDK (MiniZED board)
Profiling Xilinx Zynq Software Applications in SDK (MiniZED board)Vincent Claes
 
Workshop: Introductie tot Python
Workshop: Introductie tot PythonWorkshop: Introductie tot Python
Workshop: Introductie tot PythonVincent Claes
 
Installation Anaconda Navigator for Python Workshop
Installation Anaconda Navigator for Python WorkshopInstallation Anaconda Navigator for Python Workshop
Installation Anaconda Navigator for Python WorkshopVincent Claes
 
ZYNQ BRAM Implementation
ZYNQ BRAM ImplementationZYNQ BRAM Implementation
ZYNQ BRAM ImplementationVincent Claes
 
Implementing a Database and API for your Cloud Service
Implementing a Database and API for your Cloud ServiceImplementing a Database and API for your Cloud Service
Implementing a Database and API for your Cloud ServiceVincent Claes
 
Launching Python Cloud Services for AI/IoT Projects
Launching Python Cloud Services for AI/IoT ProjectsLaunching Python Cloud Services for AI/IoT Projects
Launching Python Cloud Services for AI/IoT ProjectsVincent Claes
 
Real Time Filtering on Embedded ARM
Real Time Filtering on Embedded ARMReal Time Filtering on Embedded ARM
Real Time Filtering on Embedded ARMVincent Claes
 
R Markdown, Rpubs & github publishing and Shiny by Example
R Markdown, Rpubs & github publishing and Shiny by ExampleR Markdown, Rpubs & github publishing and Shiny by Example
R Markdown, Rpubs & github publishing and Shiny by ExampleVincent Claes
 
Using Texas Instruments Code Composer Studio for The CC3200XL Launchpad
Using Texas Instruments Code Composer Studio for The CC3200XL LaunchpadUsing Texas Instruments Code Composer Studio for The CC3200XL Launchpad
Using Texas Instruments Code Composer Studio for The CC3200XL LaunchpadVincent Claes
 
Hogeschool PXL Smart Mirror
Hogeschool PXL Smart MirrorHogeschool PXL Smart Mirror
Hogeschool PXL Smart MirrorVincent Claes
 
Softcore vs Hardcore processor
Softcore vs Hardcore processorSoftcore vs Hardcore processor
Softcore vs Hardcore processorVincent Claes
 
Implementing an interface in r to communicate with programmable fabric in a x...
Implementing an interface in r to communicate with programmable fabric in a x...Implementing an interface in r to communicate with programmable fabric in a x...
Implementing an interface in r to communicate with programmable fabric in a x...Vincent Claes
 

Más de Vincent Claes (20)

Percepio Tracealyzer for FreeRTOS on MiniZED
Percepio Tracealyzer for FreeRTOS on MiniZEDPercepio Tracealyzer for FreeRTOS on MiniZED
Percepio Tracealyzer for FreeRTOS on MiniZED
 
Xilinx Vitis FreeRTOS Hello World
Xilinx Vitis FreeRTOS Hello WorldXilinx Vitis FreeRTOS Hello World
Xilinx Vitis FreeRTOS Hello World
 
Programming STM32L432 Nucleo with Keil MDK
Programming STM32L432 Nucleo with Keil MDKProgramming STM32L432 Nucleo with Keil MDK
Programming STM32L432 Nucleo with Keil MDK
 
Debugging Xilinx Zynq Project using ILA Integrated Logic Analyzer IP Block
Debugging Xilinx Zynq Project using ILA Integrated Logic Analyzer IP BlockDebugging Xilinx Zynq Project using ILA Integrated Logic Analyzer IP Block
Debugging Xilinx Zynq Project using ILA Integrated Logic Analyzer IP Block
 
Using Virtual IO (VIO) on Xilinx ZYNQ FPGA's
Using Virtual IO (VIO) on Xilinx ZYNQ FPGA'sUsing Virtual IO (VIO) on Xilinx ZYNQ FPGA's
Using Virtual IO (VIO) on Xilinx ZYNQ FPGA's
 
Profiling Xilinx Zynq Software Applications in SDK (MiniZED board)
Profiling Xilinx Zynq Software Applications in SDK (MiniZED board)Profiling Xilinx Zynq Software Applications in SDK (MiniZED board)
Profiling Xilinx Zynq Software Applications in SDK (MiniZED board)
 
Workshop: Introductie tot Python
Workshop: Introductie tot PythonWorkshop: Introductie tot Python
Workshop: Introductie tot Python
 
Installation Anaconda Navigator for Python Workshop
Installation Anaconda Navigator for Python WorkshopInstallation Anaconda Navigator for Python Workshop
Installation Anaconda Navigator for Python Workshop
 
ZYNQ BRAM Implementation
ZYNQ BRAM ImplementationZYNQ BRAM Implementation
ZYNQ BRAM Implementation
 
Implementing a Database and API for your Cloud Service
Implementing a Database and API for your Cloud ServiceImplementing a Database and API for your Cloud Service
Implementing a Database and API for your Cloud Service
 
Launching Python Cloud Services for AI/IoT Projects
Launching Python Cloud Services for AI/IoT ProjectsLaunching Python Cloud Services for AI/IoT Projects
Launching Python Cloud Services for AI/IoT Projects
 
Real Time Filtering on Embedded ARM
Real Time Filtering on Embedded ARMReal Time Filtering on Embedded ARM
Real Time Filtering on Embedded ARM
 
R Markdown, Rpubs & github publishing and Shiny by Example
R Markdown, Rpubs & github publishing and Shiny by ExampleR Markdown, Rpubs & github publishing and Shiny by Example
R Markdown, Rpubs & github publishing and Shiny by Example
 
Using Texas Instruments Code Composer Studio for The CC3200XL Launchpad
Using Texas Instruments Code Composer Studio for The CC3200XL LaunchpadUsing Texas Instruments Code Composer Studio for The CC3200XL Launchpad
Using Texas Instruments Code Composer Studio for The CC3200XL Launchpad
 
Hogeschool PXL Smart Mirror
Hogeschool PXL Smart MirrorHogeschool PXL Smart Mirror
Hogeschool PXL Smart Mirror
 
Softcore vs Hardcore processor
Softcore vs Hardcore processorSoftcore vs Hardcore processor
Softcore vs Hardcore processor
 
MySQL / PHP Server
MySQL / PHP ServerMySQL / PHP Server
MySQL / PHP Server
 
Implementing an interface in r to communicate with programmable fabric in a x...
Implementing an interface in r to communicate with programmable fabric in a x...Implementing an interface in r to communicate with programmable fabric in a x...
Implementing an interface in r to communicate with programmable fabric in a x...
 
fTales workshop
fTales workshopfTales workshop
fTales workshop
 
Maker Revolution
Maker RevolutionMaker Revolution
Maker Revolution
 

Mechatronic System Design

  • 1. Afstudeerwerk ingediend tot het behalen van het diploma van master in de industriële wetenschappen: opleiding elektronica ICT Promotoren: Drs. Stijn Duchateau (Xios Hogeschool) ing. Vincent Claes (Xios Hogeschool) Steven Palmaers MSc (Xios Hogeschool) Academiejaar 2012 – 2013 FPGA accelerated vision XIOS HOGESCHOOL LIMBURG DEPARTEMENT TOEGEPASTE INGENIEURSWETENSCHAPPEN Tobias Adryan
  • 2.
  • 3. Inhoudsopgave Dankwoord I Abstract II Lijst van afkortingen en symbolen..................................................................III Lijst van figuren....................................................................................................V Lijst van tabellen................................................................................................. VI 1. Inleiding........................................................................................................... 7 1.1 PXL ............................................................................................................. 7 1.2 MSD: Mechatronic System Design............................................................. 7 1.3 Wat is een FPGA ........................................................................................ 8 1.3.1 Inleiding........................................................................................ 8 1.3.2 De opbouw .................................................................................... 9 1.3.3 Wat is de Zynq............................................................................ 10 1.3.4 Programma's schrijven voor FPGA's ......................................... 11 2 De case 12 Het algoritme ....................................................................................................... 14 2.1 De opstelling............................................................................................. 14 2.2 Voorwaarden............................................................................................. 14 2.3 Mathematisch concept.............................................................................. 15 3 Kinect 18 3.1 Inleiding.................................................................................................... 18 3.2 Sensoren ................................................................................................... 18 3.3 Camera's ................................................................................................... 19 3.4 Structured light........................................................................................ 21 3.5 Precisie van de Kinect .............................................................................. 22 3.5.1 inleiding...................................................................................... 22 3.5.2 Berekening van de resolutie....................................................... 22
  • 4. 3.5.3 Haalbaarheid van vereisten....................................................... 24 3.6 Kinect drivers ........................................................................................... 25 3.6.1 Microsoft..................................................................................... 25 3.6.2 Openscource................................................................................ 25 4 Zedboard........................................................................................................ 26 4.1 Specificaties.............................................................................................. 26 4.2 Waarom het Zedboard .............................................................................. 26 5 Xillinux 28 5.1 Inleiding.................................................................................................... 28 5.2 Toepassingen en kenmerken.................................................................... 28 5.3 Userspace vs kernelspace......................................................................... 29 5.4 Xillybus..................................................................................................... 29 6 Interfaces....................................................................................................... 31 6.1 inleiding.................................................................................................... 31 6.2 Kinect naar CPU ...................................................................................... 31 6.3 CPU naar FPGA....................................................................................... 32 6.4 FPGA naar HDMI .................................................................................... 32 6.5 FPGA naar CPU....................................................................................... 33 7 Discussie ........................................................................................................ 34 7.1 De meetopstelling..................................................................................... 34 7.2 De verwachtingen..................................................................................... 35 7.3 De metingen.............................................................................................. 37 8 Conclusie en toekomstvisie........................................................................ 39 8.1 Conclusie................................................................................................... 39 8.2 Mogelijke verbeteringen........................................................................... 39 Referenties 40
  • 5. I
  • 6. I Dankwoord Eerst en voor al wil ik mijn ouders bedanken, om dit allemaal mogelijk te maken en voor hun steun doorheen mijn schoolcarrière. Daarnaast wil ik ook mijn promotoren Vincent Claes, Steven Palmaers en Stijn Duchateau bedanken voor hun geduld en goede raad. Niet te vergeten ook al de andere mensen die met mij hebben moeten omgaan tijdens deze soms stressvolle periode, zodat ik mij ten volle kon concentreren op mijn master thesis. Tobias Adryan
  • 7. II Abstract De kinect is al jaren in gebruik in de gaming industrie, de prijs voor zo een camera is daardoor ook buitengewoon laag. Dit maakt de Kinect ook interessant voor andere toepassingen. Omdat andere vergelijkbare systemen vele malen meer kosten, opent de Kinect een brede waaier van nieuwe toepassingen. Bij dit onderzoek gaat het om zo een nieuw toepassingsgebied te verkennen. Er werd gekozen voor een testcase die een volume berekening doet. De berekening van dit volume werd er gebruik gemaakt van het Zedboard. Het Zedboard is een low-cost development board dat ondersteunt wordt door een open source community. Bij systemen waar het gaat om visueel detecteren en analyseren van voorwerpen of personen wordt veelal gebruik gemaakt van klassieke processoren. Maar deze zijn gebouwd om sequentieel bewerkingen uit te voeren, dit zorgt voor een probleem als het om beeldverwerking gaat. Namelijk dat bij veel toepassingen de responstijd erg groot wordt en dat is meestal absoluut niet in het voordeel van gebruiksgemak. Het probleem bij processoren is dat ze altijd maar één handeling tegelijk kunnen doen en bij beeldverwerking komen grote hoeveelheden data voor, als deze sequentieel verwerkt moeten worden zorgt dit voor een enorme bottleneck bij de processor. Daarom wordt hier dus een FPGA gebruikt om de zware bulk berekeningen over te nemen, deze is veel beter geschikt voor grote blokken data parallel te verwerken. Het doel van dit onderzoek is dus om zo een processor-FPGA omgeving te ontwikkelen die het beste van beide werelden kan gebruiken. Hierbij wordt er gebruik gemaakt van een Xilinx zynq-7000, dit is een chip van Xilinx die een dualcore ARM cortex A9 processor en een Artix 7 FPGA met elkaar verbind in één package. Dat is dan ook de meest geschikte basis voor een hardware accelerated video processor.
  • 8. III Lijst van afkortingen en symbolen ADC AES AMBA ARM ASIC AXI CLB CLI DDR DMA DSP DVI FIFO FPGA GPIO GUI HDL HDMI HPC I2C I/O IOB IP OLED PCI PCIe PL PS RISC RSA SD SDRAM SHA SoC Analog Digital Convertor Advanced Encryption Standard Advanced Microcontroller Bus Architecture Advanced RISC Machine Application-specific integrated circuit Advanced eXtensible Interface Configurable Logic BLock Command Line Interface Double Data Rate (SDRAM) Direct Memory Access Digital Signal Processing Digital Visual Interface First In First Out Field Programmable Gate Array General Purpose I/O Graphical User Interface Hardware Descriptive Language High-Definition Multimedia Interface High Performance Computing Inter Integrated Circuit Input/Output I/O Block Intellectual Property Organic Light Emitting Diode Peripheral Component Interconnect PCI express Programmable Logic Processing System Reduced Instruction Set Computer Rivest Shamir Adleman Secure Digital Synchonous Dynamic Random Access Memory Secure Hash Algorithm System On Chip
  • 9. IV SPI SRAM TMDS UART USB USB OTG VESA VGA VHSIC Serial Peripheral Interface Shadow Random Access Memory Transition-Minimized Differential Signaling Universal Asynchronous Reciever/Transmitter Universal Serial Bus USB On The GO Video Electronics Standards Association Videa graphics Array Very High Speed Integrated Circuit
  • 10. V Lijst van figuren Figuur 1 Opbouw van een FPGA.................................................................................9 Figuur 2 Opbouw Zynq..............................................................................................10 Figuur 3 Testcase pixel grootte .................................................................................13 Figuur 4 Testcase opbouw .........................................................................................14 Figuur 5 Vormen beperking ......................................................................................15 Figuur 6 Integraal .....................................................................................................15 Figuur 7 Riemann......................................................................................................16 Figuur 8 Meting van op verschillende afstanden Wolfram.com (Riemann).............17 Figuur 9 Kinect onderdelen.......................................................................................19 Figuur 10 Kinect camera's.........................................................................................20 Figuur 11 IR pattroon................................................................................................21 Figuur 13 Beeldhoek met variablelen.......................................................................23 Figuur 14 Zedboard geheel........................................................................................26 Figuur 15 Zedboard opbouw......................................................................................26 Figuur 16 Xillybus FIFO's.........................................................................................30 Figuur 17 Interfaces geheel.......................................................................................31 Figuur 18 FPGA-HDMI interface..............................................................................32 Figuur 19 Meetopstelling ..........................................................................................34 Figuur 23 Schaduwprobleem.....................................................................................38
  • 11. VI Lijst van tabellen Tabel 1 Kinect eigenschappen...................................................................................20 Tabel 2 Kinect eigenschappen[7][1][2] ......................................................................22 Tabel 3 Positieve afwijking........................................................................................35 Tabel 4 Negatieve afwijking......................................................................................36 Tabel 5 Meetresultaten..............................................................................................37
  • 12. 7 1. Inleiding 1.1 PXL Hogeschool PXL is vanaf oktober 2013 een hogeschool in Belgisch Limburg met vestigingen in Hasselt, Genk en Diepenbeek. Het is een zelfstandige hogeschool, niet direct gebonden aan een onderwijsnet. Door haar actief pluralistisch karakter werkt PXL samen met alle onderwijsnetten. De hogeschool is ontstaan uit de fusie tussen de XIOS Hogeschool Limburg en de Provinciale Hogeschool Limburg. Samen met de Universiteit Hasselt behoort Hogeschool PXL tot de Associatie Universiteit- Hogescholen Limburg. De hogeschool wordt bestuurd door een Raad van Toezicht en een Raad van Bestuur. Voorzitter is Frank Smeets, covoorzitter is Luc Houbrechts en algemeen directeur is Ben Lambrechts. 1.2 MSD: Mechatronic System Design Dit project heeft plaatsgevonden binnen het PWO-project MSD, MSD staat voor Mechatronic System Design. MSD is een nieuw PWO-onderzoeksproject dat de professionele opleidingen van elektronica-ict, elektromechanica en toegepaste informatica samen brengt. Zo kunnen grotere multidisciplinaire applicaties verwezenlijkt worden. Het project combineert Mechanische constructies met state-of-the-art elektronica. Daarnaast wordt de HMI (Human Machine Interface) afgehandeld door smartdevices die op iOS of Android draaien. Het is ook daarom dat dit onderzoeksproject met de Kinect geknipt is voor MSD. De Kinect is een nieuwe vorm van HMI waarbij er geen fysiek contact meer nodig is tussen het toestel en de gebruiker. Hiernaast wordt bij machinebouw veel visie toegepast, bij het analyseren van inkomende goederen of kwaliteitscontrole aan het einde van een process.
  • 13. 8 1.3 Wat is een FPGA 1.3.1 Inleiding De FPGA of Field-Programmable Gate Array is fundamenteel gezien een herprogrammeerbare silicium chip. Door gebruik te maken van programmeerbare logische blokken die aan elkaar gehangen worden door inter-connecties, kan je custom hardware maken. Het grote voordeel van FPGA's de herprogrammeerbaarheid, dit maakt ontwerpen waarin een FPGA zit uiterst flexibel. Zo zal bijvoorbeeld door een puur softwarematige update een nieuwe interface kunnen worden voorzien voor hardware die op voorhand niet gekend was. Een ander groot voordeel van de FPGA is de mogelijkheid op in real-time dingen te gaan verwerken en zelfs volledig onafhankelijk en parallel . Naast de vele voordelen zijn er natuurlijk ook wel nadelen. Zo zal een schakeling in een FPGA altijd trager zijn als die in een ASIC (Application Specific Integrated Circuit). Hierbij zal de FPGA ook meer energie gaan verbruiken. Hiernaast is het omzetten van de HDL (Hardware Descriptive Laguage) naar een fysieke schakeling in de FPGA uiterst complex en neemt dus ook veel tijd in beslag, dit vertraagd het ontwikkelingsproces. Natuurlijk is het ontwikkelen van een ASIC ook uiterst duur en zal de keuze voor een FPGA meestal gemaakt worden voor een laag volume productie of een product dat uiterst flexibel moet zijn. Dit hoofdstuk zal versimpeld uitleggen wat een Field-Programmable Gate Array eigenlijk is.
  • 14. 9 1.3.2 De opbouw Figuur 1 Opbouw van een FPGA De Field-Programmable Gate Array is hoofdzakelijk opgebouwd uit drie elementen, IOB's, CLB's en routing channels. IOB's zijn Input Output Blocks, zij zijn de buffers die de logica met de buitenwereld verbinden. De CLB's zijn de Common Logic Blocks waarin de programmeerbare logica zit, deze layout maakt de routing veel eenvoudiger. De gedetailleerde samenstelling van de CLB's is verschillend voor verschillende fabrikanten en verschillende series van FPGA's. Daarnaast zijn er nog de Routing channels die alles met elkaar verbinden, dit is een netwerk van "draden" die met elkaar zijn verbonden via elektronische "schakelaars".
  • 15. 10 1.3.3 Wat is de Zynq Zoals te zien op Figuur 2 is de Zynq een all-in-one oplossing voor toepassingen die een sterke applicatie processor nodig hebben naast een custom co-processor of programmeerbare logica om custom interfaces te kunnen maken. Figuur 2 Opbouw Zynq Het groene deel in het midden van figuur 2 illustreert de inhoud van de applicatie processor. Het gele deel beschrijft de inhoud van de FPGA. De inhoud van de FPGA is natuurlijk zeer beperkt, hier zijn alleen interfaces beschreven. De rest van de invulling van de FPGA is te voorzien van de ontwerper.
  • 16. 11 1.3.4 Programma's schrijven voor FPGA's Door de complexiteit van de FPGA's is er zware software nodig om deze te programmeren. De FPGA ontwerper schrijft zijn code in HDL (Hardware Descriptive Laguage) en definieert hiermee zijn hardware design. De meest gebruikte HDL hier in europa is VHDL ( VHSIC Hardware Descriptive Laguage), in Amerika wordt er gebruikt gemaakt van Verilog. Maar al deze code is nutteloos zonder de UCF (User Constraints File) file dit het bestand waarin de in en uitgangen worden bepaald de zogenaamde netlist. Dit is meteen ook de reden waarom HDL code zo portable is. De volledige code staat los van de hardware waar hij op draait (op een paar uitzonderingen na) en is alleen aan zijn hardware gebonden via de netlist.
  • 17. 12 2 De case Het is de bedoeling om een volume meting te kunnen uitvoeren van objecten in real time. Dat wilt dus zeggen dat het volume van pakjes die op een lopende band voorbij komen kan gemeten worden. De opstelling wordt opgebouwd met een Microsoft Kinect camera en een lopende band. De camera hangt boven de band om zo de objecten die voorbij komen te kunnen meten. Tijdens het proces blijft de Kinect camera op exact dezelfde plaats hangen. Momenteel is dit beperkt tot één Kinect en dus is er ook een beperking op de vorm van de te meten voorwerpen, de vereiste resolutie voor deze toepassing is ±1mm. Meer informatie hierover is te vinden in hoofdstuk 3 het algoritme.
  • 18. 13 Figuur 3 Testcase pixel grootte Figuur 3 toont een statisch platform omdat dit een testcase is. Met dit systeem zou een volledig geautomatiseerd systeem kunnen worden gebouwd dat zelf pakjes sorteert naar volume en vorm met een optimale benutting van de beschikbare ruimte. Dit kan bijvoorbeeld een postorder bedrijf de mogelijkheid geven om pakjes optimaler te stockeren.
  • 19. 14 Het algoritme 2.1 De opstelling Het doel van het algoritme is om het volume van een object te kunnen berekenen. Aangezien de opstelling momenteel beperkt is tot één camera moet er worden van uitgegaan dat het object één vlakke kant heeft waarmee hij op of tegen een vlak rust zoals geïllustreerd op figuur 4 hieronder. Figuur 4 Testcase opbouw 2.2 Voorwaarden De vorm van het object is door deze opstelling ook beperkt, als het object naar onder toe versmalt wordt er bij deze opstelling eigenlijk het volume van een object berekend dat zijden heeft die recht naar beneden gaan.
  • 20. 15 Figuur 5 Vormen beperking 2.3 Mathematisch concept Het algoritme bestaat fundamenteel uit een integraal voor iedere rij pixels van het dieptebeeld, hieronder is een voorbeeld uitgewerkt voor een 2 dimensioneel figuur. Hieronder zichtbaar op figuur 6 een versimpeld voorbeeld hiervan, namelijk een functie van ( ) . Figuur 6 Integraal De oppervlakte onder de curve is wat van belang is. Die oppervlakte kan gevonden worden door de integraal van deze functie te berekenen. Maar dit kan ook benaderd worden met de Riemann som, het dieptebeeld op de computer ziet er vloeiend uit, net alsof het een functie zou zijn die continu is, maar niets is minder waar. Het is een digitaal beeld en bestaat dus eigenlijk uit pixels of samples, dus
  • 21. 16 zou het een nutteloos werk zijn om er een continue functie op te fitten om deze dan uit te rekenen in software die volgens de Riemann som werkt. Bij een Riemann som gaat het immers om de functie op te delen in kleine delen en deze dan op te tellen. Voor deze toepassing van de Kinect volstaat het dus volledig om de zogenaamde benadering te gebruiken die de Riemann som voorstelt. Zoals op figuur 7 hieronder te zien volgen de blokjes van de samples niet exact de curve. Dit is een probleem dat veroorzaakt wordt door de beperkte resolutie van de dieptecamera van de Kinect. De problemen en afwijkingen die dit met zich mee brengt worden besproken in hoofdstuk 3.5 over de precisie van de Kinect. Figuur 7 Riemann Maar in de Kinect zijn er niet 2 dimensies maar wel 3 dimensies, namelijk x, y en z. Waarbij x en y respectievelijk de horizontale en de verticale verplaatsing in het vlak tegenover de Kinect voorstelt en de z component diepte (afstand) tot de Kinect sensor voorstelt. Dit is niet de afstand van het object tot de diepte camera maar de afstand van het vlak waarin de 2 camera’s en de IR projector zich bevinden[7]. Op die mannier definieert de Kinect een volledig lineair orthogonaal assenstelsel. Figuur 8 hieronder illustreert de afwijking van de gemeten diepte tegenover de echte vorm van het voorwerp.
  • 22. 17 Figuur 8 Meting van op verschillende afstanden Wolfram.com (Riemann) Op figuur 8 is te zien hoe de halve bol wordt benaderd door de meting op verschillende afstanden, de resolutie waarmee de het object wordt gemeten ligt in direct verband met de afstand van de sensor tot het object. In hoofdstuk 3.5 over de precisie van de Kinect wordt hier meer over verteld.
  • 23. 18 3 Kinect 3.1 Inleiding Oorspronkelijk ontwikkeld als de "next generation gaming interface" voor de Xbox 360, de microsoft Kinect bevat een reeks aan sensoren, de meest prominente uit de reeks is de primesense afstandssensor.[2] Goedkope afstandssensoren waren altijd al aantrekkelijk als alternatief voor dure laser scanners voor werkgebieden zoals indoor mapping, bewaking of robotica. De Kinect was dan misschien wel ontworpen als "natural interaction in a computer game environment" maar door de aard van de data die de Kinect verzameld heeft de Kinect al veel aandacht naar zich getrokken. Van onderzoekers in onderzoeksvelden als indoor mapping en 3D modellering.[1] 3.2 Sensoren De Microsoft Kinect wordt vaak valselijk als camera beschreven, daarbij kan de Kinect eigenlijk beter beschreven worden als een "sensor array" omdat hij eigenlijk een vrij groot aantal sensoren bevat. Bij het uit elkaar halen van de Kinect vind je: een rgb kleuren camera, een IR projector, een IR camera, een microfoon array en een 3-as accelerometer. Ook al zijn er zoveel sensoren zal hier vooral gefocust worden op de camera's omdat deze de Kinect echt wel uniek maken.[2]
  • 24. 19 Figuur 9 Kinect onderdelen 3.3 Camera's Zoals hierboven reeds vermeld heeft de Kinect twee camera's hierbij gaat het om een kleuren camera en een IR camera. Ze staan beiden langs elkaar in het midden van de Kinect op ongeveer 2,5cm afstand van elkaar. De projector zit ongeveer 7,5cm links van het midden (vooraanzicht).
  • 25. 20 Figuur 10 Kinect camera's Deze afmetingen zijn bekomen door de stereo calibratie methode [4][5] Tabel 1 [3] bevat de specificaties van de Kinect volgens Microsoft[7]. Tabel 1 Kinect eigenschappen Sensor eigenschap Waarde / Bereik Beeldhoek 57°horiz., 43° vert. Tilt motor hoek ±28° Resolutie color stream 640x480 (VGA) Resolutie diepte stream 320x240 (QVGA) Nominale Resolutie (diepte) op 2m 1mm Nominale Resolutie (horiz.-vert.) op 2m 3mm Framerate ±30Hz Diepte bereik 0,8m - 3,5m Skeletal tracking bereik 0,8m - 3,5m Audio formaat 16 kHz, 16-bit mono pulse code modulatie Audio ingangskarakteristieken Array van 4 microfoons met 24-bit ADC
  • 26. 21 met ingebouwde DSP voor noise en echo onderdrukking Interface USB + externe stroombron 3.4 Structured light De Kinect straalt een IR patroon uit op de omgeving om de diepte te bepalen zoals te zien op figuur 11 [3]. Zoals op figuur 11 te zien straalt de projector een pseudo random patroon uit maar deze wordt vervormd door de IR camera. De projector die dit doet wordt ook wel structured light projector genoemd[2]. Figuur 11 IR pattroon Deze foto komt van een externe IR camera, aangezien de IR camera van de Kinect het beeld vervormd. Elk puntje van dat patroon is uniek en kan onderscheiden worden van de anderen. Het exacte algorithme dat de Kinect gebruikt is niet bekend maar in het patent[7] is er sprake dat er gebruik wordt gemaakt van pixelshifts om de diepte te kunnen meten. Dit met behulp van een gecallibreerd referentie beeld. Een speculatieve maar gedetailleerde discussie hierover is te vinden op de ROS.org wiki pagina[5] over Kinect kalibrering.
  • 27. 22 3.5 Precisie van de Kinect 3.5.1 inleiding Bij het ontwikkelen van een meetopstelling is het natuurlijk van belang om van tevoren te weten wat voor een precisie van de opstelling kan verwacht worden. De Kinect sensor registreert kleur -en diepte beelden aan een snelheid van 30 beelden per seconde. Deze beelden worden geregistreerd in een resolutie van 640x480. Verdere eigenschappen van de Kinect zijn te vinden in de tabel hieronder. Tabel 2 Kinect eigenschappen[7][1][2] Sensor eigenschap Waarde / Bereik Beeldhoek 57°horiz., 43° vert. Tilt motor hoek ±28° Resolutie color stream 640x480 (VGA) Resolutie diepte stream 320x240 (QVGA) Nominale Resolutie (diepte) op 2m 1mm Nominale Resolutie (horiz.-vert.) op 2m 3mm Framerate ±30Hz Diepte bereik 0,8m - 3,5m Skeletal tracking bereik 0,8m - 3,5m Audio formaat 16 khz, 16-bit mono pulse code modulatie Audio ingangskarakteristieken Array van 4 microfoons met 24-bit ADC met ingebouwde DSP voor noise en echo onderdrukking Interface USB + externe stroombron 3.5.2 Berekening van de resolutie Met de informatie over de beeldhoeken en de resolutie waarmee de beelden worden vastgelegd, kunnen functies worden opgesteld om de precisie van de Kinect te beschrijven. De afstand tussen het object en de sensor wordt gemeten tussen de oppervlakte van het object tot het brandpunt van de camera. Om de precisie van de Kinect te kunnen berekenen kan gebruik gemaakt worden van de driehoeksmeetkunde. De driehoek die voor de berekening van belang is, is hieronder getekend op figuur 12, samen met de variabelen die voor deze
  • 28. 23 berekening van belang zijn. Deze driehoek kan gebruikt worden voor de horizontale en de verticale afmetingen van de pixels te berekenen. De variabel α is de beeldhoek, A is de werkelijke breedte van het beeld. Om de formules simpeler te maken is ervoor gekozen om maar de halve driehoek te gebruiken in de berekening van daar dus ook de variabelen α/2 en A/2. De variabele X stelt de afstand van het object tot het brandpunt van de camera voor en de y variabele die niet op de figuur 13 te zien is, stelt respectievelijk de breedte of de hoogte van een pixel voor. Volgens de specificaties van Microsoft zelf zouden de pixels perfect vierkant moeten zijn, om dit te controleren en ter zelfcontrole worden hieronder de afmetingen van de pixels zowel in de horizontale als in de verticale richting berekend. Figuur 12 Beeldhoek met variablelen In de horizontale richting is α 57° en A = Yh*640p, α/2 is dus 28,5° en A/2 = Yh *320p. Om Y te vinden is er een vergelijking nodig, hiervoor wordt de tangensregel gebruikt.
  • 29. 24 ( ) Omgevormd naar een vergelijking die als oplossing de Y variabele heeft, geeft dit dan. ( ) In de verticale richting kan dezelfde formule gebruikt worden maar dan met de resolutie en de hoeken van die richting, de formule zou er als volgt uit zien. ( ) Een pixel vertegenwoordigd volgens Microsoft een oppervlakte van 3 mm x 3 mm als het object zich 2 meter van de camera bevind. De net bekomen formules kunnen hiermee dus gecontroleerd worden. ( ) ( ) Hierbij is te zien dat Microsoft wel behoorlijk ongeveer is geweest met zijn specificaties. 3.5.3 Haalbaarheid van vereisten Als een precisie van 1mm moet bereikt worden kan daarom niet gezegd worden dat de pixel 1mmx1mm moet vertegenwoordigen, men kan wel stellen dat de pixel 1mm² moet zijn in dat geval zou * gelijk moeten zijn aan 1mm², dat geeft dus. ( ) ( ) √( ( ) ) ( ( ) ) Om een resolutie van 1mm te kunnen hebben moet de Kinect 60cm van het object verwijderd zijn. Dat wil zeggen dat dit niet haalbaar is met de standaard Kinect die je bij de Xbox 360 krijgt, bij de standaard Kinect moet het object minimaal 80cm van de camera verwijderd zijn anders kan de Kinect de meting niet
  • 30. 25 uitvoeren. De Kinect for windows daarintegen heeft een "near-mode" dan kan er gekozen worden om dichter bij te kunnen meten, namelijk vanaf 40 cm dit beperkt de maximale diepte tot 3m, de standaard Kinect heeft een bereik van 80cm tot 4m, maar zelfs in deze near-mode mag het object in kwestie maximaal 20cm hoog zijn of het valt buiten de meetbare zone. 3.6 Kinect drivers Ondanks dat de Kinect door microsoft is uitgebracht is hij eigenlijk niet ontworpen door Microsoft maar door Primesense. Primesense had voordat ze in de handen van Microsoft terecht kwamen een nauwe band met OpenNI, die nu de opensource verder ondersteunt. 3.6.1 Microsoft Microsoft heeft de Kinect natuurlijk eerst en vooral uitgebracht voor de Xbox360. Van dag één dat de Kinect uit was zijn de hackers en modders aan het werk gegaan om de Kinect aan het werken te krijgen aan de PC op Linux. Het heeft dan ook niet lang geduurd voordat de Kinect gekraakt was en kon uitgelezen worden op de pc. Microsoft heeft zich zeer negatief opgesteld tegenover dit gebeuren. Maar later zag Microsoft zelf in dat het een gevecht tegen de bierkaai was. Dus heeft Microsoft toen besloten om deze groep mensen te ondersteunen. Microsoft is toen op de proppen gekomen met Kinect for Windows. Microsoft ondersteunt ook alleen maar Kinect voor Windows. Ookal werkt hij ook op ander besturingssystemen die beter over weg kunnen met de data. 3.6.2 Opensource Natuurlijk is OpenNI nadat Primesense werd overgenomen door Microsoft niet gestopt. OpenNI ondersteunt de opensource beweging nog steeds met broncode voor zijn software en proprietary binaries die nodig zijn om te kunnen communiceren met de Primesense SoC die in de Kinect zit. OpenNI voorziet deze binaries zowel voor Windows als voor Linux en zelfs voor Linux op ARM!
  • 31. 26 4 Zedboard 4.1 Specificaties Het zedboard is een evaluatie en ontwikkelingsbord dat gebaseerd is op de Xilinx-7000 All Programmable SoC (AP Soc). Hij combineerd een dualcore Cortex-A9 processor systeem(PS) met 85,000 serie-7 programmeerbare logica cellen van de Artix FPGA, de Zynq-7000 AP SoC kan ingezet worden in een breed spectrum van toepassingen. Het zedboard is een bord met vele mogelijkheden en on-board periferie en uitbreidingsmogelijkheden dit maakt het de ideale kandidaat voor vele toepassingen.  Figuur 14 Zedboard opbouw 4.2 Waarom het Zedboard Het Zedboard is comunity-based development board voor de Zynq het bied een volledig pakket aan I/O met de Zynq 7020 voor een uiterst lage prijs, het is daarmee ook het enige Zynq development board dat binnen het budget paste. Er werd voor de Zynq gekozen omdat dit platform een Dual-core ARM A9 applicatie processor heeft met in dezelfde chip een Atrix 7 FPGA. Dit was de perfecte basis voor dit project aangezien dan de volledige bewerking kan gebeuren op één enkele chip! Figuur 13 Zedboard geheel
  • 32. 27
  • 33. 28 5 Xillinux 5.1 Inleiding De Xillinux distributie is zowel software voor de ARM core als voor de FPGA (PL), het is een "volledige" linux distributie, zelfs met een grafische desktop omgeving. Je kan er via de USB OTG kabel een keyboard en muis aansluiten, en via de VGA connector ook een monitor. Het is niet alleen een demo applicatie maar ook een kick-start development kit, die de integratie tussen de linux omgeving op de ARM processor en de programmable Logic (PL) in de FPGA. Een demo configuratie van de Xillybus IP core is inbegrepen in de logica van Xillinux. Je kan natuurlijk ook zelf een custom core programmeren. Of één downloaden van de Core factory met de nodige licenties. Xillinux is gebaseerd op Ubuntu 12.4LTS voor de ARM processor, met deze linux distributie kan het zedboard zelfs bijna dienen als een echte desktop computer. Hij gebruikt de SD kaart als harde schijf en via de USB OTG aansluiting wordt usb muis en toetsenbord aangesloten, via de VGA poort kan je gewoon ieder scherm dat conform is aan de VESA standaard aansluiten. Naast de desktop omgeving kan je Xillinux ook gebruiken zonder de desktop GUI, voor taken die meer vragen van de processor kan de GUI gewoon weg gelaten worden en in de CLI verder werken[10]. Dit is ook gebeurt in de demo applicatie om wat meet headspace te hebben om een vloeiende werking te garanderen. 5.2 Toepassingen en kenmerken Er zijn vele mogelijke toepassingen voor dit systeem, de belangrijkste zijn hier opgelijst.  Data capturing  HPC (high performance computing)  FPGA control vanaf de host  Debugging  Cryptografie De belangrijkste kenmerken van de Xillybus zijn:  Tot 160 FIFO's via dezelfde bus
  • 34. 29  Niet systeem gebonden (xilinx/altera,Linux/windows)  Gebruikt DMA als communicatie naar de host  Ondersteunt PCI Express of AXI bus  Programmeren gebeurt in de userspace  Geen specifieke driver nodig op de host 5.3 Userspace vs kernelspace Er is een groot verschil tussen drivers die in de userspace geschreven worden en drivers die in de kernelspace liggen. Een userspace driver is eenvoudiger te schrijven, maar er ontstaan problemen als er echt diepgaande toegang nodig is tot bepaalde adressen of hardware functies. In gevallen dat er zo een diepgaande toegang nodig is wordt normaalgezien geopteerd om de driver in kernel space te schrijven. Een driver in de kernelspace functioneert als module, een zogenaamde kernel module. Een programma dat in de kernel space draait heeft absolute bevoegdheid over alles, dat is meteen ook het grote gevaar met programma's die in de kernelspace draaien. Hiernaast moet alles tussen de kernel driver en de rest van het operating system direct en low level gebeuren. Fouten die hier gemaakt worden zijn vaak nefast voor de rest van het systeem[11]. 5.4 Xillybus De Xillybus is een end-to-end oplosing voor data transport van de linux host en de FPGA, in de context van deze thesis gaat het alleen maar over de communicatie met Linux, maar de Xillybus kan met andere development platformenen zelfs ook met Microsoft Windows gebruikt worden, dit gebeurt dan via de PCI bus. In een embedded omgeving op een ARM-processor wordt de AMBA bus (AXI3/AXI4) gebruikt. De Xillybus IP core kan dus gebruikt worden voor PC based systemen maar ook in een embedded omgeving. Momenteel is Xillybus for Zynq alleen nog maar beschikbaar op het zedboard.
  • 35. 30 Figuur 15 Xillybus FIFO's Zoals boven op figuur 16 te zien, moet de logica van de toepassing alleen maar communiceren met FIFO's die mee in de logica staan. Zo zal de toepassing in de logica de data in de onderste FIFO op het diagram schrijven en zal de Xillybus IP core merken dat er data beschikbaar is in de FIFO. Kort daarna zal de Xillybus IP core beginnen met lezen en de data doorsturen naar de host en hierdoor de data leesbaar maken in de userspace van de applicatie op de ARM processor. Daarna handelt de axi bus de verdere communicatie af, deze genereert DMA aanvragen voor de ARM core bus. De applicaties op de ARM core gebruiken device files om te communiceren met AXI bus, deze device files dienen als een soort pijpleidingen om data heen en weer te sturen naar de programmeerbare logica. Dit maakt het eenvoudiger om informatie over te dragen van de ARM naar de FPGA. Verder moet hierdoor alleen maar in de userspace geprogrammeerd worden en worden de gevaren van in de kernelspace te programmeren omzeild[10].
  • 36. 31 6 Interfaces 6.1 inleiding Bij een ontwerp waarbij er een besturingssysteem zijn data haalt van een extern toestel en deze verder leid naar de FPGA om dan weer data terug te krijgen van de FPGA. Terwijl de FPGA ook zijn data toont op een extra scherm. Zijn de interfaces het belangrijkste deel van het project. Hierbij is vooral timing van belang, omdat er in een FPGA niet per definitie wordt gewerkt met processen doen zich daar een paar problemen voor. Daarom moeten al deze interfaces ontworpen worden met desynchronisatie en synchronisatie. Figuur 16 Interfaces geheel 6.2 Kinect naar CPU De Kinect wordt aangesloten via een USB-poort, dit is voor het Zedboard via een USB OTG kabel en een USB HUB, dit is dus gevoelig voor grote hoeveelheden data die via één USB controller moeten passeren. De twee datastreams die van de Kinect komen zijn samen goed voor een datastream van ongeveer 20MB/s. Omdat er maar gebruik gemaakt wordt van één Kinect camera en aangezien de andere toestellen die zijn aangesloten via de HUB een toetsenbord en een muis zijn, vormt dit echter geen probleem voor de demo applicatie. De RAW USB data wordt omgezet via de NITE middleware, verder wordt de data beschikbaar gemaakt in de userspace via het OpenNI framework.
  • 37. 32 6.3 CPU naar FPGA De CPU naar FPGA interface verzorgd de FPGA met de diepte data van de Kinect. Hierbij heb ik gekozen voor een 32-bit interface via de Xillybus. De Xillybus is zoals uitgelegd in hoofdstuk 5 is de interface die mee in de Xillinux distributie zit op met de FPGA te kunnen communiceren. Volgens de specificaties[10] zou de verwachte bandbreedte bij 195MB/s liggen, natuurlijk alleen maar haalbaar als DMA gebruikt wordt. 6.4 FPGA naar HDMI Figuur 17 FPGA-HDMI interface In de FPGA bevind zich een geheugen dat de de image data bij houd, dit is een dual-port ram zodat de HDMI generator en de Xillybus ten alle tijden tegelijk aan het geheugen kunnen. Hieruit leest de videodata generator zijn diepte data die in de image memory zit. In de video data generator wordt de timing en het formaat voorzien voor de video data input van de ADV7511. Dit komt grotendeels overeen met het formaat dat zou voorzien worden voor een VESA[2] compliant VGA maar dan in de YCbCr colorspace in plaats van RGB. Via de I2C interface wordt de ADV7511 geconfigureerd. Daarna zal de ADV7511 de video data omzetten naar signalen voor HDMI/DVI uitgang.
  • 38. 33 6.5 FPGA naar CPU De interface van de FPGA naar de CPU is ook bewust simpel gehouden, de logica in de FPGA berekend het volume van het te meten object in pixels en compenseert voor het verschil in grootte van de pixel die ontstaat door de hoogte die de pixel vertegenwoordigd. Omdat de omrekening van het volume in pixels naar het volume in mm³ kommagetallen nodig heeft gebeurt die omzetting bij de CPU omdat deze er beter voor geschikt is.
  • 39. 34 7 Discussie 7.1 De meetopstelling Natuurlijk moet al deze theorie ook getest worden, figuur 19 hier onder verduidelijkt de testopstelling. Hierbij bevind zich de Kinect camera 1m boven het meetvlak, bij een minimale meetdiepte van 80 cm geeft dit maar een bruikbaar venster van 20cm om de meting door te voeren. Er werd voor deze afstand gekozen omdat dit een maximale resolutie geeft op een zo klein mogelijk oppervlak om de metingen uit te voeren met de Kinect for Xbox360. Figuur 18 Meetopstelling Op figuur 19 is te zien dat het object dat gemeten wordt geen kubus is, maar een voetstuk waarop zich een plaatje bevind. Op deze manier konden door vier voetstukken en vier plaatjes op exacte afmetingen te fabriceren, 16 voorwerpen met verschillende afmetingen gesimuleerd worden. Omdat de camera recht boven
  • 40. 35 het voorwerp staat en bij gevolg alleen maar het bovenvlak ziet geeft dit exact hetzelfde resultaat. 7.2 De verwachtingen Omdat op 1m diepte gemeten wordt zal de verwachte resolutie nu anders liggen dan bij de berekeningen van hoofdstuk 3. Met de breedte van een pixel en de lengte ervan. ( ) ( ) Hieruit kan berekend worden wat de verwachte fout op de meting zal zijn voor de te meten voorwerpen. De maximale fout treed op als een rand van het voorwerp net op de grens van twee pixels ligt en als de hoogte van het voorwerp net op de grens ligt tussen twee niveaus van de dieptemeting. Dit kan het volume groter laten lijken dan in de realiteit, dit zou een positieve afwijking zijn. Het voorwerp kan ook kleiner lijken dan in de werkelijkheid, dan wordt er gesproken over een negatieve afwijking. Deze twee uiterste gevallen zijn in tabel 3 en tabel 4 weergegeven. Tabel 3 Positieve afwijking
  • 41. 36 Tabel 4 Negatieve afwijking
  • 42. 37 7.3 De metingen Zoals te zien in tabel 5 hieronder is de precisie van de Kinect veel slechter als verwacht. Bij de procentuele fout is duidelijk te zien dat deze significant stijgt als de hoogte van de voet stijgt. Dit is net het tegengestelde van wat er verwacht was. De berekeningen gaan er van uit dat er buiten de pixel fouten geen andere fouten meer zijn. Maar dat is niet zo, de significante stijging in fout is te verklaren door de opbouw van de Kinect, het voorwerp staat dan wel recht onder de camera van de Kinect, maar zoals in hoofdstuk 3 beschreven staat de IR projector absoluut niet in het midden maar sterk naar links verschoven. Tabel 5 Meetresultaten Door het verschil in inkijkhoek ontstaat er naast een voorwerp een schaduw in het IR patroon dat zorgt voor de fout in de meting. Die schaduw is dus maar een zeer beperkte invloed op objecten die laag zijn en dus dicht op het meetplatform. Maar grotere voorwerpen werpen een grote schaduw, dit is het ergste bij hoge en smalle objecten. Figuur 23 illustreert dit probleem.
  • 43. 38 Figuur 19 Schaduwprobleem Op de figuur 19 is te zien dat doordat de IR projector meer naar links staat, de camera in staat is om de schaduw te zien achter het voorwerp. Zelfs zonder het probleem met de schaduw is er enorm veel ruis die onderdrukt moet worden. Om deze ruis weg te filteren wordt er gebruik gemaakt van een lopend gemiddelde en een beperking in mogelijke waarden, maar toch is een ruis piek van 1000mm³ of meer zeker geen uitzondering.
  • 44. 39 8 Conclusie en toekomstvisie 8.1 Conclusie De Microsoft Kinect is als dieptecamera om absolute metingen uit te voeren niet geschikt. De Kinect is ontworpen om relationele data op te nemen en te verwerken, zoals een object of gebaar herkenning. De Kinect beschikt ook over een custom ASIC die deze verwerking uitvoert, aangezien deze anders te veel rekenkracht zou vragen van de host. De Microsoft Kinect is tenslotte gemaakt voor de Xbox360, dit is een spelconsole, die veel grafisch ingewikkelde verwerkingen moet kunnen doen om een spel te kunnen draaien en dus zou die extra belasting een nefaste gevolgen hebben voor de kwaliteit van spellen die gebruik maken van de Kinect. De Kinect is dus voor absolute meet toepassingen niet geschikt. Maar hij zou wel kunnen ingezet worden voor bijvoorbeeld object herkenning op een lopende band of voor een interactieve etalage. 8.2 Mogelijke verbeteringen De huidige Kinect is een dieptecamera die met behulp van structured light de diepte bepaald en dit in VGA kwaliteit. Maar de Xbox360 is aan het einde van zijn leven toegekomen en zal al binnenkort worden vervangen door zijn opvolger. Die opvolger is de Xbox One en wordt standaard in een bundel verkocht met de nieuwe Kinect. Deze dieptecamera is een time-of-flight camera, dit is hetzelfde systeem dat ook gebruikt wordt door professionele dieptecamera's. Time-of-flight is veel preciezer als de structured light methode, daarbovenop neemt de nieuwe Microsoft Kinect zijn beelden op in 1080p resolutie. Dit geeft een veel hogere precisie als de VGA resolutie van de oude kinect, deze methode is ook veel minder gevoelig aan ruis dan de structured light methode. Met andere woorden is deze nieuwe Kinect met hoge waarschijnlijkheid wel geschikt voor vooropgestelde case. Helaas is de nieuwe kinect nog niet beschikbaar en konden er dus geen testen mee uitgevoerd worden.Om dit systeem bruikbaar te kunnen maken om in de praktijk volume metingen te doen, moet de beperking in vorm van de voorwerpen die gemeten kunnen worden, verholpen worden door meerdere Kinect camera's te gaan gebruiken.
  • 45. 40 Referenties [1] ACCURACY ANALYSIS OF KINECT DEPTH DATA, K. Khoshelham, ITC Faculty of Geo-information Science and Earth Observation, University of Twente, 2011 [2] The Kinect Up Close: Modifications for Short-Range Depth Imaging, Mark Theodore Draelos, North Carolina State University, 2012 [3] Kinect Depth Sensor Evaluation for Computer Vision Applications, M.R. Andersen, T. Jensen, Aarhus University, Februari 2012 [4] N. Burrus. (2010) Kinect calibration. [Online]. Available: http://nicolas.burrus.name/index.php/Research/KinectCalibration [5] K. Konolige and P.Mihelich. (2010) Kinect_calibration/technical. ROS.org. Discussion of the Kinect’s software workings. [Online]. Available: http://www.ros.org/wiki/Kinect_calibration/technical [6] Microsoft.com [7] Programming Guide,Microsoft Research, 2011, Kinect forWindows SDK, Beta 1 Draft Version 1.0. [Online]. Available: http://research.microsoft.com/en- us/um/redmond/projects/Kinectsdk/docs/ProgrammingGuide_KinectSDK.pdf [8] Depth mapping using projected patterns, U.S. Patent 12/522,171, 2010. [9] Getting started with Xillinux for Zynq-7000 EPP, Xillybus Ltd, 2012 [10] Xillybus.com [11] Linux device drivers 3th edition, O'Reilly Media, Januari 2005 [12] Analyse voor het hoger onderwijs 3de druk,Gustaaf Deen, Paul Levrie , de boeck, 2011 [13] http://www.vesa.org/