Home
file - eLib
Contents
1. 15 38 Vgl Notification The endpoint sends a message 15 33 Vgl Request response The endpoint receives a message and sends a correlated mes sage 15 Vgl Solicit response The endpoint sends a message and receives a correlated message 15 u Vgl R2303 A DESCRIPTION MUST NOT use Solicit Response and Notification type operations in a wsdl portType definition 23 Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 37 Konvertierung der Daten kostet dabei zus tzliche Rechenzeit und das auf 64 Zeichen reduzierte Alphabet erzeugt eine steigende Netzwerk last Ein Byte kann 2 256 verschiedene Werte annehmen ein Zeichen in Base64 Kodierung lediglich 2 64 verschiedene Werte Die Bilddaten werden zur bertragung also auf s z ihres urspr nglichen Spei cherplatzbedarfs vergr ert Obwohl WSDL die Implementierung eines sehr gut wartbaren und leicht verst ndlichen Protokolls erm glicht haben die nur bedingt gegebene Plattformunabh ngigkeit und die Leistungseinbu en bei der Daten ber tragung dazu gef hrt dass ich mich gegen dessen Verwendung ent schieden habe Als Alternative habe ich das Message Passing Interface MPI unter sucht welches dem Datenaustausch in einem parallelisierten Rechner system dient Es kann sowohl f r Punkt zu Punkt Verbindungen als auch f r Kommunikationsgruppen eingesetzt werden Vor allem f r letztere sieht MPI s
2. Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 17 e Bildverarbeitung o IrfanView Version 4 38 o GIMP Version 2 8 14 e Bildauswertung o OpenCV Version 2 4 10 o Python Version 2 7 4 o NumPy Version 1 9 1 4 Der Entwurf des eingebetteten Systems 4 1 Die Anforderungen an das eingebettete System Das eingebettete System soll sowohl zur 3D Vermessung im Geb ude inneren als auch im Au enbereich eingesetzt werden Daher muss es im laufenden Betrieb portabel und mobil einsetzbar sein Die Energie versorgung soll dabei ber g ngige Stromquellen m glich sein Die An bindung der Datenschnittstelle erfolgt mittels Gigabit Ethernet um m glichst hohe Datenraten zu erreichen Das System wird in das am DLR verwendete Framework zur Sensorda tenverarbeitung integriert Die Bilddaten und die Kamerageometrie werden dar ber an das System bertragen Das System soll vor dem Stereomatching eine Rektifizierung der Eingangsbilder durchf hren Dazu wird neben den Bilddaten auch die Kamerageometrie ausgewertet und bertragen Die Rektifizierung erfolgt mittels einer Look Up Tabelle Um zu verhindern dass einzelne Pixel im rektifizierten Bild nicht mit Werten belegt werden wird von dort aus jedem Pixel ein Wert zuge teilt der aus dem nicht rektifizierten Bild Urbild ermittelt wird Hierbei wird die Umgebung des entsprechenden Pixels im Urbild bilinear inter poliert 24 Die CAD Computer Aided Design Softw
3. Laufzeit der wesentlichen Verarbeitungsschritte 680x512 0 Gesamtdauer der Disparit tsberechnung gt Dauer des Rektifizierungsschrittes Dauer des Skalierungsschrittes un E S 3 ke un Eh 3 o m ch Dauer der SGM Berechnung im FPGA Abbildung 15 Laufzeit der wesentlichen Verarbeitungsschritte 680x512 In Abbildung 15 kann man gut erkennen dass f r kleinere Bilder die Berechnung des SGM Algorithmus mit etwa 70ms der Verarbeitungs schritt mit der l ngsten Laufzeit ist Die Skalierung und Rektifizierung Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 60 der Stereobilder liegt mit einer Berechnungsdauer von jeweils etwa 40ms deutlich darunter Die Gesamtdauer der Berechnung liegt im Mittel etwa bei 80ms also 20ms ber dem langsamsten Einzelverarbei tungsschritt Bei gr eren Bildern steigt wie in Abbildung 16 zu sehen die Gesamt dauer auf durchschnittlich etwa 180ms an Die SGM Berechnung bleibt erwartungsgem konstant bei etwa 70ms Ebenso dauert die Skalie rung der Stereobilder weiterhin 40ms Die Rektifizierung der Stereobil der ben tigt bei den gr eren Bildern 140ms und stellt somit den lang samsten Einzelverarbeitungsschritt dar Seine Differenz zur Gesamtdau er liegt bei etwa 40ms Laufzeit der wesentlichen Verarbeitungsschritte 1360x1024 Ir y 7 oa Gesamtdauer der N Be auge E Dauer des Rektifi
4. gen Jedem der beiden Bilder wird seine jeweilige Breite und H he als uint16 vorangestellt Da nur Bilder mit 8 Bit Grauwerttiefe bertragen werden ergibt sich die Gr e des zu bermittelnden Bildes in Bytes als Produkt der beiden Werte Sobald die entsprechende Datenmenge empfangen wurde wird auf den n chsten Pakettypen gewartet Dispari Die Abk rzung uint8 bezeichnet den Datentypen einer vorzeichenlosen Ganzzahl mit 8 Bits Analog dazu sind uint16 uint32 und uint64 definiert F r vorzeichenbehaftete Zahlen ver wende ich die Bezeichnungen sint8 sint16 sint32 und sint64 Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 40 t tsbilder rektifizierte Bilder und die Look Up Tabellen werden auf analoge weise bertragen Das Paket mit den SGM Parametern hat eine feste Gr e von 9 Bytes Diese ergeben sich aus 1 Byte Pakettyp je 2 Bytes f r die als uint16 kodierten Parameter P und P und je 1 Byte f r die 4 Flags enab leGaussFilter enableFeedback enableFastLRCheck und enableSkylnit Die bertragungsreihenfolge entspricht der ihrer Nennung in diesem Absatz Da die Parameter nur einmal zum Beginn einer Verbindung bertragen werden habe ich darauf verzichtet die Flags bin r kodiert auf ein einzelnes Byte zu komprimieren Desweiteren k nnen noch zus tzliche Informationen bertragen wer den die im Projektverlauf als Anforderung hinzugef gt wurden Diese legen fest ob das Stereobild a
5. 20 S 5 34 apc Express Mini Card provides two power sources one at 3 3Vaux 3 3Vaux and one at 1 5V 1 5V 13 S 43 Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 25 5 Die Implementierung der Software 5 1 Die grundlegenden Verarbeitungsschritte 5 1 1 Das Empfangen und Senden der Feederdaten Zur Anbindung des Systems an das Feedernetzwerk habe ich einen ei genen Feeder implementiert Diesen bezeichne ich im Folgenden als SGMOPFeeder Er verf gt ber einen Eingang an dem er Stereobilder entgegennimmt die beispielsweise von einem StereoFeeder bereitge stellt werden An einem Ausgang stellt er nach Durchf hrung des SGM die entsprechenden Disparit tsbilder zur Verf gung Das Empfangen der Stereobilder am Eingang des Feeders und ihre Netzwerk bertragung an die SGM Box habe ich in einem separaten Thread implementiert Das Gleiche gilt f r den Empfang der von der SGM Box ber das Netzwerk gesendeten Disparit ts und rektifizierten Kamerabilder Dadurch laufen diese Verarbeitungsschritte losgel st voneinander und von der Hauptschleife des Feeders ab Diese befindet sich in der onRun Methode des SGMOPFeeders Sie stellt die Dispari t tsbilder die der andere Thread empfangen hat am Ausgang des Fee ders zur Verf gung und visualisiert sie in der PSApp Die Entkopplung der Datenverarbeitung in diesen drei Threads hat den Effekt dass so wohl in den Sende als auch in den Empfangspfaden meh
6. Das Disparit tsbild gibt lediglich Auskunft dar ber um wie viele Pixel zwei korrespondierende Punkte zueinander verschoben sind Um ein echtes Tiefenbild im dreidimensionalen euklidischen Objektraum zu berechnen ben tigt man weitere Informationen ber das Kamerasys tem Die Orientierung der Kameras zueinander und die Verzeichnung durch die verwendeten Objektive sind hierbei die wichtigsten Parame ter Um diese zu ermitteln wird das Kamerasystem kalibriert R Vgl streaking artefacts are inherent in scanline optimization 6 S 175 Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 7 Abbildung 2 Schematische Darstellung der Epipolargeometrie 21 7 Ein kalibriertes Kamerasystem hat auch bei der Berechnung des Dispari t tsbildes den Vorteil dass korrespondierende Punkte nur auf soge nannten Epipolarlinien gesucht werden m ssen Die Epipolarlinie eines Punktes in einem Bild bezeichnet die Menge der Punkte innerhalb des anderen Bildes innerhalb der der ihm entsprechende Bildpunkt liegt In Abbildung 2 ist eine solche Epipolarlinie dargestellt Der Objektpunkt X wird in Bild 1 auf den Bildpunkt X abgebildet Die Objektpunkte X X2 und X3 w rden auf denselben Punkt abgebildet werden Im rechten Bild ergeben die Objektpunkte X1 X2 und X3 jedoch Bildpunkte die vom dort tats chlich aufgenommenen Bildpunkt X abweichen jedoch alle auf der rot eingezeichneten Epipolarlinie liegen Wenn die
7. Heidelberg Spektrum Akademischer Verlag Springer 2008 6 Semi Global Matching Motivation Developments and Applications Hirschm ller Heiko 2011 photogrammetric Week Vol 11 S 173 184 7 congatec AG conga TC37 Data Sheet Website des Unternehmens congatec AG Online 3 Februar 2015 http www congatec com fileadmin user_upload Documents Datashe ets conga TC87 pdf 8 Connect Tech Inc COM Express Type 6 Ultra Lite Carrier Board Users Guide Website des Unternehmens Connect Tech Inc Online 3 Februar 2015 http www connecttech com pdf CTI M COM Express Ultra Lite pdf 9 Delock Datenblatt Delock Riser Karte Mini PCI Express gt PCI Express x1 links gerichtet 13 Delock Website des Unternehmens Online 25 Januar 2015 http www delock de produkt 41370 pdf htmI sprache de 10 Wikipedia HSV Farbraum Wikipedia the free encyclopedia Wikipedia Online Zitat vom 24 Februar 2015 http de wikipedia org wiki HSV Farbraum 11 Scharstein Daniel Vandenberg Rodes Alexander und Szeliski Rick 2003 Stereo datasets with ground truth Middlebury College Website Online 2003 Zitat vom 26 Februar 2015 http vision middlebury edu stereo data scenes2003 Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 79 12 Herold Helmut Linux Unix Systemprogrammierung 2 M nchen Addison Wesley Verlag 1999 4 Nachdruck 2003 13 PCI SIG PCI Express Mini Card Electromechanica
8. Implemen tierung des SGM Algorithmus Die Konfiguration der Karte und der Aus tausch der Bilddaten sind ber die PCI Express PCle Schnittstelle im plementiert Bei der verwendeten Hardware handelt es sich um ein Spartan 6 LX75T Development Kit vom Hersteller Avnet 4 3 2 2 Integration der Hardware Wie in Abschnitt 4 3 1 1 beschrieben wird die FPGA Karte per PCle angesteuert Das Computersystem in welches sie integriert wurde bie tet jedoch keine PCle Steckpl tze an Daher verwende ich einen Mini PCI Express mPCle zu PCle Riser Adapter um die Karte anzuschlie en Die FPGA Karte ben tigt zum Betrieb eine Versorgungsspannung von 12 Volt Diese kann entweder extern oder ber die PCle Schnittstelle eingespeist werden Da mPCle laut Spezifikation keine 12 Volt son dern nur 1 5 Volt und 3 3 Volt Versorgungsspannung vorsieht muss diese separat vom Stromanschluss des Carrier Boards auf den 4 Pin Floppy Stromanschluss 9 des Riser Adapters gef hrt werden Um das Carrier Board und die FPGA Karte mechanisch stabil zu verbin den habe ich eine Aluminiumplatte entworfen an welcher beides ver schraubt wurde Dieses Bauteil wurde von einem externen Dienstleister gefertigt 3 Die Produktbezeichnung des verwendeten Riser Adapters lautet Delock Riser Karte Mini PCI Express gt PCI Express x1 links gerichtet 13 cm 8 3 supply voltages derived from the PCI Express slot or an external 12V Supply
9. auf welche ich die Auswahl mittels Internetrecherche und in der Diskussion mit meinen Kollegen reduziert habe Zuerst betrachte ich die Kombination von Web Services Description Language WSDL und Simp le Object Access Protocol SOAP welche auch in einem anderen Projekt in der Arbeitsgruppe in der ich meine Abschlussarbeit schreibe einge setzt wurde Als n chstes gehe ich auf das Message Passing Interface MPI ein und betrachte anschlie end die Option ein eigenes auf das Problem angepasstes Protokoll zu implementieren WSDL ist eine auf XML basierende Beschreibungssprache mittels derer sich die Schnittstelle zu einem Service definieren l sst Die wesentlichen Elemente der Sprache sind Services Types Messages Operations und Ports Ein Service stellt dabei eine Sammlung von Endpunkten im Netz werk dar Die einzelnen Services verf gen ber Ports welche Operati ons zur Verf gung stellen Dadurch werden Messages ausgetauscht Die in ihnen enthaltenen Datentypen werden in Types definiert Vgl AWSDL document defines services as collections of network endpoints 15 Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 36 In WSDL sind vier Arten von Ports Port Types vorgesehen One way Ports k nnen Messages lediglich empfangen aber nicht darauf antwor ten Notification Ports im Gegensatz dazu senden Messages aus schlie lich k nnen aber keine empfangen Request response Ports war
10. gt ungerader Disparit tspixel Dr Vorkommabyte 25 El O 1 2 3 0 1 253 Nachkommabyte 10 6 ee Ba 2 S Vorkommabyte Abbildung 8 Kompression der Dispari tsbilder Dieses Verfahren ist in Abbildung 8 dargestellt Jedes K stchen repr sentiert ein Bit Die gro en K stchen sind Vorkommastellen die kleinen sind Nachkommastellen Die blauen Bits mit durchgezogenem Rand bilden das zuerst bertragene gerade Pixel die gr nen Bits mit gestri cheltem Rand das als zweites bertragene ungerade Pixel 5 4 Die Parallelisierung der Verarbeitungsprozesse 5 4 1 Die Aufteilung in einzelne Threads Um die verf gbaren Ressourcen besser auszunutzen unterteile ich den gesamten Verarbeitungsprozess vom unrektifizierten Stereobild bis hin Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 44 zum rektifizierten Disparit tsbild in einzelne kleinere Unterschritte Diese Unterschritte sollen keine gemeinsamen Ressourcen nutzen und k nnen somit nebenl ufig ausgef hrt werden Beispielsweise ist es m glich dass w hrend der FPGA das Disparit tsbild berechnet die CPU bereits das n chste Bild rektifiziert anstatt darauf zu warten dass der FPGA fertig ist Parallel dazu kann um ein weiteres Beispiel anzuf hren auch schon das n chste Stereobild ber das Netzwerk empfangen oder ein Disparit tsbild gesendet werden Dadurch entsteht eine Pipeline deren Stufen die einzelnen Verarbeitungssch
11. hlbar Das fest eingestellte Bildformat ist f r den Einsatz im Stra enverkehr optimiert wobei das Kamerasystem nach vorne aus dem Fahrzeug herausblickt Ein zweiter Punkt welcher optimiert werden kann ist das Erzeugen sowohl eines bersichtsbildes als auch eines vergr erten Bildaus schnittes Wir verwenden im Feedernetzwerk lediglich das bersichts bild m ssen das vergr ere Bild jedoch trotzdem von der FPGA Karte holen Das bersichtsbild in halber Aufl sung steht nach 40 Millisekun den zur Verf gung der vergr ere Bildausschnitt in voller Aufl sung nach weiteren 30 Millisekunden Man kann das Senden des vergr er ten Bildausschnittes jedoch nicht deaktivieren oder ignorieren sondern muss den entsprechenden Interrupt behandeln Dadurch wird die Bild rate der FPGA Karte auf etwas mehr als 14 Disparit tsbilder pro Sekun de beschr nkt Drittens ist die Rektifizierung der Stereobilder aktuell auf der CPU reali siert Wie ich in Abschnitt 6 1 gezeigt habe ist dies bei steigender Bild gr e der zeitaufw ndigste Schritt im Verarbeitungsprozess Wenn man diesen sehr gut parallelisierbaren Ablauf auf den FPGA auslagert kann man CPU Rechenzeit sparen und gerade bei gr eren Bildern die Bildrate vermutlich deutlich erh hen Eine Erweiterung der bestehenden Firmware ist aus Lizenzgr nden nicht m glich Eine M glichkeit die oben genannten Einschr nkungen zu berwinden ist eine neue Implementierung der
12. meisten Betriebssysteme stellen Bibliotheksfunktionen zur Verf gung mit denen eine Zahl zwischen der jeweiligen eigenen Darstellung und Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 39 der in network byte order konvertiert werden kann F r die Bytereihen folge der Netzwerk bertragung von Flie kommazahlen existiert meines Wissens keine einheitliche Vorschrift Die einzelnen bertragungen habe ich dabei in Pakete gekapselt die ich anhand eines vorangestellten Pakettypen unterscheide Dieser ist als uint8 implementiert was eine Erweiterbarkeit auf bis zu 2 256 ver schiedene Pakettypen erm glicht Die verschiedenen Pakettypen sind in Tabelle 1 dargestellt Dabei ist angegeben wer den entsprechenden Pakettyp in meiner Implementierung sendet und wer ihn empf ngt Bis auf den Spezialfall dass ein Paket als ung ltig markiert ist sind Client und Server bei allen Pakettypen entweder Sender oder Empf nger Pakettyp Funktion Sender Empf nger 0 Stereobild SGM Box Sensorkopf 1 SGM Parameter Sensorkopf SGM Box 2 Look Up Tabelle Sensorkopf SGM Box 3 Disparit tsbild SGM Box Sensorkopff 4 Rektifiziertes Bild SGM Box Sensorkopf 5 Verschiedene Optionen Sensorkopff SGM Box 255 Ung ltiges Paket beide beide Tabelle 1 Pakettypen Nach dem Pakettyp werden die spezifischen Daten bermittelt Im Falle eines Stereobildes wird zuerst das linke dann das rechte Bild bertra
13. r Bezeichner von Variablen und Funkti onen weitestgehend kurze Funktionsr mpfe ohne gro e Verschachte lungstiefe und eine Aufteilung der Software in einzelne Komponenten sind Beispiele daf r Die Kapselung der Software in Komponenten hat Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 13 neben Gr nden der bersichtlichkeit den Vorteil dass diese unabh n gig voneinander getestet werden k nnen Beispielsweise habe ich den threadsicheren Ringpuffer den ich in Abschnitt 5 4 2 genauer beschrei be unabh ngig vom restlichen Programm entwickelt In einem separa ten Testfall habe ich verifiziert dass sein Verhalten dem geforderten solchen entspricht H ufig ist es ausreichend den korrekten Ablauf eines Quelltextabschnittes mit dem Auslesen des Wertes einer Variab len zu berpr fen Dies kann entweder durch textuelle Ausgabe auf die Konsole oder in eine Systemdatei durch einen Debugger oder durch entsprechende berpr fung im Quelltext geschehen Letzteres bleibt in der Regel im sp teren Quelltext als Fehlerbehandlung erhalten Damit der Leser der Quelltextes leicht erkennt welchen Zweck eine Funktion beziehungsweise Variable erf llt habe ich ihr einen Kommen tarblock vorangestellt der ihr Verhalten beziehungsweise ihre Verwen dung beschreibt Dar ber hinaus habe ich bei Funktionen neben der Beschreibung der Ein und Ausgabeparameter gegebenenfalls erw hnt welche Vorbedingungen die berge
14. FPGA Firmware durch das DLR Diese sollte intern entwickelt werden um sie gegebenenfalls an sich wandelnde Anforderungen anpassen zu k nnen Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 77 Schlie lich ist noch zu erw hnen dass man das eingebettete System in seiner Gr e deutlich reduzieren kann wenn man statt ein FPGA Development Board zu verwenden eine anwendungsspezifische Platine f r den FPGA anfertigt Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 78 Literatur und Quellenverzeichnis 1 Pinel John P J Biopsychologie bers Paul Pauli 6 M nchen Pearson Studium 2007 2 Accurate and Efficient Stereo Processing by Semi Global Matching and Mutual Information Hirschm ller Heiko San Diego CA USA IEEE 2005 IEEE Conference on Computer Vision and Pattern Recognition CVPR S 807 814 3 IPS A SYSTEM FOR REAL TIME NAVIGATION AND 3D MODELING Grie bach D et al et al 2012 ISPRS International Archives of the Photogrammetry Remote Sensing and Spatial Information Sciences Vol XXXIX B5 S 21 26 4 Buder Maximilian Ein echtzeitf higes System zur Gewinnung von Tiefeninformation aus Stereobildpaaren f r konfigurierbare Hardware Berlin Germany Humboldt Universit t zu Berlin Mathematisch Naturwissenschaftliche Fakult t Il 2 Juni 2014 5 Goldstein E Bruce Wahrnehmungspsychologie Hrsg Hans Irtel bers Guido Plata 7
15. Gesamtsystems unnene 54 6 Test und Verifikation der Ergebnisse uuuuesssnsenessnnnneennnnnnnennnnnnnn 58 6 1 Die Bildrate bei verschiedenen Aufl sungen 58 6 2 Ein Vergleich mit der Berechnung auf einem Grafikprozessor 62 6 3 Die Verifikation der Ergebnisse mittels einer Referenzszene 65 6 4 Das eingebettete System im Einsatz uessseessssnsensnsnnnnnennennnn 67 7 R sblick see brneieesbeiebn 70 7 1 Eine Verallgemeinerung des Netzwerkfeeders 70 Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung iv 7 1 1 Ein Anwendungsfall f r Netzwerkfeeder ss 70 7 1 2 Die Schnittstelle zwischen einzelnen Netzwerken 72 7 1 3 Das Protokoll zur Daten bertragung 74 7 1 4 Die Herausforderungen bei der weiteren Implementierung 75 Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 1 Einf hrung und Zielsetzung 1 1 Motivation f r den Einsatz eines Echtzeit 3D Verarbeitungssystems F r die Wahrnehmung unserer Umwelt nutzen Menschen unterschiedli che Sinne Besonders der Sehsinn auch visuelles System genannt er m glicht uns eine genaue sehr detaillierte dreidimensionale Wahr nehmung 1 S 166 unserer Umgebung Diese F higkeit des Menschen auf ein Rechnersystem zu bertragen ist insbesondere f r eingebettete Computersysteme von gro er Relevanz Man spricht hierbei von ma schinellem S
16. beiden Bildebenen gleich ausgerichtet sind in einer Ebene liegen und etwaige Verzeichnungen korrigiert wurden spricht man von rektifizierten Bildern Diese k nnen unter Kenntnis der Kamerageomet rie berechnet werden Unter der Annahme dass sich die Kamerageo metrie im laufenden Betrieb nicht ver ndert kann die Rektifizierungs abbildung einmalig berechnet und als Look Up Tabelle gespeichert 7 Abbildung 2 habe ich der Online Enzyklop die Wikipedia entnommen 21 Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 8 werden Die Rektifizierung der Bilder vor dem Stereomatching verein facht die Suche nach korrespondierenden Punkten Die Epipolarlinie verl uft dann entlang der u Achse wodurch erhebliche Vorteile bei der Verarbeitung durch den linearen Pixelzugriff zu erwarten sind 4 S 17 2 2 Der Ablauf des Semi Global Matching SGM Algo rithmus Ein Verfahren zum Erzeugen des Disparit tsbildes aus zwei Kamerabil dern stellt der Semi Global Matching SGM Algorithmus dar Bei der Zuordnung korrespondierender Pixel werden Informationen sowohl aus ihrer direkten lokalen Umgebung als auch aus dem gesamten globa len Bild verwendet Dabei wird angenommen dass dem Bild eine gewisse Glattheit inne wohnt Das bedeutet dass sich die Disparit t nicht zwischen allen Pixeln beliebig sprunghaft ndert sondern dass relativ gro e zusammenh n gende Fl chen ann hernd gleicher Disparit t v
17. eines Testboards zur Echtzeit 3D Verarbeitung 56 tet wird Daf r habe ich das Bashscript home adminos autostart sh geschrieben welches in einer Endlosschleife das Script zum Laden des Treibers den SGMOPServer und anschlie end das Script zum Entladen des Treibers ausf hrt Dadurch wird der Treiber falls der SGMOPServer durch einen Fehler beendet wird stets neu geladen und der Server neu gestartet Damit dieses Script beim Systemstart ausgef hrt wird habe ich es der Datei etc rc local hinzugef gt Es wird darin aufgerufen und loggt alle Textausgaben in die Datei home adminos SGMlog txt bei jeder Iteration der Schleife wird zudem die aktuelle Systemzeit ausge geben Um einem Volllaufen des Dateisystems vorzubeugen wird die Logdatei beim Systemstart berschrieben F r Langzeittests sollte auf die Verwendung der Logdatei verzichtet werden Mit dem Script home adminos restart sh kann manuell ein Neustart des SGMOPSer vers herbeigef hrt werden Damit das Linux zuverl ssig automatisch startet habe ich Anpassungen im System vorgenommen Es kann vorkommen dass wenn das System nicht korrekt heruntergefahren sondern durch Wegnahme der Strom versorgung abgeschaltet wurde das Dateisystem beim erneuten Starten auf Fehler berpr ft werden kann Standardm ig fragt das Betriebssys tem den Benutzer ob diese Pr fung stattfinden oder bersprungen werden soll Wenn jedoch wie bei einem eingebetteten System in der Regel der Fall wed
18. einigen Stellen habe ich mich im an bestehendem Quelltext aus den internen Softwarebibliotheken des DLR wie beispielsweise der OSLib und der SFSLib orientiert Beispielsweise ist das Grundger st welches ich f r den SGMOPFeeder genutzt habe dem StereoFeeder der SFSLib entnommen Ein anderes Beispiel sind die in der OSLib enthaltenen Testf lle welche ein gutes Bild ber die Verwendung der jeweiligen in ihnen verifizierten Klassen vermitteln In einigen F llen habe ich auch im Internet nach verschiedenen Ideen zur L sung algorithmischer Prob leme gesucht So basiert die farbliche Visualisierung der Dispari tsbilder auf einer Seite der Online Enzyklop die Wikipedia Den Link zu der ent sprechenden Webseite habe ich im Quelltext der Klasse SGMOPFeeder in der Methode disparityToColor als Kommentar hinterlegt Jede dem Programm hinzugef gte Funktionalit t stellt einen weiteren Entwicklungsschritt dar welchen ich nach Fertigstellung nicht nur als Einzelkomponente sondern als auch im Kontext des Gesamtsystems getestet habe Dies f hrte dazu dass das zu entwickelnde System stets operabel war Die Lauff higkeit war nat rlich nur unter der Einschr n kung reduzierter Funktionalit t gegeben da zum jeweiligen Zeitpunkt noch nicht alle Anforderungen umgesetzt waren Durch Einhalten einiger Programmierrichtlinien kann man verhindern dass der implementierte Quelltext un bersichtlich und somit unwartbar wird Aussagekr ftige Namen f
19. noch am DLR eingesetzt werden sollen muss das von mir entwickelte System gut wartbar sein Dazu geh rt auch dass das Netz werkprotokoll im Nachhinein an sich m glicherweise ver ndernde An forderungen angepasst und um neue Funktionen erweitert werden kann Dies soll ohne nennenswerte Eingriffe in die zu dem entsprechen den Zeitpunkt implementierten und getesteten Funktionen m glich sein Es gibt mehrere Gr nde warum das implementierte Protokoll m glichst schlicht und einfach sein sollte Zum einen wird dadurch die Fehler Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 35 wahrscheinlichkeit minimiert Wenn der zur Interpretation der empfan genen Daten erforderliche Parser klein gehalten werden kann ist er auch robuster gegen ber Programmierfehlern als ein vergleichsweise gro er Parser f r ein komplexes Protokoll Zum anderen wird Dritten durch ein leicht verst ndliches Protokoll die Einarbeitung in das vor mir entwickelte System erleichtert Da die Software der SGM Box unter Linux und das Sensorframework im Sensorkopf unter Windows l uft muss das Protokoll ohne gro en Auf wand auf beiden Betriebssystemen implementiert werden k nnen Portierbarkeit ist also ein weiteres Kriterium f r die Wahl des Protokolls mit dem die beiden Systeme kommunizieren sollen 5 3 2 Eine Betrachtung verschiedener Netzwerkprotokolle Ich beschr nke mich hier auf die Betrachtung dreier m glicher Protokol le
20. und bei einer Aufl sung von 1350x1024 eine Bildrate von 5Hz verwendet um zu verhindern dass die Puffer in der PSApp volllaufen In Abbildung 15 und Abbildung 16 habe ich die Dauer derjenigen Verar beitungsschritte dargestellt deren Berechnung am l ngsten dauert Die Gesamtdauer der Disparit tsberechnung bezieht sich hierbei auf die Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 59 Zeit die zwischen zwei Ausgaben von Disparit tsbildern am Ausgang des SGMOPFeeders vergeht Dabei messe ich erst ab dem zweiten Dis parit tsbild da die Ergebnisse sonst durch die bertragung der Look Up Tabelle mit dem ersten Stereobild verf lscht w rden Die Messwerte habe ich mittels des Messageloggers aus der SFSLib ausgegeben Die Laufzeiten der einzelnen Verarbeitungsschritte habe ich mithilfe von Textausgaben auf der Konsole der SGM Box gemessen Eine Analyse dieser Messung zeigt dass die Rektifizierung der Stereobilder ihre Ska lierung und die anschlie ende Berechnung des SGM durch die FPGA Karte die in Hinblick auf ihre Laufzeit wesentlichen Verarbeitungs schritte darstellen Ich habe die Messung f r Kamerabilder der Gr e 680x512 Pixeln und f r Kamerabilder der Gr e 1360x1024 Pixeln durchgef hrt Dabei habe ich die Bildrate so eingestellt dass im jeweili gen Fall die Puffer der IPSApp langsam volllaufen Dadurch habe ich sichergestellt dass das System mit maximal m glicher Bildrate l uft
21. verwendet werden Eine weitere Herausforderung stellt der robuste Start der einzelnen Netzwerkfeeder dar Wenn die beiden Netzwerkfeeder gleichzeitig gestartet werden kann es vorkommen dass sie sich beide in den Ser verbetrieb schalten und nie versuchen miteinander Verbindung aufzu nehmen Dies k nnte dadurch gel st werden dass ein Netzwerkfeeder nach einem erfolglosen Verbindungsversuch und dem damit verbunde nen Start eines ServerSockets weithin versucht eine Clientverbindung zur Gegenstelle aufzubauen Sollte dies dazu f hren dass zwei Verbin dungen erstellt werden kann ber diese ausgehandelt werden welche der beiden Verbindungen und der damit verbundene ServerSocket wie der abgebaut wird Dazu k nnten die beiden Rechnersysteme bei spielsweise Pseudo Zufallszahlen austauschen wobei derjenige der die niedrigere Zahl sendet seine Verbindung abbauen muss Durch h ufiges Reinitialisieren der Zufallsgeneratoren wird die ohnehin sehr kleine Wahrscheinlichkeit einer l ngeren Folge von auf beiden Rechnersyste men identisch erzeugten Zufallszahlen vernachl ssigbar klein Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 76 7 2 Eine angepasste Implementierung des FPGA Codes Die uns auf dem FPGA zur Verf gung stehende SGM Implementierung passt in mehreren Punkten nicht gut zu den Anwendungsf llen des IPS Projekts Zum einen sind die Gr en sowohl der Ein als auch der Aus gabebilder nicht frei w
22. 28f7465b320da5d 6361 773869 Date 20140415 6361 773869 Time 160140 6361 773869 Algorithms SGM EXT Test 6361 775712 s6_pcie Done loading module 6396 937810 s6_pcie Unloading module 6396 938065 s6_pcie Done unloading module root sgm linux home adminos driver Abbildung 7 Entladen des Kernelmoduls Mit dem Treiber der FPGA Karte habe ich fertige Testf lle zur Verf gung gestellt bekommen Mithilfe dieser habe ich sichergestellt dass die Hardware korrekt funktioniert Darin sende ich Stereobilder an die FPGA Karte empfange die entsprechenden Dispari tsbilder und verglei che sie mit vorliegenden Referenzbildern Um die Ergebnisse der FPGA Karte auch noch optisch zu validieren habe ich die Testf lle so abge n dert dass die empfangenen Dispari tsbilder unter Verwendung ent sprechender schon enthaltener Funktionen gespeichert werden Dadurch und durch ihre Spezifikation habe ich festgestellt dass die FPGA Karte f r Bildbereiche denen sie keine Disparit tswerte zuordnen kann die Disparit t Null angibt Das bedeutet dass man mit der FPGA Karte nicht zwischen Bereichen unterscheiden kann die vom SGM Algorithmus nicht erkannt wurden und solchen die im Objektraum sehr weit entfernt liegen und somit im linken und rechten Bild mit den gleichen Bildkoordinaten abgebildet werden Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 33 5 2 2 Ansteuerung mittels Users
23. 5 Die Erstellung des einsetzbaren Gesamtsystems Um das System zu verwenden muss die SGM Box per Ethernet mit dem Rechner verbunden werden auf dem das Feedernetzwerk durch die IPSApp ausgef hrt werden soll Daf r habe ich den von vorne betrach tet linken Ethernet Anschluss des Carrier Boards vorgesehen Dieser ist standardm ig so konfiguriert dass er die statische IP Adresse 10 10 0 1 nutzt Diese IP Adresse und der Port auf dem die SGM Box auf Daten wartet werden der PSApp in der XML Konfigurationsdatei beim Laden des Feeders bergeben In Abbildung 12 ist eine Beispiel konfiguration mit den von mir verwendeten Standardwerten darge stellt Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 54 lt Feeder name SGMFeederOP type SGMOPFeeder gt lt configuration version 1 0 gt lt SGMFPGAcommunication ip 10 10 0 1 port 4051 protocolVersion gt lt SGMparameters pi 18 p2 36 enableGaussFilter false enableFeedback false enableFastLRCheck false enableSkyInit false iF lt roiX and roiY ignored if enableScaling is true Don t change roiWidth and roiHeight gt lt MiscOptions enableScaling true roiOriginX 300 roi0riginY 250 roiWidth 1024 roiHeight 508 gt lt configuration gt lt Feeder gt Abbildung 12 XML Konfiguration des SGMOPFeeders Hier werden au erdem die SGM Parameter und unter MiscOptions die Skalierungseinste
24. Beuth Hochschule f r Technik Berlin Fachbereich Informatik und Medien Studiengang Technische Informatik Embedded Systems M Eng Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung Masterarbeit zur Erlangung des Grades eines Master of Engineering eingereicht von Matrikel Nr am Erstgutachter Zweitgutachter Christian Konrad Elmar Schmied 797958 02 03 2015 Dr Anko B rner Prof Dr Volker Sommer Kurzfassung Eine der Herausforderungen im Bereich des Maschinellen Sehens ist es r umliche Tiefe mithilfe von zweidimensionalen Kamerabildern zu er mitteln Ein h ufig verwendeter Ansatz hierbei basiert auf binokularer Disparit t In meiner Masterarbeit entwickle ich ein mobiles eingebette tes System zur Echtzeit 3D Verarbeitung nach diesem Prinzip Es nutzt eine Implementierung des Semi Global Matching SGM Algorithmus auf einem FPGA Abstract In the field of computer vision one challenge is estimating spatial depth from 2D camera images A common approach for this is using binocular disparity With my master thesis am providing a mobile embedded real time computer stereo vision system It utilizes an implementation of semi global matching SGM on a FPGA Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung ii Inhalt 1 Einf hrung und Zielsetzung ia 1 1 1 Motivation f r den Einsatz eines Echtzeit 3D Verarbeilungssystems i nsnsi nnn naaa E n
25. Box und dem Emp fangen des Disparit tsbildes ausgeben lassen In Abbildung 14 ist diese Messung grafisch dargestellt Auf der vertikalen Achse ist dabei die Zeit zwischen den einzelnen Bildern in Millisekunden aufgetragen und auf der horizontalen Achse die aufsteigende Bildnummer Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 58 Bildrate der Disparit tsbilder Bildrate 680x512 Bildrate 1360x1024 N I S w 3 2 gt Mittlere Bildrate 680x512 ohne Bild 1 Mittlere Bildrate 1360x1024 ohne Bild 1 Abbildung 14 Bildrate der Disparit tsbilder Man kann sehen dass die Bildrate am Anfang sehr niedrig ist Das liegt daran dass zusammen mit dem ersten Stereobild die Look Up Tabelle bertragen wird was zu einer entsprechend l ngeren Bearbeitungszeit f hrt In der Grafik sind desweiteren die durchschnittlichen Bildraten eingetragen Ich bilde hierbei die Summe ber alle bisherigen Werte und dividiere durch ihre Anzahl Die Bearbeitungszeit des ersten Bildes habe ich aus dieser Durchschnittsbildung herausgenommen um eine schnellere Konvergenz zu erreichen Man kann sehen dass die mittleren Bildraten mit steigender Anzahl an Bildern immer weniger stark schwankt und sich einem festen Wert ann hert Dieser Wert sollte als maximale Bildrate f r die CameraFeeder nicht berschritten werden Bei einer Aufl sung von 680x512 habe ich in meinen Versuchen eine Bildrate von 11Hz
26. Schlie en des Streams keine weiteren Referenzen mehr auf den Socket bestehen wird auch dieser geschlossen Sollten noch andere Programmteile den Socket verwenden bleibt er ge ffnet In der bergeordneten Programmebene also der Ebene in der die Streams erzeugt wurden muss der Socket also nicht mehr verwaltet werden Zum Test meiner Implementierungen der Klassen TCPInputStream und TCPOutputStream habe ich den Testfall Test_TCPStream implementiert Dabei werden ber einen lokalen TCP Socket Daten an einen Server gesendet der diese unver ndert wieder zur ckschreibt Falls unerwar tete Fehler auftreten oder die vom Client gesendeten Daten nicht de nen entsprechen die er auch wieder empf ngt schl gt der Test fehl Andernfalls ist er erfolgreich 5 3 4 Die Beschreibung der Kompression von Disparit ts bildern Die Dispari tsbilder die der FPGA liefert sind im 7 4 Bit Festkomma format engl fixed point format angegeben Das bedeutet dass 7 Bits die Vorkommastelle und 4 Bits die Nachkommastelle angeben Bei der Nachkommastelle spricht man hierbei von Subpixel Disparit t Ein Pixel im Disparit tsbild ben tigt also 11 Bits Speicherplatz Aus Gr nden der einfacheren Verarbeitbarkeit wird in der Software des Linuxtreibers f r jeden Pixel ein 16 Bit Wert verwendet Die obersten 5 Bits sind dabei stets gleich Null Um die Dispari tsbilder ber das Netzwerk zu bermitteln muss man nur die Bits bertragen die tats ch
27. aet 1 1 2 Zielsetzung im Kontext des assoziierten Forschungsprojektes 2 2 Relevante Grundlagen der Bildverarbeitung ssseessesessrsssseerrereeeee 4 2 1 Grundlagen der Stereovision in der Bildverarbeitung 4 2 2 Der Ablauf des Semi Global Matching SGM Algorithmus 9 3 Die angewandte Methodik senseessssnnnnnnssnnnnnennnnnnnnnnnnnnnnnnnnnnnnnnn 11 3 1 Die Methodik beim Systementwurf ueeeesssessssnsnennennnnnnnnnnnnnn 11 3 2 Das Vorgehen bei Softwareentwicklung und test 12 3 3 Die Entwicklungsumgebung uueesenseesssennnnensnnnnnennnnnnnnnnnnnnnnn 14 3 4 Die verwendete Fremdsoftware usessssssnenssssnnnnennnnnnnnnnnnnnnnn 15 4 Der Entwurf des eingebetteten Systems uuseeesesnneenessennnneneennnnnn 18 4 1 Die Anforderungen an das eingebettete System 18 4 2 Der Aufbau des eingebetteten Systems uuneesesnneeneeenenen 19 4 3 Die verwendeten Technologien uu 2224400sr nennen een 21 4 3 1 Die SGM Box als eingebettetes System 21 4 3 1 1 Technische Daten der SGM Box uuesssessnneesseennnennnnn 21 4 3 1 2 Installation des Software Basissystems en 23 4 3 2 Die FPGA Karte zur Berechnung von SGM ssssesesseseees 24 4 3 2 1 Einsatzgebiet der FPGA Karte uunnseessssssnneesseennnennnnn 24 4 3 2 2 Integration der Hardware uesessessseessssnnnnnensnennnennnnnn 25 5 Die Implementierung der Software uusssessssssnensssnnnnnen
28. an B Eingangsbilder FPGA SGM FPGA Karte Disparit ten beziehen sich C Ausgangsbild FPGA auf Pixel in B 504x248 Skalierung der D Disparit t Bildgr e um 670x500 Faktor f und f 1 Skalierung der Disparit t um Faktor f Abbildung 4 Skalierung der Ein und Ausgangsbilder Die Skalierung erfolgt wie bei der Rektifizierung der Stereobilder mit tels bilinearer Interpolation Da sich die Ver nderung der Gr e der Eingangsbilder linear auf das berechnete Disparit tsbild auswirkt m s sen die beiden Skalierungsfaktoren gespeichert und anschlie end wie der herausgerechnet werden Das Disparit tsbild wird also nicht nur in seiner Gr e skaliert sondern mit dem horizontalen Skalierungsfaktor auch in seinen Werten angepasst Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 29 5 1 4 Die Visualisierung der Disparit tsbilder Neben der Bereitstellung der Disparit tsbilider am Ausgang des SGMOPFeeders und ihrer optionalen Speicherung im Dateisystem wer den sie in der Benutzeroberfl che der PSApp dargestellt Da die direkte Darstellung der Disparit ten als Grauwerte ein sehr dunkles Bild ergibt in dem man wenig erkennen kann formatiere ich die Bilder zur Visuali sierung um Eine sehr einfache M glichkeit daf r ist die Disparit tswer te bin r nach links zu schieben um das Bild aufzuhellen Alternativ dazu bietet es sich an die verschie
29. are habe ich zum Entwurf eines Abstandhalters zwischen FPGA Karte und Carrier Board eingesetzt Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 18 Das System soll weiche Echtzeitanforderungen erf llen Das bedeutet dass die Verarbeitungsrate der Bilder im Mittel mindestens so hoch ist wie die Aufnahmerate des Kamerasystems W rden wir harte Echtzeit fordern so m ssten wir einen festen Zeitwert angeben nach dem die Verarbeitung abgeschlossen ist Sollte das System diesen Spitzenwert einmal bersteigen w rde die harte Echtzeitanforderung als nicht er f llt gelten F r die geforderte durchschnittliche Bildrate wird kein fes ter Wert vorgegeben sie soll jedoch im ganzzahligen Hertzbereich lie gen 4 2 Der Aufbau des eingebetteten Systems Das Gesamtsystem ist wie in Abbildung 3 dargestellt aufgebaut und besteht aus zwei Grundkomponenten Die eine Komponente beinhaltet neben weiteren Sensoren die Kameras und das Framework zur Sensor datenverarbeitung Diese Komponente bezeichne ich im Folgenden als Sensorkopf Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 19 Sensorkopf Linke Kamera Rechte Kamera Sensor Framework Stereobild und Look Up TESSE ai Disparit tsbild Rektifizierung und rektifiziertes linkes Bild SGM Box FPGA Karte f r Rektifizierung Daten bertragung SGM Berechnung Abbildung 3 Aufbau des eingebetteten Systems 25 Die andere Komp
30. benen Argumente erf llen m ssen und welche Einschr nkungen f r die zur ckgegebenen Werte gelten 3 3 Die Entwicklungsumgebung Zur Entwicklung der Software habe ich verschiedene Werkzeuge ge nutzt Eine wesentliche Rolle haben integrierte Entwicklungsumgebun gen IDEs gespielt Unter Windows habe ich Microsoft Visual Studio verwendet und unter Linux die quelloffene Software Eclipse mit ent sprechender Erweiterung f r C und C In beiden IDEs ist ein visueller Debugger integriert Dieser erm glicht es zur Laufzeit das Verhalten der entwickelten Software zu beobachten und zu berpr fen Beispielsweise kann man das Programm automa tisch anhalten lassen wenn es eine bestimmte Quelltextzeile ausf hrt Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 14 oder eine Variable einen bestimmten Wert annimmt Sobald das Pro gramm angehalten wurde kann man den aktuellen Programmzustand untersuchen und ver ndern Speziell beim Debugging der Netzwerk bertragung habe ich au erdem Wireshark ein Werkzeug zur Analyse von Netzwerkverkehr genutzt Neben dem Debugging habe ich auch das Profiling der IDEs genutzt Dabei wird zur Laufzeit gemessen wie viele Ressourcen von dem Pro gramm ben tigt werden Besonders interessant ist dabei die Informati on welche Funktionen die meiste Rechenzeit ben tigen Mit den so gewonnenen Erkenntnissen konnte ich mich gezielt der Optimierung eben dieser Funktionen widme
31. chreibposition Die Lese und Schreibzugrif fe auf den Ringpuffer sind in O 1 durchf hrbar Ihre Laufzeit kann mit anderen Worten als konstant betrachtet werden und ist folglich unab h ngig von sowohl der Kapazit t des Puffers als auch der Anzahl der aktuell darin gespeicherten Elemente F r den Fall dass aus einem leeren Ringpuffer gelesen oder in einen vollen Ringpuffer geschrieben werden soll ist ein entsprechendes Ausnahmeverhalten zu definieren ag Vergleiche hierzu Circular buffering makes a good implementation strategy for a queue that has fixed maximum size 16 gt Each operation takes O 1 time 14 S 235 22 Vergleiche hierzu error checking for underflow and overflow 14 S 235 Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 49 Ich nutze die Implementierung aus der OSLib welche unterschiedliche Funktionen f r das jeweilige Ausnahmeverhalten bereitstellt Beim Schreiben in den Ringpuffer wird die aktuelle Schreibposition ausgelesen der zu schreibende Wert an die entsprechende Speicher stelle bertragen und die Schreibposition um Eins inkrementiert Wenn diese sich dadurch aus dem g ltigen Speicherbereich des Ringpuffers herausbewegt wird sie wieder auf den Anfang desselbigen gesetzt Anschlie end wird die neue Schreibposition im Ringpuffer aktualisiert Das Lesen l uft analog dazu ab Durch die Typsicherheit wird garantiert dass von dem Ringpuffer nur Dat
32. d eine hohe zeitliche Aufl sung 4 S 86 Beispielsweise verf gten sie im Jahr 2013 ber eine Ausgangsdatenrate von bis zu 50 Msamples s 4 S 87 wohingegen d er schnellste Laserscanner maximal 4 Msamples s 4 S 87 liefert Aktive Systeme haben jedoch auch Vorteile So existieren Systeme die durch Laufzeitmessung oder mittels Interferometrie Entfernung aktiv messen und hierbei punktweise eine bessere Genauigkeit als Kameras erreichen 4 S 84f Auch Laserscanner und Radarsysteme haben Vor teile gegen ber passiven Kamerasystemen Beispielsweise k nnen sie in vollst ndiger Dunkelheit weiterhin Objekte detektieren 4 S 85 Speziell Radarsysteme k nnen alufgrund des Dopplereffekts zu dem sehr genau die relative Geschwindigkeit der beobachteten Objekte messen 4 S 85 Eine Kombination mehrerer messtechnischer Metho den k nnte m glicherweise die jeweiligen Nachteile der einzelnen ver wendeten Systeme aufwiegen Die Abk rzung Msamples s bedeutet millionen Messungen pro Sekunde Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 3 Die Erstellung der Tiefenbilder erfolgt bei einem Stereokamerasystem aus dem Wissen um die Anordnung der Kameras und der relativen Ver schiebung der einzelnen Bildpunkte beider Aufnahmen Sie k nnen mit dem bestehenden System nicht im laufenden Betrieb sondern erst im Nachhinein berechnet werden Das bedeutet
33. d Stereomatching Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 4 In dieser Arbeit erzeuge ich aus dem Bild zweier zueinander r umlich versetzter gleich ausgerichteter Kameras eine dreidimensionale Sch t zung der Umgebung Dies entspricht der binokularen Raumwahrneh mung des Menschen und nutzt das Prinzip der Querdisparit t auch binokulare Disparit t 5 S 192 Die Disparit t gibt die Differenz der Koordinaten zweier demselben Objektpunkt entsprechender Bildpunkte im linken und rechten Kamerabild an Je n her sich das Objekt an den Kameras befindet desto gr er ist dieser Unterschied Die beiden Bild punkte haben in diesem Fall eine gro e Disparit t Je weiter der Objekt punkt entfernt ist desto kleiner ist die binokulare Disparit t also die horizontale Verschiebung zwischen seinen beiden Bildpunkten Obiekte Linkes Kamerabild Rechtes Kamerabild Abbildung 1 Binokulare Disparit t In Abbildung 1 ist das Prinzip der binokularen Disparit t dargestellt Die Koordinaten im dreidimensionalen Objektraum sind mit x f r die Hori zontale y f r die Senkrechte und z f r die Tiefe angegeben Um Ver wechselungen zu vermeiden verwende ich im zweidimensionalen Bild raum statt der Koordinaten x und y die Bezeichnungen u f r die horizon Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 5 tale und v f r die vertikale Achse Dabei ist zu beachten dass die
34. dass das mobile IPS zu erst in einem Messdurchgang Daten aufnimmt und anschlie end an einen station ren Computer angeschlossen wird dem es diese bermit telt Dieser Computer errechnet das Tiefenbild fusioniert daraufhin alle ermittelten Informationen und berechnet daraus die Trajektorie Meine Abschlussarbeit hebt diese zeitliche Einschr nkung an das IPS auf Sie erm glicht es die Tiefenkarte im laufenden Betrieb zu erstellen und sich folglich in ihr zu lokalisieren Dadurch stehen die Messergeb nisse schon w hrend eines Versuches direkt vor Ort zur Verf gung Besonders die robuste Erkennung und gegenseitige Zuordnung einzel ner Merkmale im linken und rechten Bild stellt eine gro e Herausforde rung dar Mit zunehmender Kameraaufl sung steigen der daf r erfor derliche Rechenaufwand und der entsprechende Speicherplatzbedarf stark an Au erdem m ssen neben der algorithmischen Verwertung der Bildinformationen gro e Datenmengen schnell zwischen den einzelnen verarbeitenden Systemen bertragen werden 2 Relevante Grundlagen der Bildverarbeitung 2 1 Grundlagen der Stereovision in der Bildverarbeitung Die Bildverarbeitung besch ftigt sich als Teilgebiet der Informatik mit der Verarbeitung von Signalen welche mit fotografischen Mitteln ge messen wurden Ihr Ziel ist die Extraktion von Informationen aus Bildda ten Beispiele f r Bildverarbeitungsprozesse sind Kantenerkennung Rauschreduktion Merkmalsextraktion un
35. denen Disparit ten mit unterschiedlichen Farben darzustellen Hierzu nutze ich den HSV Farbraum Im Gegensatz zum RGB Farbraum in dem Farben als Kombination ihrer Rot Gr n und Blauanteile defi niert sind gibt man in diesem die Farben als Kombination des Farb werts englisch hue der Farbs ttigung saturation und des Hellwerts oder der Dunkelstufe value 10 an Ich bilde dabei die Disparit t ausschlie lich auf den Farbwert ab Um gut erkennbare Farben zu erhal ten setze ich die S ttigung und den Hellwert auf den maximal m gli chen Wert Zur Darstellung der gef rbten Dispari tsbilder in der PSApp wandle ich sie vom HSV in den RGB Farbraum um Die Implementie rung ist dabei angelehnt an Umrechnung HSV in RGB 10 auf Wikipe dia Diese Einf rbung habe ich in Abbildung 5 am Beispiel Middlebury Datensatzes Teddy 11 demonstriert Rot entspricht hierbei einer Disparit t von Null beziehungsweise einer Position f r die der SGM Algorithmus keinen g ltigen Disparit tswert liefern konnte Je h her die Disparit t desto mehr geht die Darstellungsfarbe erst ins Gelbe dann ins Gr n und sp ter ins Blaue ber Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 30 _ Graustufen u i Farbliche Visualisierung Disparit tsbild FPGA Disparit tsbild FPGA Abbildung 5 Farbliche Visualisierung der Disparit tsbilder 5 2 Die Ansteuerung der FPGA Karte 5 2 1 Inbetrieb
36. die H he des Ein gangsbildes und n seine Breite angibt In den Eintr gen der Matrix wer den die Koordinaten des entsprechenden Pixels im unrektifizierten Bild als Tupel von Flie kommazahlen des Typs double gespeichert Wenn beispielsweise der Pixel an der Stelle u 200 v 300 im unrektifizierten Bild auf den Pixel an Stelle u 190 v 290 im rektifizierten Bild abgebildet werden soll ist dies dadurch angegeben dass in der Look Up tabelle der Matrixeintrag 190 290 die Werte 200 0 300 0 enth lt Bei der Implementierung des Quelltextes zum Erstellen der Look Up Tabelle habe ich mich an der Methode mageTransformation rectifylmage aus der OSVisionLib des DLR orientiert Die f r diese Berechnung notwendigen Informationen ber die Kame rageometrie hole ich mir aus dem Feedernetzwerk Sie liegen als stati sche Parameter des vorgeschalteten StereoFeeders vor und werden ber den Eingang des Feeders mittels der Methode getSourceFeeder StaticParams geometry abgerufen Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 27 Sobald die linke und rechte Look Up Tabelle fertig berechnet ist ber trage ich sie ber das Netzwerk an die SGM Box Dort werden die bei den hinterlegt und eingehende Stereobilder mit den in ihr gespeicher ten Abbildungsvorschriften rektifiziert Dazu verwende ich den in der OSLib implementierten ImageSubPixelReader welcher Methoden zur Interpolation von Bildern bereitstellt Da hierbe
37. driger als bei der in Abbildung 15 dargestellten Berechnung der kleineren Bilder inklusive Rektifizierung Die Skalierung der Bilder ben tigt auch in dieser Messung etwa 40ms Die Gesamtdauer der Disparit tsberechnung und somit die Bildrate des gesamten Systems wird folglich ma geblich durch die Rektifizierungs dauer bestimmt 6 2 Ein Vergleich mit der Berechnung auf einem Grafik prozessor Neben den Varianten f r die CPU und den FPGA wird am DLR auch eine Implementierung von SGM auf Grafikprozessoren GPU mit OpenCL Unterst tzung verwendet Diese ist genau wie die FPGA Implementierung in der Lage das Stereomatching in Echtzeit zu be rechnen Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 62 Ein wesentlicher Vorteil der Implementierung auf einer GPU ist dass keine Spezialhardware ben tigt wird wenngleich hinreichend leistungs starke Grafikkarten nicht unbedingt der Standardausstattung eines Arbeitsplatzrechners zuzuordnen sind Die Grafikkarten sind vielseitig einsetzbar und die entsprechende Software relativ einfach zu entwi ckeln und anzupassen Ein entscheidender Nachteil ist dass durch die Gr e und die hohe Energieaufnahme solcher leistungsstarken Grafikkarten ein mobiler Einsatz der GPU Implementierung nicht m glich ist Eine FPGA Implementierung von SGM ist deutlich kleiner und energieeffizienter Ich habe auf eine Messung der Leistungsaufnahme der beiden mir zur Ver
38. e ich sowohl einzelne Bildpunkte als auch das gesamte Disparit tsbild mit der ground truth aus dem Middlebury Datensatz verglichen Die SGM Parameter sind mit P 28 und P 29 identisch zu denen die ich in Abschnitt 6 2 verwendet habe In Abbildung 19 sind die Bildausschnitte dargestellt in denen ich die Punktmessungen vorgenommen habe Links ist das Disparit tsbild welches die FPGA Karte berechnet hat rechts das Referenzbild zu er kennen Zum Vergleich der Disparit ten verwende ich hierbei die Grau werte value im HSV Farbraum welche ich mit dem Werkzeug Farbpi pette der Bildbearbeitungssoftware GIMP ermittelt habe Diese Werte sind in Abbildung 19 in gr ne Rechtecke eingetragen Von ihnen ausge hende Pfeile weisen auf die Positionen an denen ich die jeweiligen Werte ermittelt habe Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 65 Disparit t als Grauwert Disparit tsbild FPGA Disparit tsbild ground truth Abbildung 19 Punktuelle Verifikation der Disparit tswerte anhand eines Referenzbildes Im oberen Bildausschnitt ist der Kopf des Teddys vergr ert dargestellt In der Mitte seines Gesichtes stimmen die Disparit ten Grauwert 35 in beiden Bildern berein Unten habe ich eine Kante mit einem relativ gro en Disparit tsunterschied vergr ert Hier weichen die Dispari t tswerte Grauwerte 50 und 30 um eine Stufe vom Referenzbild Grauwerte 51 und 31 ab Integration und Evalu
39. eedernetzwerk A bezeichnet hierbei das Netzwerk in dem Netzwerkfeeder A instanziiert wurde Analog dazu ist Feedernetzwerk B definiert Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 72 FeederData FeederData TCP Netzwerk Netzwerk Feeder Feeder B omod no THOod no omod no T 40d no FeederData FeederData Abbildung 24 Kommunikation mittels verallgemeinerter Netzwerkfeeder Die jeweilige Zuordnung der Netzwerkfeeder geschieht durch die Konfi gurationsdateien die auch den Rest der Feedernetzwerke beschreiben Dabei werden die IP Adresse und der TCP Port des jeweils anderen Feeders eingetragen Beim Verbindungsaufbau ist es unerheblich wel ches Netzwerk zuerst gestartet wird Jeder Netzwerkfeeder kann so wohl als TCP Client als auch als TCP Server agieren Hierbei versucht ein solcher Feeder beim Start als Client sich mit dem jeweils anderen Fee der auf dessen entsprechendem Serverport zu verbinden Ist dies nicht erfolgreich der andere Feeder also noch nicht gestartet worden schal tet er sich selbst in die Serverfunktion und wartet auf die eingehende Verbindung des Anderen Sobald eine Verbindung hergestellt ist wird sie bidirektional f r jeglichen Datenaustausch verwendet Es existiert Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 73 also pro Paar von Netzwerkfeedern h chstens eine TCP Verbindung Wird diese unterbrochen werden die Rollen von Client und Serv
40. ehen Autonome Kraftfahrzeuge k nnen damit beispielswei se die vor ihnen liegende Stra e und sich m glicherweise darauf befin dende Hindernisse erkennen und entsprechend reagieren Ein weiteres Beispiel sind spezielle Ger te die unter Zuhilfenahme weiterer Senso ren Innen und Au enr ume vermessen und kartieren k nnen Das menschliche Auge ist in seiner Wahrnehmung auf Licht zwischen 380 und 760 Nanometern 1 S 168 beschr nkt Bei Computersyste men werden zur Bilderstellung Kameras verwendet Der Messbereich der darin verbauten fotoaktiven Sensoren liegt nicht zwangsl ufig im Bereich des von Menschen wahrnehmbaren Lichtes Ein entsprechendes Computersystem kann folglich optische Signale erfassen die dem menschlichen Betrachter nicht sichtbar sind Maschinelles Sehen kann dem menschlichen Sehen also berlegen sein Jedoch beispielsweise bei der dreidimensionalen Wahrnehmung oft auch Raumwahrnehmung genannt hinken aktuelle Computersysteme dem visuellen System des Menschen hinterher Die meisten Ans tze sind zu rechen oder speicheraufw ndig um sie mit entsprechender Genauigkeit in Echtzeit durchzuf hren Einige verfahren jedoch errei chen Bildraten die mit der des menschlichen Auges vergleichbar sind Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 1 Ein Beispiel daf r ist der von Heiko Hirschm ller entwickelte von einem externen Dienstleister auf einem FPGA implementierte und von m
41. ehr viele Funktionen vor die ich jedoch nicht nutze da ich lediglich eine Punkt zu Punkt Verbindung zwischen dem Sensor kopf und der SGM Box ben tige Eines der Ziele bei der Entwicklung von MPI war hohe Leistungsf higkeit Es erm glicht den effizienten Aus tausch von Bin rdaten Als Netzwerkprotokoll nutzen die meisten Im plementierungen TCP Transmission Control Protocol Im Gegensatz zu WSDL erlaubt MPI keine Beschreibung der Struktur der zu bertragenden Daten MPI bietet in dem von mir gegebenen Anwen dungsfall also kaum Mehrwert gegen ber der reinen Nutzung von TCP Sockets Ich habe daher von der Verwendung von high level Protokollen abgesehen und ein eigenes Protokoll auf Basis von TCP implementiert Vgl Both point to point and collective communication are supported 18 Vgl MPl s goals are high performance scalability and portability 18 Vgl Although MPI belongs in layers 5 and higher of the OSI Reference Model implementa tions may cover most layers with sockets and Transmission Control Protocol TCP used in the transport layer 18 Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 38 5 3 3 Die detaillierte Beschreibung des implementierten Netzwerkprotokolls Um zwischen der SGM Box und dem Sensorkopf Daten wie die Kame rabilder das Tiefenbild und die Look Up Tabelle f r die Bildrektifizie rung zu bertragen habe ich ein eigenes Protokoll entwic
42. ein gew hlt um die Randbedingungen eines vollen und eines leeren Speichers zu provozieren 53 Eine solche Ausnahmebehandlung tritt im Programmablauf dann auf wenn ein unerwarte tes Ereignis aufgetreten ist Beispiele hierf r sind der Abbruch einer Netzwerkverbindung oder der versuchte Zugriff auf einen nicht zugreifbaren Speicherbereich Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 51 5 4 2 2 Die Betrachtung der Ringpuffer als Kan le Die oben beschriebenen Ringpuffer k nnen auch als gerichtete Kan le engl Channels betrachtet werden Einem Channel sind zwei Threads zugeordnet Der eine Thread darf ausschlie lich auf den Channel zugrei fen indem er Daten hinzuf gt beziehungsweise sendet Dieser wird als Senderthread bezeichnet Der andere Thread darf Daten aus dem Chan nel ausschlie lich herausnehmen beziehungsweise empfangen Dieser wird als Empf ngerthread bezeichnet Ist der Ringpuffer leer wartet der Empf ngerthread bis der Senderth read Daten in ihn geladen hat Erst dann kann er diese herausnehmen und den entsprechenden Programmaufruf erfolgreich beenden Analog dazu wartet der Senderthread falls der Ringpuffer voll ist auf den Emp f ngerthread bis dieser bereits gesendete Daten empfangen hat und somit wieder hinreichend Speicherplatz im Ringpuffer zur Verf gung steht W hrend des Wartens wird in Abst nden von 10 Millisekunden gepr ft ob die Voraussetzung daf r noch gegeb
43. en Verfahren wie Mutual Information MI und Census gelten als relativ robust gegen ber solcher radiometrischer Differenzen Die SGM Implementierung auf einer FPGA Karte die ich in dieser Arbeit nutze verwendet zur Kostenberechnung die Census Methode Dabei wird f r jeden Pixel in einer Reihe von Bits gespeichert ob die Pixel in seiner Nachbarschaft einen kleineren Wert als dieser zentrale Pixel haben oder nicht Die Matchingkosten zweier Pixel entsprechen dabei 3 Vgl The second term adds a constant penalty P for all pixels q in the neighborhood N of p for which the disparity changes a little bit i e 1 pixel The third term adds a larger constant penalty P for all larger disparity changes 2 S 3 p Vgl a constant penalty P4 larger constant penalty P 2 S 3 Sa Vgl Discontinuities are often visible as intensity changes This is exploited by adapting P2 to the intensity gradient i e P en 2 S 3 Hop Ipgl y Vgl Radiometric differences often occur due to the vignetting effect different expo sure times reflection which is viewpoint dependent etc 12 S 174 Vgl An extensive study of different matching costs showed that MI can model all global radiometric differences as well as image noise very well but it degrades with increasing local radiometric differences The same study identified Census as the most robust match ing cost for stereo
44. en eines bestimmten Typs gespeichert und geladen werden k nnen Dies wird zum Zeitpunkt der bersetzung vom Compiler gepr ft und gegebenenfalls mit einem entsprechenden Fehler angegeben Durch Threadsicherheit k nnen mehrere Threads auf ein und denselben Ring puffer zugreifen ohne dass dieser einen ung ltigen Zustand annehmen kann Dazu wird die Datenstruktur um Mechanismen erweitert die zur Laufzeit aktiv verhindern dass sich zwei zeitgleich auf sie initiierte Zu griffe berlappen Um eine threadsichere Nutzung der Ringpuffer zu erm glichen muss garantiert werden dass nie zwei Threads gleichzeitig auf ihn zugreifen Wenn beispielsweise zwei Threads im selben Moment beginnen einen Schreibzugriff durchzuf hren so w rden sie beide die aktuelle Schreibposition des Ringpuffers lesen um ihre Daten an der entspre chenden Speicherposition zu hinterlegen Da beide dieselbe Position hierf r nutzen w rden w re nicht definiert welcher Wert anschlie end in der entsprechenden Speicherzelle st nde Desweiteren w rden beide die Schreibposition um Eins erh hen und in den gemeinsamen Speicher zur ckschreiben Um dies zu vermeiden habe ich die Klasse Mutex aus der OSLib genutzt Jeder Ringpuffer besitzt genau einen Mutex Dieser Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 50 kann gesperrt und entsperrt werden Ist der Mutex gesperrt kann er nicht erneut gesperrt werden Dadurch dass ich zu Beginn jede
45. en ist Indem man vor dem Sen den pr ft ob der Channel voll ist kann man verhindern dass der Sen derthread unn tig wartet Analog dazu kann der Empf ngerthread vor dem Empfangen pr fen ob der Channel leer ist Dies ist vor allem dann notwendig wenn ein Thread bei mehreren Channels in der Rolle des Senders oder Empf ngers ist oder wenn einem Channel nur ein einziger Thread zugewiesen ist welcher f r ihn beide Rollen bernimmt Aus Gr nden der bersichtlichkeit sollte ein Channel in derselben Pro grammebene erzeugt werden wie die ihm zugeordneten Threads Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 52 5 4 3 Der Vergleich mit einer sequentiellen Implementie rung Durch die Einf hrung von Threads und Channels ist in der nebenl ufigen Implementierung gegen ber der sequentiellen Variante einiger Over head entstanden Trotz diesem ist die durchschnittliche Verarbeitungs zeit deutlich gesunken Wie in Abbildung 11 dargestellt liegt sie am Anfang noch ber der der sequentiellen Implementierung unterschrei tet diese jedoch schon beim zweiten Disparit tsbild Die angegebenen Messdaten beziehen sich auf die chronologisch erste parallelisierte mit der chronologisch letzten sequentiellen Implementie rung Die parallelisierte Variante habe ich nach dieser Messung noch weiterentwickelt Folglich ist sie in ihrer aktuellen Version im mittel noch deutlich schneller Siehe dazu Abschnitt 6 Die seq
46. en nicht parallelisierbaren Anteil Dieser kommt dadurch zu Stande dass die Verarbeitung in einer Pipeline aufwendiger zu realisieren ist als eine sequentielle Implementierung Er beinhaltet beispielsweise die Daten Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 48 bergabe zwischen den einzelnen Stufen und die Verwaltung der Threads 5 4 2 Die rechnerinterne Kommunikation einzelner Threads 5 4 2 1 Der Ringpuffer als verwendete Datenstruktur Damit die einzelnen Threads innerhalb eines physischen Systems unter einander kommunizieren k nnen wird eine gemeinsame Datenstruktur ben tigt Ich habe mich dazu entschieden diese als typ und threadsi chere Ringpuffer zu implementieren Bei einem Ringpuffer handelt es sich um eine Warteschlange engl Queue mit fester Kapazit t auf der fortlaufend geschrieben und gelesen werden kann ohne dass bereits enthaltene Daten kopiert oder ver ndert werden m ssen Da die Daten die man als erstes hineingibt auch wieder als erstes ausgelesen werden spricht man hierbei von einer FIFO First In First Out Da Ringpuffer relativ speicher und lauf zeiteffizient sind und sich leicht implementieren lassen werden sie vor allem in eingebetteten Systemen h ufig eingesetzt Neben den eigentli chen Daten werden lediglich drei Zeiger ben tigt Ein Zeiger markiert den Anfang des genutzten Speicherbereichs einer die aktuelle Leseposi tion und einer die aktuelle S
47. er Maus noch Tastatur angeschlossen sind kann der Benutzer diese Auswahl nicht treffen und das System f hrt infolge des sen nicht hoch Daher habe ich in der Datei etc default rcS ber die Zeile FSCKFIX yes eingestellt dass der Benutzer nicht gefragt und ein Dateisystemcheck immer durchgef hrt wird Nach einem Neustart durch Stromwegnahme wartet ebenfalls der Boot loader des Betriebssystems auf eine Eingabe des Benutzers Auch dies habe ich deaktiviert Dazu habe ich der Konfigurationsdatei Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 57 etc default grub die Zeile GRUB_RECORDFAIL_TIMEOUT 1 hinzuge f gt die den Timeout f r diese Eingabe auf eine Sekunde stellt Diese Einstellung wird durch Ausf hren des Programms update grub in den Bootloader bertragen 6 Test und Verifikation der Ergebnisse 6 1 Die Bildrate bei verschiedenen Aufl sungen Um die Echtzeitf higkeit meines Systems zu testen habe ich den Sen sorkopf SNO2 genutzt Die PSApp mit dem Feedernetzwerk habe ich dabei auf meinem Arbeitsplatzrechner ausgef hrt Ich habe die maxima le Bildrate f r die beiden Aufl sungen 1360x1024 Pixel und 680x512 Pixel gemessen Experimentell habe ich ermittelt dass bei den kleineren Bildern ab einer Bildrate von etwa 12 5Hz die Puffer in der PSApp langsam volllaufen Also habe ich diese Bildrate eingestellt und jeweils die Zeitabst nde zwischen dem Senden des Stereobildes an die SGM
48. er bei behalten Der Server wartet also wieder auf eine Verbindungsanfrage des Clients 7 1 3 Das Protokoll zur Daten bertragung In der aktuellen Implementierung k nnen alle durch die Klasse Ima geRef aus der OSLib repr sentierbaren Bildtypen und Arrays von Flie kommazahlen des Typs double bertragen werden Daf r m ssen diese Daten zum einen serialisiert und deserialisiert zum anderen entspre chend geroutet werden Mit Routing bezeichne ich in diesem Kontext die korrekte Weiterleitung der an einem bestimmten Eingang empfan genen Daten zu ihrem entsprechenden Ausgang Die daf r notwendigen Informationen werden ber TCP mit bertragen Die Serialisierung eines Objekts bezeichnet seine berf hrung in einen seriellen Datenstrom Dieser muss so formatiert sein dass daraus eindeutig die im Objekt gespeicherten Daten hervorgehen und wiederhergestellt werden k n nen Diesen Wiederherstellungsprozess bezeichnet man als Deserialisie rung Bei der Serialisierung sende ich zuerst die Nummer des Eingangs auf dem die Feederdaten entgegengenommen wurden als vorzeichenlosen 32Bit Integer Anschlie end bertrage ich den Zeitstempel der diesen Feederdaten zugeordnet ist als vorzeichenbehafteten 64Bit Integer Als n chstes sende ich die Typbezeichnung der zu bermittelnden Objekte als String und ihre Anzahl als vorzeichenlosen 32Bit Integer Der String wird hierbei nicht als null terminierter C String sondern unter Voran stellung
49. f gung stehenden Ger te verzichtet Die FPGA Karte kann mit der Stromversorgung des PCle Buses betrieben werden F r die Grafikkarte ist dies nicht ausreichend Daraus schlie e ich dass die FPGA Karte in unserem Anwendungsfall deutlich weniger Strom ben tigt als die Gra fikkarte Zum Vergleich der Qualit t der erzeugten Dispari tsbilder nutze ich den Middlebury Datensatz Teddy 11 Dieser enth lt ein Stereobild und ein dazugeh riges pixelgenaues Disparit tsbild welches ich bei der Auswertung als Referenz beziehungsweise ground truth verwende Das urspr nglich farbige Stereobild habe ich mit der Software IrfanView in zwei Graustufenbilder umgewandelt Sowohl auf der GPU als auch auf dem FPGA habe ich daraufhin das Disparit tsbild berechnet Die Bereiche f r die SGM keine Disparit t berechnen konnte sind bei der FPGA Implementierung schwarz bei der GPU Implementierung Wei gekennzeichnet In Abbildung 18 ist dies veranschaulichend dargestellt gt Vgl pixel accurate ground truth disparity data 11 Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 63 Bu a ER EL nenne hseenggscte un Em asi R Linkes Farbbild Rechtes Farbbild Referenzbild Grauwertbild erzeugen u rn Linkes Graustufenbild Rechtes Graustufenbild Disparit tsbild GPU Disparit tsbild FPGA Referenzbild Abbildung 18 Vergleich Teddy FPGA GPU Alle Disparit tsbilder beziehen sich hierbei auf das
50. hl sse DisplayPort HDMI VGA ein Bildsignal bekommen konnte Ich habe die Hauptplatine daraufhin auf ein anderes Carrier Board montiert wel ches alle Monitoranschl sse herausf hrt f r den mobilen Betrieb je doch aufgrund seiner zu gro en Abmessungen nicht geeignet ist An diesem Board erhielt ich ber einen der DisplayPorts ein Monitorbild Ich habe daraufhin die BIOS Einstellungen so angepasst dass ich auch Da die mir zur Verf gung stehenden Monitore lediglich ber VGA und DVI Anschl sse verf gen sind entsprechende Adapter dazwischengeschaltet Das DisplayPort Signal wird auf HDMI und dies anschlie end auf DVI gewandelt 30 Es handelt sich hierbei um das conga TEVAL COM Express Type 6 Evaluation Carrier Board von Congatec Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 23 bei Verwendung des in der SGM Box eingesetzten kleinformatigen Carrier Boards ein Bildsignal erhalte In der Spezifikation der Linux Treiber f r die FPGA Karte wird als Lauf zeitumgebung die Linux Distribution SUSE Linux Enterprise Desktop 11 SLED 11 mit der Linux Kernel Version 2 6 32 angeben Diese Distributi on hat sich als Entwicklungssystem f r diese Arbeit jedoch aus folgen den Gr nden als ungeeignet erwiesen Als offizielle Quelle f r Soft warepakete k nnen nur die Installations DVDs genutzt werden welche eine stark eingeschr nkte Auswahl bieten Beispielsweise ist die Versi onskontrollsoftware Sub
51. i f r jeden Pixel des Bildes seine Umgebung betrachtet werden muss ist dieses Verfahren auf einer CPU relativ zeitaufw ndig Daher habe ich mich auf bilineare Interpolation beschr nkt die im Vergleich zur bikubischen Interpolation zwar weniger genaue Ergebnisse liefert jedoch schneller zu berechnen ist 5 1 3 Die Skalierung der Bilder Damit die rektifizierten Stereobilder von der FPGA Karte verarbeitet werden k nnen m ssen sie umformatiert werden Die Eingangsbilder ben tigen eine Breite von 1024 Pixeln und eine H he von 508 Pixeln Der in Hardware implementierte Algorithmus ist auf diese Bildgr e optimiert Die berechneten Dispari tsbilder haben mit einer Breite von 504 Pixeln und einer H he von 248 Pixeln in etwa die halbe Aufl sung der Eingangsbilder wobei sich die darin gespeicherten Disparit tswerte auf die Eingangsbilder beziehen Da diese Bildgr en in der Regel nicht dem Format der Eingangsbilder entsprechen die vom Sensorkopf bermittelt werden m ssen diese skaliert werden Damit k nnen so wohl gr ere als auch kleinere Bilder verarbeitet werden Die horizon tale und vertikale Skalierung sind dabei voneinander unabh ngig Zum besseren Verst ndnis habe ich die einzelnen Skalierungsschritte in Ab bildung 4 dargestellt Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 28 Skalierung der Bildgr e A Kamerabilder um Faktor fund f 1360x1024 bertragung
52. ich das COM Express Type 6 Ultra Lite Carrier 8 S 1 von der Connect Tech Inc welches ich im Folgenden auch als Carrier Board bezeichne Neben der bereits erw hnten Erwei terung der Hauptplatine um einige Peripherieanschl sse enth lt es Anschl sse zur Spannungsversorgung Diese stellt mit 12 Volt Gleich spannung die Hauptenergieversorgung der SGM Box dar von der alle weiteren Spannungen abgezweigt und die anderen beiden Platinen betrieben werden Im Systemstart habe ich einen kurzzeitigen Strom fluss von mehr als 3 Ampere gemessen Ein Netzteil welches bei 12 Volt einen Stromfluss von 4 Ampere zul sst und folglich eine Ausgangsleis tung von 48 Watt besitzt hat sich als stabil erwiesen Das Board enth lt zwei kombinierte mSATA miniPCle Slots Das bedeu tet dass die Slots f r beide Protokolle verwendet werden k nnen Die jeweilige Funktion wird durch Jumper gew hlt An einen der beiden Slots ist via mSATA eine Solid State Disk SSD vom Typ Crucial M500 mit 240 Gigabyte Speicherkapazit t angeschlossen Auf dieser ist das Be triebssystem und die von mir entwickelte Software der SGM Box instal liert Der andere Slot dient der Anbindung der FPGA Karte mittels mi niPCle Desweiteren befinden sich auf dem Carrier Board zwei Gigabit Ethernet Buchsen welche beide genutzt werden ber eine der beiden ist die SGM Box mit dem Sensorkopf verbunden Die andere Buchse kann 28 Eine vollst ndige bersicht der A
53. ichard Madison IEEE 2003 IEEE Computer Society Conference on Computer Vision and Pattern Recognition Bd 1 S 195 202 23 Gonzalez Rafael C und Woods Richard E Digital Image Processing s l Addison Wesley Publishing Company Inc 1992 24 Microsoft Corporation Applying Basic Profile Rules When Consuming Web Services Microsoft Developer Network Online August 2003 Zitat vom 26 Februar 2015 https msdn microsoft com en us library ms953976 aspx Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 80 Anhang Abbildungsverzeichnis Abbildung 1 Binokulare Disparit t 5 Abbildung 2 Schematische Darstellung der Epipolargeometrie 21 8 Abbildung 3 Aufbau des eingebetteten Systems 20 Abbildung 4 Skalierung der Ein und Ausgangsbilder 29 Abbildung 5 Farbliche Visualisierung der Disparit tsbilder 31 Abbildung 6 Laden des Kernelmoduls 32 Abbildung 7 Entladen des Kernelmoduls 33 Abbildung 8 Kompression der Dispari tsbilder 44 Abbildung 9 Aufteilung in unabh ngige Komponenten 46 Abbildung 10 Parallelisierung durch eine Pipeline 48 Abbildung 11 Verarbeitungsgeschwindigkeit sequentiell und parallel 53 Abbildung 12 XML Konfiguration des SGMOPFeeders 55 Abbildung 13 Entscheidungsprozess Skalierung oder Bildausschnitt 56 Abbildung 14 Bildrate der Disparit tsbilder 59 Abbildung 15 Laufzeit der wesentlichen Verarbeitungsschritte 680x512 60 Abbildung 16 Laufze
54. ichtung Sobald ich das Disparit tsbild empfangen habe formatiere und skaliere ich es mit den Kehrwerten der bermittel ten Faktoren wieder entsprechend zur ck Damit ist die durch die FPGA Karte durchzuf hrende Berechnung abgeschlossen und das Resultat kann ber das Netzwerk an den Sensorkopf bertragen werden Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 34 5 3 Die Kommunikation der einzelnen physischen Kom ponenten 5 3 1 Die Anforderungen an das eingesetzte Netzwerk protokoll Wie oben beschrieben sind der Sensorkopf und die SGM Box ber Ethernet verbunden Um Daten untereinander austauschen zu k nnen m ssen die beiden Rechnersysteme ein gemeinsames Netzwerkproto koll implementieren Es existiert eine Vielzahl an Protokollen und die Wahl eines geeigneten Kandidaten h ngt von mehreren Faktoren ab Eigenschaften auf die ich bei der Auswahl einer geeigneten Methode besonderen Wert gelegt habe sind Geschwindigkeit Wartbarkeit Einfachheit und Portierbarkeit Die in beide Richtungen zu bertragenden Bilder und vor allem die Look Up Tabelle stellen relativ gro e Datenmengen dar Daher muss das verwendete Protokoll zulassen dass die Daten schnell verarbeitet werden k nnen Au erdem soll der Overhead also die durch das ver wendete Protokoll zu den Nutzdaten hinzugef gte Datenmenge m g lichst gering sein Da die SGM Box und der entsprechende Feeder auch nach meiner Mas terarbeit
55. ierung eines Testboards zur Echtzeit 3D Verarbeitung 66 Erwartungs SGM wert px FPGA Abbildung 20 Erwartungswert und Standardabweichung von SGM FGPA GPU und ground truth Die Gesamtqualit t der mit SGM berechneten Disparit tsbilder habe ich durch ihre jeweilige Abweichung voneinander und von der ground truth gemessen Ich habe dazu mit Python und OpenCV den Erwartungswert und die Standardabweichung des Betrags der Grauwertdifferenzen berechnet In Abbildung 20 habe die Ergebnisse tabellarisch aufgef hrt In der rechten oberen H lfte ist der Erwartungswert und in der linken unteren H lfte die Standardabweichung jeweils in Pixeln angegeben Die FPGA Implementierung weicht mit durchschnittlich 24 0 Pixeln weniger von der ground truth ab als die GPU Implementierung mit 25 78 Pixeln Die Standardabweichung ist dabei mit 55 33 Pixeln FPGA und 55 88 Pixeln GPU bei beiden in etwa gleich Die mittlere Differenz zwischen den beiden SGM Implementierungen ist mit 13 23 Pixeln ge ringer als ihre jeweilige Abweichung von der ground truth Die beiden zeigen jedoch im gegenseitigen Vergleich mit 42 04 Pixeln eine relativ gro e Standardabweichung 6 4 Das eingebettete System im Einsatz Seinem ersten Test unter realen Bedingungen wurde das von mir entwi ckelte System am 14 und 15 Januar 2015 unterzogen In einer Mess fahrt auf einer Teststrecke in Braunschweig wurde es zusammen mit Integration und Evaluierung eines Testb
56. ir in dieser Arbeit verwendete Algorithmus Semi Global Matching 2 den ich in Abschnitt 2 2 genauer erkl re Er nutzt das Prinzip der binokularen Stereovision welches ich in Abschnitt 2 1 beschreibe 1 2 Zielsetzung im Kontext des assoziierten Forschungs projektes Diese Abschlussarbeit ist als Teil eines Forschungsprojektes am Deut schen Zentrum f r Luft und Raumfahrt e V DLR entstanden In dem Projekt wird ein System zur dreidimensionalen Erfassung der Umgebung und der Trajektorie auf der es sich durch diese bewegt entwickelt Es vereint hierzu mehrere verschiedene Sensorsysteme und wird als In tegral Positioning System IPS 3 S 21 bezeichnet Die beiden wesent lichen Sensoren sind ein Inertialmesssytem IMU und zwei Videokame ras die als Stereokamera fungieren Das System ist f r den Innen und Au enbereich konzipiert Diese Kameras stellen ein passives System dar da sie lediglich die durch die Umgebungslichter beleuchtete Umwelt erfassen Eine h ufig einge setzte Alternative zur Erzeugung von Tiefenbildern mit einer Stereoka mera stellen aktive Systeme wie beispielsweise Radar und Laserscanner dar Ebenso gibt es Einzelkamerasysteme die ein bestimmtes Muster auf die zu messende Umgebung projizieren und aus der Verzeichnung desselbigen eine Tiefensch tzung vornehmen Ein entscheidender Nachteil solcher aktiver Systeme ist dass sie sich bei gleichzeitigem 1 Das DLR ist das Forschungszen
57. it der wesentlichen Verarbeitungsschritte 1360x1024 61 Abbildung 17 Laufzeit der wesentlichen Verarbeitungsschritte 1360x1024 ohne Rektifizierung 62 Abbildung 18 Vergleich Teddy FPGA GPU 64 Abbildung 19 Punktuelle Verifikation der Disparit tswerte anhand eines Referenzbildes 66 Abbildung 20 Erwartungswert und Standardabweichung von SGM FGPA GPU und ground truth 67 Abbildung 21 Messkampagne Braunschweig 68 Abbildung 22 Einsatz des Systems im Stra enverkehr 69 Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 81 Abbildung 23 Anwendungsbeispiel des Netzwerkfeeders Abbildung 24 Kommunikation mittels verallgemeinerter Netzwerkfeeder Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 71 73 82
58. kelt Dabei habe ich neben guter Erweiterbarkeit und effizientem Datenaustausch besonderen Wert auf Einfachheit und leichte Verst ndlichkeit gelegt Ich habe den Datenaustausch mittels TCP Sockets implementiert Da TCP garantiert dass die zu bertragenden Daten entweder korrekt zugestellt werden oder ein entsprechender Fehler erkannt wird muss ich keine zus tzlichen Mechanismen zur Fehlererkennung wie bei spielsweise Pr fsummen oder paketweise Empfangsbest tigungen vorsehen Die SGM Box bernimmt dabei die Rolle des Servers und der Sensorkopf die des Clients Das bedeutet dass die SGM Box auf einem TCP Port eingehende Verbindungen vom Sensorkopf entgegennimmt Sobald eine Verbindung hergestellt wurde k nnen Informationen bidi rektional ausgetauscht werden Beim Datenaustausch zwischen mehreren verschiedenen Rechnern sollte darauf geachtet werden dass unterschiedliche Architekturen unterschiedliche Speicherdarstellungen von Zahlen die mehr als ein Byte Speicherplatz einnehmen besitzen k nnen Die beiden am meisten verbreiteten Formen sind Big Endian und Little Endian Big Endian Architekturen speichern das h chstwertige Byte an der niedrigsten Adresse 12 S 856 und Little Endian Architekturen speichern das niederwertigste Byte an der niedrigsten Adresse 12 S 856 In der Regel werden Daten im Netzwerkverkehr als Big Endian formatiert Daher wird diese Darstellung auch network byte order genannt Die
59. l Specification Revision 2 0 21 April 2012 14 Cormen T H et al et al Introduction to Algorithms 3rd ed Cambridge The MIT Press 2009 15 Christensen Erik et al et al Web Services Description Language WSDL 1 1 s l W3C 15 M rz 2001 16 Wikipedia Circular buffer Wikipedia the free encyclopedia Wikipedia Online 31 Januar 2015 http en wikipedia org wiki Circular_buffer 17 Deutsches Zentrum f r Luft und Raumfahrt DLR Das DLR im berblick Website des DLR Online 2 Februar 2015 http dIr de dir de desktopdefault aspx tabid 10002 DLR Start About 18 Wikipedia Message Passing Interface Wikipedia the free encyclopedia Wikipedia Online 17 Februar 2015 http en wikipedia org wiki Message_Passing_Interface 19 Ubuntu Community Ubuntu Community Help Wiki BootOptions Ubuntu Community Help Wiki Online 3 Februar 2015 https help ubuntu com community BootOptions 20 Avnet Xilinx Spartan 6 LX75T Development Kit User Guide Avnet Electronics Corporation Web site Online 21 Januar 2015 http www em avnet com Support 20And 20Downloads xIx_s6_1x75 t_dev ug_reva032811 pdf 21 Nordmann Arne File Epipolargeometrie svg Wikimedia Commons Wikimedia Commons Online Dezember 2007 Zitat vom 17 Januar 2015 http commons wikimedia org wiki File Epipolargeometrie svg 22 High Accuracy Stereo Depth Maps Using Structured Light Scharstein Daniel und Szeliski R
60. l daf r ist das vom Betrachter aus gesehen rechte Auge des Gesichtes in Abbildung 1 das im rechten Kamerabild von dem W rfel verdeckt wird Weitere Herausforderungen im Objektraum stel len Reflektionen Beleuchtungsunterschiede fehlende Texturen und Vgl Der Koordinatenursprung des Bildkoordinatensystems liegt per Definition in der oberen linken Bildecke 4 S 14 Man spricht in diesem Fall auch von dense stereo matching 2 S 1 Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 6 Mehrdeutigkeiten dar Bei Betrachtung einer untexturierten wei en Wand existieren keine Merkmale die eine Zuordnung korrespondieren der Bildpunkte erm glichen Auch wenn sich gleichartige Merkmale auf einer gr eren Fl che h ufig wiederholen wie beispielsweise bei einer geziegelten Hauswand ist die eindeutige Zuordnung von Pixeln im lin ken und rechten Bild problematisch In der Kamera f hrt die Vignettierung also die durch das Kameraobjek tiv hervorgerufenen Verdunkelung des Bildes in den Randbereichen dazu dass korrespondierende Punkte nicht unbedingt die gleiche Hel ligkeit im Bildraum ausweisen Auch die Verzerrung des Bildes durch die abbildende Optik erschwert das Stereomatching Abh ngig vom ver wendeten Algorithmus k nnen verschiedene weitere Effekte auftreten Bei der scanline optimization 6 S 175 kommt es beispielsweise zur Bildung von Artefakten in Form von Streifen im Bild
61. lich Informationen enthalten Die Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 42 bertragung der Dispari tsbilder kann somit beschleunigt werden Dabei sollte die Kompression der Daten jedoch nicht l nger dauern als die bertragung der unkomprimierten Daten Ich habe hierf r ein Kom pressionsverfahren entwickelt dass sich relativ einfach und effizient implementieren l sst Ein Pixel wird dabei verlustfrei von 16Bit auf 12Bit Datenvolumen kom primiert Dabei werden 2 Pixel mit 7 4 Festkommadarstellung in 3 Bytes statt in 4 Bytes bertragen Die jeweils 4 Bit Subpixelanteil der beiden Pixel werden in einem Byte zusammengefasst Die 7 Bit Vorkommaan teil eines jeden Pixels werden in je einem einzelnen Byte bertragen dessen oberstes Bit ungenutzt bleibt Die bertragungsreihenfolge ist so gew hlt dass zwischen zwei Bytes mit Vorkommaanteilen das ihnen zuzuordnende Subpixelbyte bermittelt wird Die niederwertigen 4 Bits enthalten hierbei die Subpixel des zuerst bermittelten beziehungswei se geraden Pixels die h herwertigen 4 Bits die des als zweites bermit telten beziehungsweise ungeraden Pixels Die Bezeichnungen gerade und ungerade beiziehen sich hierbei auf die Nummer in der bertra gungsreihenfolge der Pixel Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 43 Vorkommastelle Nachkommastelle 0 1 2 3 6 E52 2 E35 2 E gerader Disparit tspixel
62. linke Kamerabild und besitzen 64 Disparit tsstufen Die Werte beider berechneter Dispari t tsbilder sind genau wie die des Referenzbildes um den Faktor 4 ska liert Als SGM Parameter habe ich bei der Berechnung auf der GPU P 28 und P 560 f r die FPGA Karte P 28 und P 29 eingestellt Die Abweichung in den Werten ist darin begr ndet dass bei der FPGA Implementierung der gradientenabh ngige Parameter P intern noch Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 64 mit einem Faktor von etwa 20 multipliziert wird Der genaue Faktor war nicht ermittelbar Die Grafikkarte f hrt nach Berechnung des SGM eine vollst ndige Links Rechts Konsistenzpr fung durch der FPGA lediglich eine schnelle Pr fung Die GPU Ergebnisse werden au erdem noch mit einem 3x3 Pixel gro en Median Filterkernel gegl ttet Der optische Vergleich der beiden Ergebnisse zeigt keine gro en Unter schiede Beide errechneten Dispari tsbilder entsprechen ann herungs weise dem Referenzbild Bei n herer Betrachtung f llt auf dass der FPGA mehr Disparit tspunkte zuordnen kann als die GPU Die Konturen der Objekte kommen jedoch bei der GPU besser heraus da sie glatter dargestellt werden Dies ist vor allem bei den sich im Vordergrund be findenden Palmen gut zu erkennen 6 3 Die Verifikation der Ergebnisse mittels einer Refe renzszene Um die Korrektheit der von der SGM Box gelieferten Dispari tsbilder zu verifizieren hab
63. llungen beschrieben Diese legen fest ob die von der Kamera gelieferten Eingangsbilder auf die vom FPGA erwartete Bildgr Be skaliert werden sollen oder ob sie ihre eigene beibehalten und ein entsprechender Ausschnitt an den FPGA bermittelt wird Dieser Aus schnitt ist mit einer Breite von 1024 Pixeln roiWidth und einer H he von 508 Pixeln roiHeight so gro wie die Eingangsbilder des FPGAs Seine linke obere Ecke im von der Kamera gelieferten Eingangsbild wird Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 55 mit den Parametern roiOriginX und roiOriginY festgelegt Falls das Ein gangsbild in seiner Breite beziehungsweise H he die Summe aus roiOri ginX und roiWidth beziehungsweise roiOriginY und roiHeight unter schreitet wird kein Ausschnitt gebildet sondern das gesamte Bild auf die Gr e der Eingangsbilder des FPGAs skaliert Zur Veranschaulichung habe ich diesen Entscheidungsprozess in Abbildung 13 dargestellt Konfiguration laden enableScaling true roiOriginX roiWidth 2 inputWidth roiOriginY roiHeight gt inputHeight Eingangsbilder Bildausschnitt skalieren verwenden Abbildung 13 Entscheidungsprozess Skalierung oder Bildausschnitt Ich habe die SGM Box so eingerichtet dass beim Systemstart automa tisch das Kernelmodul zur Ansteuerung der FPGA Karte geladen und der Server SGMOPServer zur Kommunikation mit dem Sensorkopf gestar Integration und Evaluierung
64. n Rechner ausgef hrt werden Dieser wird per Gigabit Ethernet und USB 2 0 High Speed angeschlossen In diesem Dokument betrachte ich das Sensor Framework der Einfachheit halber als Bestandteil des Sensorkopfes obwohl ich es stets auf einem externen Rechner laufen lassen habe 4 3 Die verwendeten Technologien 4 3 1 Die SGM Box als eingebettetes System 4 3 1 1 Technische Daten der SGM Box Die SGM Box stellt ein eigenst ndiges Rechnersystem dar welches sich aus drei Platinen zusammensetzt Die Hauptplatine enth lt den Haupt prozessor CPU und den Arbeitsspeicher RAM Sie wird durch eine Peripherieplatine um einige standardisierte Anschl sse erweitert ber diese ist auch die FPGA Karte angebunden welche die dritte Platine darstellt Ich habe sie in Abschnitt 4 3 2 separat beschrieben Bei der Hauptplatine handelt es sich um das Board conga TC87 von der congatec AG Es ist im Formfaktor COM Express Compact 95 x 95 mm Type 6 Connector Layout 7 S 1 gefertigt und beinhaltet eine CPU vom Typ Intel Core i7 4650U 7 S 1 und zwei Sockel f r Ar Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 21 beitsspeicher vom Typ SO DIMM DDR3L 7 S 1 In einen der beiden Sockel habe ich das RAM Modul DDR3L SODIMM 1600 8GB 7 S 2 eingesetzt Den anderen Sockel habe ich f r die M glichkeit der sp te ren Erweiterung des Systems frei gelassen Als Peripherieplatine verwende
65. n eine in der Abteilung in der ich meine Abschlussarbeit schreibe entwickelte umfangreiche C Softwarebibliothek namens OSLib verwendet Sie dient der plattformunabh ngigen Implementie rung von Programmen und wird intern als Standardbibliothek genutzt Sie wird erweitert durch die OSVisionLib welche dar ber hinaus einige Funktionen zur Bildverarbeitung enth lt Die bertragung und Synchro nisation der Sensordaten innerhalb des Sensorkopfes erfolgt ber die ebenfalls in dieser Abteilung entwickelte SFSLib Die jeweiligen Daten werden mit einem Zeitstempel versehen und durch eine Reihe von gekapselten Verarbeitungsschritten geleitet Diese gekapselten Verar beitungsschritte werden als Feeder bezeichnet und verf gen ber Eing nge und Ausgange f r die von ihnen zu verarbeitenden Daten An diesen werden sie zu einem Netzwerk zusammengeschlossen welches den gesamten Verarbeitungsprozess der Sensordaten beschreibt Ein einfaches Beispiel daf r ist der StereoFeeder der an zwei Eing ngen je ein Bild annimmt und an einem Ausgang ein Bild bereitstellt in dem die Eingangsbilder nebeneinander gelegt wurden Ein weiteres Beispiel stellt der von mir entwickelte SGMOPFeeder dar den ich in Abschnitt 5 1 1 genauer beschreibe 1 Die SFSLib ist eine C Library for Sensor Feeding an d Synchronization Vgl https svn dir de SFSLib trunk SFSLib README TXT Revision 1934 Vgl A high precision clock generates time
66. n und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 69 Abschnitt 6 2 durch Multiplikation mit dem Faktor 4 aufgehellt Unten ist das von der SGM Box rektifizierte linke Kamerabild dargestellt 7 Ausblick 7 1 Eine Verallgemeinerung des Netzwerkfeeders 7 1 1 Ein Anwendungsfall f r Netzwerkfeeder W hrend der Bearbeitung meiner Masterarbeit entstand in der Diskus sion mit Kollegen die Idee das von mir implementierte Protokoll nicht nur f r die Anbindung der SGM Box an das Sensornetzwerk zu verwen den sondern einen allgemeinen Netzwerkfeeder zu implementieren Dieser Netzwerkfeeder soll es erm glichen ein Feedernetzwerk verteilt in einem Computernetzwerk laufen zu lassen Das Feedernetzwerk wird dazu aufgetrennt und an beiden Seiten der Trennstelle ein Netzwerk feeder eingef gt Dabei soll die Auftrennung des Feedernetzwerkes f r alle anderen Feeder transparent sein Das bedeutet dass sie sich so verhalten als w rde das Feedernetzwerk lokal zusammenh ngend aufgebaut sein und die verbindenden Netzwerkfeeder nicht existieren Rechenintensive Feeder oder solche Feeder die spezielle Hardware ben tigen k nnen auf diese Weise ausgelagert werden Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 70 Sensorkopf Workstation Netzwerkfeeder Kamera Rektifizierung Netzwerkfeeder Stereomatching Trajektorie Abbildung 23 Anwendungsbeispiel des Netzwerkfeeders Wenn man bei
67. n und die damit verbundenen Flaschen h lse entfernen Ein weiteres Werkzeug bei der Programmierung ist eine Versionskon trollsoftware Sie erm glicht es verschiedene Entwicklungspfade zu verfolgen und jeden in ihr erfassten Entwicklungszustand sp ter wie derherzustellen Diese Erfassung eines aktuellen Zustandes wird h ufig auch als Commit bezeichnet Dabei ist es meiner pers nlichen Erfahrung nach besonders wichtig jedem Commit eine aussagekr ftige Nachricht beizuf gen Diese beschreibt kurz aber vollst ndig welche nderungen seit dem letzten Commit vorgenommen wurden Au erdem ist es hilf reich anzugeben ob und mit welchem Ergebnis das Programm gerade einem m glichen Test unterzogen wurde Ich habe die in meiner Ar beitsgruppe am DLR g ngige Versionskontrollsoftware SVN genutzt Unter Windows habe ich sie mit der grafischen Benutzeroberfl che Tortoise und unter Linux von der Kommandozeile aus bedient 3 4 Die verwendete Fremdsoftware Ich habe in meiner Arbeit verschiedene externe Softwarewerkzeuge und Bibliotheken genutzt Damit die von mir entwickelte Software auch auf Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 15 andere Systeme bertragen und dort genutzt beziehungsweise verifi ziert werden kann ist es essentiell dass bekannt ist welche fremde Software ich in welchen Versionen genutzt habe Ich habe nach M glichkeit keine betriebssystemspezifischen Bibliothe ken sonder
68. nahme und Test der FPGA Karte Um die FPGA Karte unter dem Betriebssystem Linux nutzen zu k nnen wird ein spezieller Treiber ben tigt welcher von dem externen Dienst leister entwickelt wurde der auch den FPGA programmiert hat Nach geringf giger Korrektur der Include Direktiven in einem Headerfile des Treibers konnte ich ihn mithilfe des beiliegenden Makefiles bersetzen Das Laden und Entladen des Kerneltreibers erfolgt ber die Scripts s6_pcie_load sh und s6_pcie_unload sh welche das Unternehmen ebenfalls zur Verf gung gestellt hat Bevor die Karte verwendet werden kann muss der entsprechende Treiber geladen werden Dies erfordert root Rechte und geschieht ber das Script s6_pcie_load sh Wie in Abbildung 6 dargestellt sind nach dem Laden des Treibers sowohl das Kernelmodul als auch die entsprechende Ger tedatei dev s6_pcie vorhanden Im Kernellog wird angezeigt dass die Hardware korrekt erkannt wurde und welche Version des Bitstreams aktuell geladen ist 3 Administratorrechte Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 31 root sgm linux home adminos driver lsmod grep s6_pcie root sgm linux home adminos driver ls dev s6 ls cannot access dev s6 No such file or directory root sgm linux home adminos driver s6_pcie_load sh root sgm linux home adminos driver ls dev s6 dev s6_pcie root sgm linux home adminos driver lsmod grep s6_pcie s6_pcie 13366 root sgm li
69. ner ge eigneten Technologie aus mehreren zur Verf gung stehenden Alternati ven Eine wesentliche Eigenschaft klar formulierter Anforderungen ist auch dass sich aus ihnen Testszenarien sowohl f r das Gesamtsystem als auch f r einzelne Komponenten ableiten lassen Damit kann die jeweilige Komponente schon vor Fertigstellung des endg ltigen Systems j Vgl Pixel wire matching is done by computing the Hamming distance of bit vectors of corresponding pixels 12 S 175 Vgl optimization is performed in 1D only not in 2D which is NP complete 12 S 175 Vgl The novel idea of SGM is the computation along several paths symmetrically from all directions through the image 12 S 175 Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 11 getestet und im Erfolgsfall als fehlerfrei betrachtet und eingesetzt wer den Zur Umsetzung der Anforderungen gibt es in der Regel mehrere alterna tive L sungen Ich habe in der Regel zwei oder drei davon eingehend betrachtet und anschlie end eine ausgew hlt Ein wichtiges Kriterium hierbei war neben der Leistungsf higkeit einer m glichen L sung ihre Komplexit t und der damit verbundene Implementierungsaufwand In vielen Projekten in denen ich bisher gearbeitet habe wurden auch noch nach der Erfassung der Anforderungen einzelne solche ge ndert oder hinzugef gt Dies geschieht zum Beispiel durch neue Erkenntnisse oder durch Fehler bei der F
70. nnnnnnnnnnnnnnnn 26 5 1 Die grundlegenden Verarbeitungsschritte eseeeeeen 26 Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung ii 5 1 1 Das Empfangen und Senden der Feederdaten 26 5 1 2 Die Rektifizierung der Stereobilder 00404 0 27 5 1 3 Die Skalierung der Bilder usss00000seesseennnnennsnennnennnnn 28 5 1 4 Die Visualisierung der Disparit tsbilder nen 30 5 2 Die Ansteuerung der FPGA Karte uuuesesssssseessssnnennnnnnnnnnnnennnn 31 5 2 1 Inbetriebnahme und Test der FPGA Karte nen 31 5 2 2 Ansteuerung mittels Userspace Library uu 34 5 3 Die Kommunikation der einzelnen physischen Komponenten 35 5 3 1 Die Anforderungen an das eingesetzte Netzwerkprotokoll35 5 3 2 Eine Betrachtung verschiedener Netzwerkprotokolle 36 5 3 3 Die detaillierte Beschreibung des implementierten Netzwerkprotok llsie ensertene ei 39 5 3 4 Die Beschreibung der Kompression von Disparit tsbildern 42 5 4 Die Parallelisierung der Verarbeitungsprozesse un 44 5 4 1 Die Aufteilung in einzelne Threads u en 44 5 4 2 Die rechnerinterne Kommunikation einzelner Threads 49 5 4 2 1 Der Ringpuffer als verwendete Datenstruktur 49 5 4 2 2 Die Betrachtung der Ringpuffer als Kan le 52 5 4 3 Der Vergleich mit einer sequentiellen Implementierung 53 5 5 Die Erstellung des einsetzbaren
71. nschl sse ist im Benutzerhandbuch des Carrier Boards unter Block Diagram 7 S 8 zu finden 7 Vgl Input Power 7 S 12 8 Vgl Selection between mSATA and miniPCle is done on the MULTI JUMPER block 7 S 22 Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 22 genutzt werden um der SGM Box Zugang zum Intranet des DLR bereit zustellen Dies ist insbesondere f r den Zugriff auf die Server des Versi onskontrollsystems erforderlich Ich habe die Software der SGM Box direkt auf dem Zielsystem entwi ckelt Daher habe ich zwei der USB Ports genutzt um Maus und Tasta tur anzuschlie en Die Bildschirmausgabe erfolgt ber den DisplayPort des Carrier Boards Zur Installation der Betriebssysteme habe ich ein externes ber USB angeschlossenes DVD Laufwerk verwendet Die anderen Anschl sse des Carrier Boards bleiben ungenutzt Eine detailliertere Beschreibung technischer Einzelheiten kann den Benut zerhandb chern beziehungsweise Datenbl ttern der oben angegebenen Komponenten entnommen werden 4 3 1 2 Installation des Software Basissystems Im Folgenden Abschnitt stelle ich den Prozess der Installation des Basis systems dar Dies beinhaltet die erforderlichen BIOS Einstellungen das verwendete Betriebssystem und die f r die Entwicklung genutzten Werkzeuge Die erste Herausforderung bei der Inbetriebnahme des eingebetteten Computersystems war dass ich ber keinen der Monitoransc
72. nux home adminos driver dmesg tail 5935 146758 s6_pcie Done unloading module 6361 773305 s6_pcie Loading module 6361 773480 s6_pcie PCI BARO physical address xf6800000 size 0x1088888 6361 773869 s6_pcie FPGA version 6361 773869 Algorithms SGM EXT Test 6361 775712 s6_pcie Done loading module 6361 773869 Bitstream 3 0 6361 773869 GIT Hash c28f7465b320da5d 6361 773869 Date 20140415 6361 773869 Time 160140 root sgm linux home adminos driver Abbildung 6 Laden des Kernelmoduls Analog dazu f hrt das Entladen des Treibers wie in Abbildung 7 darge stellt dazu dass das Kernelmodul nicht l nger angezeigt wird die Ger tedatei verschwindet und eine entsprechende Nachricht im Kernellog ausgegeben wird Sollte sich die Hardware aufgrund eines Fehlers nicht mehr ansteuern lassen hilft es in der Regel den Treiber zu entladen und erneut zu laden Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 32 root sgm linux home adminos driver s6_pcie_unload sh root sgm linux home adminos driver lsmod grep s6_pcie root sgm linux home adminos driver ls dev s6 ls cannot access dev s6 No such file or directory root sgm linux home adminos driver dmesg tail 6361 773480 s6_pcie PCI BARO physical address xf6800000 size 0x100000 6361 773869 s6_pcie FPGA version 6361 773869 Bitstream 3 08 6361 773869 GIT Hash c
73. oards zur Echtzeit 3D Verarbeitung 67 den anderen Komponenten des IPS von Dr Maximilian Buder einge setzt um in Echtzeit verschiedene Trajektorien aufzunehmen Der Sen sorkopf wurde dabei wie in Abbildung 21 zu sehen auf dem Dach eines Kraftfahrzeugs montiert Das Sensorfeedernetzwerk lief auf einem ex ternen Rechner im Fahrzeuginneren Abbildung 21 Messkampagne Braunschweig F r Stereobilder reduzierter Aufl sung 680 x 512 Pixel wurden die Rektifizierung und das Erzeugen des Disparit tsbildes dabei im laufen den Betrieb mit einer Bildfrequenz von 10Hz durchgef hrt Da f r Bilder der doppelten Aufl sung 1360 x 1024 Pixel die Rektifizierung zu lange dauert mussten diese im Nachhinein mit 3Hz verarbeitet werden Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 68 Linkes Kamerabild unrektifiziert Rechtes Kamerabild unrektifiziert Disparit tsbild HSV Farbraum Linkes Kamerabild rektifiziert Abbildung 22 Einsatz des Systems im Stra enverkehr In Abbildung 22 ist eine Szene aus dieser Messfahrt dargestellt Die beiden Kamerabilder im oberen Bilddrittel stellen die Eingangsdaten des Systems dar In der Mitte sind zwei verschiedene Darstellungen des berechneten Disparit tsbildes zu sehen In der linken Darstellung habe ich die Disparit ten durch das in Abschnitt 5 1 4 beschriebenen Verfah ren eingef rbt Rechts habe ich die Werte des Disparit tsbildes wie in Integratio
74. onente ist ein Rechner der die FPGA Karte zur Be rechnung des SGM enth lt Dieser bernimmt neben der Berechnung der Disparit ten auch die Rektifizierung der Stereobilder Diese Kompo nente bezeichne ich im Folgenden als SGM Box Die beiden Komponenten sind per Gigabit Ethernet miteinander ver bunden Der Sensorkopf sendet die Stereobilder an die SGM Box Beim ersten Bilderpaar berechnet er basierend auf der Kamerageometrie eine Look Up Tabelle zur Rektifizierung der Kamerabilder Diese wird zusammen mit dem ersten Bilderpaar jeder Verbindung an die SGM Box bertragen Wir nehmen folglich an dass sich weder die Kamerage ometrie noch die Aufl sung der Bilder w hrend der Verbindung ndert 3 Die in der Abbildung enthaltenen Stereo und Disparit tsbilder sind dem Middlebury Datensatz Teddy 12 entnommen Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 20 da die Look Up Tabelle sonst neu berechnet und bertragen werden m sste Die SGM Box rektifiziert die empfangenen Stereobilder formatiert sie neu und sendet sie an die FPGA Karte Das rektifizierte linke Kamerabild und das von der FPGA Karte berechnete Disparit tsbild werden an schlie end an den Sensorkopf bermittelt Dort k nnen sie gespeichert dargestellt und weiterverarbeitet werden Das Sensor Framework muss nicht notwendigerweise auf einem Rech ner innerhalb des Sensorkopfes laufen sondern kann auch auf einem externe
75. orliegen Die Berechnung des Disparit tsbildes wird wie in Gleichung 1 als Energiefunktion E D formuliert Ihr globales Minimum erreicht diese Funktion f r das gesuchte Disparit tsbild D E D X Ch Dp gt P T D D 1 1 p qENp PRT D D gt 1 qENp Der erste Term die Funktion C p d gibt dabei die Kosten an die anfal len um den Pixel p aus dem einen Bild dem entsprechenden um Dispa rit t d verschobenen Pixel q aus dem anderen Bild zuzuordnen Der zweite und dritte Term erzeugen dabei zus tzliche Kosten P und P f r i Vgl The pixelwise cost and the smoothness constraints are expressed by defining the energy E D that depends on the disparity image D 2 S 3 Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 9 Disparit ts nderungen Kleine nderungen werden dabei weniger stark bestraft als gro e Daher sollte P stets gr er oder gleich P3 sein H ufig sind Disparit tsunterschiede auch als Unterschiede in der Intensit t der entsprechenden Pixel sichtbar Dies wird dadurch ausge nutzt dass P an den Intensit tsunterschied zwischen den Pixel p und q angepasst wird Zwischen dem linken und rechten Kamerabild k nnen radiometrische Differenzen auftreten Diese entstehen beispielsweise durch Vignettie rung verschiedene Belichtungszeiten und blickwinkelabh ngige Reflek tionen Zur Berechnung der Matchingkosten C gibt es verschiedene Method
76. ormulierung bestehender Anforderungen Daher habe ich bei der Wahl der Umsetzung auch gro en Wert auf ihre sp tere Anpassbarkeit gelegt Dies bedeutet zum einen dass nderun gen nicht grunds tzlich ausgeschlossen oder unn tig erschwert werden und zum anderen dass auch Dritte sich leicht in das System einarbeiten und etwaige nderungen vornehmen k nnen Bei der Auswahl der verwendeten Hardware wurde ich von Dr Maximi lian Buder unterst tzt Gemeinsam haben wir die groben Randbedin gungen und Anforderungen an das Hardwaresystem festgelegt worauf hin er hat sich um die Auswahl und Beschaffung der Einzelkomponenten gek mmert hat Vor Inbetriebnahme der Hardware im eingebetteten System habe ich diese auf einem Arbeitsplatzrechner getestet 3 2 Das Vorgehen bei Softwareentwicklung und test Ein strukturiertes Vorgehen bei der Programmerstellung ist Grundlage f r eine erfolgreiche Entwicklung des geforderten Systems Bevor ich eine Funktionalit t implementiert habe habe ich jeweils verschiedene L sungsans tze untersucht Durch Internetrecherche und im Gespr ch mit Kollegen habe ich hierbei neue Ideen gesammelt und mit meinen Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 12 eigenen Vorstellungen abgeglichen Gegebenenfalls habe ich mehrere L sungswege in separaten prototypischen Programmen implementiert um sie besser verstehen und ihre Vor und Nachteile besser absch tzen zu k nnen An
77. pace Library Zur Ansteuerung der FPGA Karte existiert eine in C programmierte Bib liothek Im Folgenden beschreibe ich wie ich diese Bibliothek nutze Zuerst stelle ich eine Verbindung zur FPGA Karte her Dies erfolgt mit der Funktion pcie_sgm_open welche bei erfolgreicher Ausf hrung ei nen Handler zur ckgibt mit dem die Hardware angesprochen werden kann Dieser dient allen weiteren Funktionen als Referenz f r die Hard wareschnittstelle Falls das ffnen fehlschl gt wird NULL zur ckgege ben Mit der Funktion pcie_sgm_close kann diese Verbindung wieder gel st werden Wenn die Verbindung zur FPGA Karte hergestellt wurde setze ich mit der Funktion pcie_sgm_set_parameters die Parameter f r den SGM Algorithmus Desweiteren lese ich mit der Funktion pcie_sgm_get_image_resolution aus welche Aufl sungen die Eingangs und Ausgangsbilder haben m ssen und allokiere den entsprechenden Speicher Sobald ich das erste Stereobild empfangen rektifiziert auf die zuvor ausgelesene Aufl sung skaliert und in das von der FPGA Karte erwartete Format konvertiert habe lade ich es mittels der Funktion pcie_sgm_transfer_images_16bit in ihren Speicher Dies l st die Be rechnung des Disparit tsbildes aus Ich signalisiere dies einem weiteren Thread der daraufhin mit der Funk tion pcie_sgm_get_disparity_images auf das Ergebnis der Berechnung wartet Diese Signalisierung beinhaltet die entsprechenden Skalierungs faktoren in x und y R
78. r Me thode des Ringpuffers diesen Mutex sperre und am Ende wieder ent sperre garantiere ich dass sich in dem Bereich zwischen diesen beiden Operationen nie mehrere Threads befinden Sollte in diesem Bereich jedoch eine Exception ausgel st werden sodass die Methode nicht bis zum Ende ausgef hrt wird bleibt der Ringpuffer gesperrt Daher habe ich die manuelle Sperrung und Entsper rung durch die Verwendung der ebenfalls in der OSLib implementier ten Klasse Lock ersetzt Einem Lock wird bei der Instanziierung durch den Konstruktor ein Mutex bergeben Solange das Lock g ltig ist bleibt der Mutex gesperrt Erst in seinem Destruktor gibt das Lock den Mutex wieder frei Ich erzeuge also am Anfang einer jeden Methode des Ring puffers eine lokale Variable des Typs Lock auf seinem Mutex Sobald die Funktion verlassen wird also auch im Falle einer Exception verliert das Lock seine G ltigkeit und gibt den Mutex wieder frei Zur Verifizierung des threadsicheren Ringpuffers habe ich einen ent sprechenden Testfall implementiert Er enth lt zwei Threads die sich einen Ringpuffer teilen Der eine Thread schreibt die Zahlen von O bis 100 in den Ringpuffer Der andere Thread liest die Daten aus dem Ring puffer aus und vergleicht ob auch wirklich die Zahlen O bis 100 bertra gen wurden Nur wenn alle Werte korrekt bertragen wurden gilt der Test als bestanden Die Kapazit t des Puffers ist hierbei mit maximal drei Elementen bewusst kl
79. r erstellt Diese beiden Feeder kommunizieren untereinander mittels eines auf TCP basierten Protokolls Jeder Feeder verf gt dabei ber eine beliebige aber feste Anzahl an Ein und Ausg nge Dabei entspricht die Anzahl der Eing nge Inports des einen Feeders der der Ausg nge Outports des anderen Die Feederdaten die am Eingang eines Feeders ankommen werden via TCP an den anderen Feeder bermittelt und an dessen entsprechendem Ausgang zur Verf gung gestellt Die Zuordnung erfolgt ber die Feedernummer sodass Daten die in inportO des einen Feeders eingegeben werden den anderen Fee der an outportO verlassen Analog dazu wird inport1 auf outport1 wei tergeleitet und so weiter In Abbildung 24 ist dies an einem Beispiel mit jeweils zwei Ein und Ausg ngen dargestellt Auf der linken Seite ist der Netzwerkfeeder A als blauer Zylinder mit durchgezogenem Rand auf der rechten Seite Netz werkfeeder B in rot mit gestricheltem Rand zu sehen Die Ports sind als Pfeile dargestellt Neben gleicher Farbe gibt ein identischer Umran dungstyp dabei an dass die beiden Ports einander zugeordnet sind Ich unterscheide dabei zwischen durchgezogener oder gestrichelter und einfacher oder doppelter Linie Die Feederdaten habe ich als Rechtecke dargestellt Das blaue Rechteck mit durchgezogener Linie repr sentiert die Daten die dem Feedernetzwerk A stammen Das rote Rechteck mit gestrichelter Linie entspricht denen aus Feedernetzwerk B F
80. rere Bilder zwischengespeichert werden k nnen Das System wird somit durch eine Verz gerung an einer einzelnen Stelle nicht als Ganzes ausgebremst Beispielsweise kann w hrend ein Thread auf neue Stereobilder wartet ein anderer Thread weiterhin Disparit tsbilder empfangen Die Kommunikation mit der SGM Box habe ich in die Klasse SGMOP Communicator ausgelagert Sie umfasst neben Funktionen zum Verbin dungsaufbau mit dem entfernten System die Implementierung des Netzwerkprotokolls seitens des Feedernetzwerkes Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 26 Die Konfiguration des SGMOPFeeders ist in der Klasse SGMOPConfiguro tion festgelegt Sie kann durch eine XML Datei beschrieben werden welche beim Laden des Feeders gelesen wird In Abschnitt 5 5 Abbil dung 12 habe ich ein Beispiel f r eine solche Konfigurationsdatei ange geben 5 1 2 Die Rektifizierung der Stereobilder Sobald das erste Stereobild im SGMOPFeeder ankommt berechne ich eine Look Up Tabelle zur Rektifizierung der Bilddaten und bertrage sie an die SGM Box Da ich annehme dass sich die Kamerageometrie und die Aufl sung der Bilder w hrend eines Laufes nicht ndern wird sie f r die gesamte Bildfolge einer Verbindung verwendet Ich nutze die Rekti fizierungsabbildung um jedem Punkt im rektifizierten Bild einen Wert zuzuordnen den ich aus dem unrektifizierten Bild ermittle Die Look Up Tabelle ist eine m n Matrix wobei m
81. ritte darstellen Zur Imple mentierung dieser einzelnen Stufen verwende ich Threads die ber Dateneing nge und ausg nge verf gen mittels derer sie mit anderen Stufen der Pipeline kommunizieren k nnen In Abbildung 9 sind die einzelnen Komponenten ihre Verkn pfung und die von ihnen ausgetauschten Informationen dargestellt Links unten ist die FPGA Karte zu sehen Oben in der Mitte ist die Software der SGM Box mit dem Symbol des Linux Pinguins dargestellt Das unter Windows ausgef hrte Sensornetzwerk ist mit einem Foto des IPS Sensorkopfes dargestellt Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 45 B receive stereo C rectify scale image SGM parame and send stereo ters and LUT image to FPGA E send disparity and rectified left image A send stereo image SGM parameters and D receive disparity image from FPGA F receive disparity and rectified left Abbildung 9 Aufteilung in unabh ngige Komponenten 46 47 48 49 Die verschiedenen Stufen sind als sechs Denkblasen dargestellt die von A bis F durchnummeriert sind Die gr nen Denkblasen mit gestrichelten R ndern symbolisieren dabei Threads die unter Windows im Sensor netzwerk aufgef hrt werden die orangenen mit durchgezogen R ndern jene die auf der SGM Box unter Linux laufen Die Kommunikation der Threads untereinander l uft asynchron ab Das setzt voraus dass Daten die ein Thread an einen anderen sendet
82. seiner L nge als 32Bit Integer bertragen Damit k nnen mehrere Objekte des gleichen Typs auf einmal bermittelt werden se Vgl first the size of the string number of characters is stored as a 32 bit integer value followed by the characters of the string im Header der OSLib Klasse BinaryStreamWriter Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 74 Diese Formatierung wird auch genutzt wenn nur ein einziges Objekt bertragen werden soll Die Anzahl der zu senden Objekte ist in diesem Fall gleich Eins Abschlie end werden noch die tats chlichen Feederda ten bertragen Flie kommazahlen werden als 64Bit double Werte bertragen Die vorher angegebene Anzahl der zu sendenden Werte liefert der Gegen stelle die Information wie viele Bytes sie zu erwarten hat Da Bilder keine konstante L nge besitzen bedarf es zu ihrer erfolgreichen ber mittelung einer weiteren Strukturierung des Datenverkehres Dabei habe ich mich an dem Protokoll zur Anbindung der SGM Box orientiert Zuerst bertrage ich die Breite und H he des Bildes als vorzeichenlosen 32Bit Integer Anschlie end bermittle ich die Anzahl der Kan le des Bildes als vorzeichenlosen 8Bit Integer und den Pixeltyp als String Der String wird wie bei der bertragung des Objekttypen wieder mit vo rangestellter L nge und ohne Abschlusszeichen bertragen Aus diesen Informationen berechne ich in der Gegenstelle die Anzahl der zu er
83. spielsweise wie in Abbildung 23 dargestellt die Lokalisie rung mittels IMU auf dem Sensorkopf laufen lassen m chte die Rektifi zierung und das Stereomatching der Bilddaten jedoch auf einer leis tungsstarken Workstation mit entsprechender GPU kann man die Bild daten ber den Netzwerkfeeder bertragen Der Sensorkopf sendet das Stereobild in diesem Fall mittels eines allgemeinen Netzwerkfeeders an die Workstation Ein entsprechender Netzwerkfeeder empf ngt dort die Daten und leitet sie zur Verarbeitung an die anderen Feeder weiter Sobald die Verarbeitung abgeschlossen ist wird das Stereobild analog ber zwei nicht notwendigerweise verschiedene Netzwerkfeeder wie der zur ck an den Sensorkopf bertragen und dort zur Verbesserung der gesch tzten Trajektorie genutzt Dazu ben tigt die Workstation die Kamerageometrie welche sie von dem Feeder der f r die Kameraansteuerung zust ndig ist und im Sen sorkopf sitzt anfordert Die Anforderung und die entsprechenden Daten m ssen von den Netzwerkfeedern transparent durchgestellt werden Es Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 71 ist also nicht ausreichend auflaufende Daten von einem Netzwerkfee der zum anderen zu senden sondern es wird auch ein R ckkanal ben tigt ber den Daten nachgefordert werden k nnen 7 1 2 Die Schnittstelle zwischen einzelnen Netzwerken Zur Verkn pfung zweier Feedernetze wird in beiden je ein Netzwerk feede
84. stamps to which all sensor communication is referenced 3 S 23 2 Vgl a particular task is encapsulated in a container 3 S 23 Vgl those containers are called feeder s 3 S 23 Vgl having defined inputs and outputs 3 S 23 Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 16 Als Testumgebung und Benutzeroberfl che habe ich die Anwendung IPSApp verwendet die Teil der SFSLib ist Sie erm glicht das Laden und Ausf hren von in XML Dateien definierten Feedernetzwerken Im Folgenden habe ich unter Angabe der verwendeten Version die wesentlichen von mir genutzten Werkzeuge und Bibliotheken aufgelis tet Betriebssysteme o Windows 7 64bit o LUbuntu 14 04 1 LTS 64 Bit mit Kernel Version 3 13 0 39 Entwicklungsumgebung o Eclipse Luna Version 4 4 1 o Visual Studio 2012 C und C Compiler o Visual Studio 2012 C Compiler Windows o GCC Version 4 8 2 Linux Bibliotheken o OSLib SVN Revision 5030 o SFSLib SVN Revision 1956 o Embedded GNU C Library Version 2 19 o GNU Standard C Library Version 4 8 2 o Freelmage Library Version 3 15 4 3 Versionskontrolle SVN Version 1 8 8 Buildtool o CMake Version 3 1 0 Windows o CMake Version 2 8 12 2 Linux Netzwerkanalyse Wireshark Version 1 10 6 CAD Software Autodesk Inventor Professional 2012 3 Das Buildtool dient dem automatisierten Generieren von Projektdateien und Compileran weisungen
85. ten auf eine Message und senden eine entsprechende Antwort Solicit response Ports arbeiten umgekehrt Sie senden zuerst eine Mes sage und empfangen anschlie end eine entsprechende Antwort Bei der Kommunikation des Sensorkopfes mit der SGM Box werden Daten bidirektional ausgetauscht Daher beschr nkt sich die Auswahl an Port Types auf den Request response Port den Solicit response Port Wenn der Service auf der SGM Box unter Linux laufen sollte w rde ich dort einen Request response Port definieren Dieser wartet auf das Stereobild und antwortet mit dem Tiefenbild Trotz l ngerer Suche im Internet konnte ich f r WSDL Funktionalit t unter Linux lediglich Client Bibliotheken wie beispielsweise das Sourceforge Projekt WSDLPUuIl finden Daher muss der Service im Sensorkopf unter Windows ausge f hrt und ber einen Solicit response Port zur Verf gung gestellt wer den Von der Verwendung dieses Port Types wird jedoch aus Gr nden der Interoperabilit t abgeraten Ein weiterer Entscheidungsgrund gegen die WSDL ist dass sie von den Bibliotheken die ich gefunden habe stets mit SOAP eingesetzt wird SOAP ist ein auf XML basiertes Protokoll welches f r den strukturierten Datenaustausch vorgesehen ist Die bertragung roher Bin rdaten wird jedoch nicht unterst tzt Diese m ssen durch ein Verfahren wie Base64 so kodiert werden dass nur druckbare Zeichen enthalten sind Die 37 Vgl One way The endpoint receives a message
86. trum der Bundesrepublik Deutschland f r Luft und Raum fahrt Seine Forschungs und Entwicklungsarbeiten in Luftfahrt Raumfahrt Energie Verkehr und Sicherheit sind in nationale und internationale Kooperationen eingebunden Dar ber hinaus ist das DLR im Auftrag der Bundesregierung f r die Planung und Umsetzung der deut schen Raumfahrtaktivit ten zust ndig 17 Integral Positioning System IPS can be applied for indoor environments and outdoor environments 3 S 21 Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 2 Einsatz gegenseitig st ren Radarsysteme besitzen au erdem trotz hoher Aufl sung in der Entfernungsmessung eine ansonsten geringe r umliche Aufl sung Dies f hrt dazu dass Informationen ber Form und Gr e des Objektes nicht abgeleitet werden k nnen 4 S 85 Bei Laserscannern besteht das Problem dass vor allem an Kanten die Laserstrahlen stark gestreut 4 S 86 werden was zu verf lschten Messergebnissen f hrt Ebenso f hrt besonders bei gro en zu messen den Distanzen die m glicherweise nicht ausreichende Leuchtkraft des Laserstrahls dazu dass nicht genug Energie zum Sensor zur ckkehrt 4 S 86 Ebenso findet in diesem Fall eine Aufweitung des Laserstrahls 4 S 86 statt wodurch eine Punktmessung mehrere Objekte erfasst 4 S 86 Kamerasysteme verf gen ber eine hohen r umlichen Aufl sung im Megapixel Bereich 4 S 86 un
87. tzte Format und l dt es anschlie end in ihren Speicher Zuletzt sendet er w hrend die FPGA Karte das Dispari t tsbild berechnet das linke rektifizierte Bild an Thread E der es ber das TCP Netzwerk an den Thread F weiterleitet Sobald die FPGA Karte die Berechnung des Disparit tsbildes abgeschlos sen und dies mit einem entsprechenden Interrupt an Thread D gemel det hat formatiert dieser die Daten wieder um und sendet sie an Thread E Dort wird das Disparit tsbild wie zuvor das linke rektifizierte Bild an Thread F im Sensorkopf bermittelt Dieser Thread F stellt schlie lich das rektifizierte Bild und das Disparit tsbild grafisch dar und an seinen Ausg ngen f r den n chsten Feeder zur Verf gung Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 47 Zyklus u OOG A BES pc IB BE b parallel Abbildung 10 Parallelisierung durch eine Pipeline Damit ist ein Bearbeitungszyklus abgeschlossen In einer sequentiellen Implementierung w rde jetzt wie in Abbildung 10a dargestellt ein neuer Zyklus beginnen Die Bildrate im Gesamtsystem w rde also der inversen Summe der Ausf hrungszeiten aller Unterschritte entsprechen Da sich die Verarbeitungszyklen in einer Pipeline jedoch wie in Abbil dung 10b dargestellt berlagern ist das limitierende Element der lang samste Verarbeitungsschritt Die Bildrate entspricht also dem Kehrwert der Summe seiner Verarbeitungszeit und einem konstant
88. uentielle Imple mentierung habe ich im Gegensatz dazu ab dem Zeitpunkt dieser Mes sung nicht weiterentwickelt Dauer Berechnung der Disparit t 400 w oO O Sequenitiell Parallel i FPGA Impl Theoretisch N OQO O 5 X U 2 N Bild1 Bild2 Bild3 Bild4 Abbildung 11 Verarbeitungsgeschwindigkeit sequentiell und parallel Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 53 Die sequentielle Implementierung ben tigt etwa 220ms Millisekunden Die parallelisierte Implementierung liegt beim ersten Stereobild bei 350ms sinkt dann jedoch auf 130ms In beiden F llen schwankt die Verarbeitungszeit um je etwa 10ms nach oben und unten Zum Vergleich sind zwei m gliche Grenzwerte f r die Verarbeitungsge schwindigkeit angegeben Der eine bezieht sich auf die mit der gegebe nen FPGA Implementierung minimal erreichbaren 70ms Die andere bezieht sich auf eine Verarbeitungsgeschwindigkeit welche theoretisch durch Anpassung der Firmware des FPGAs erreicht werden k nnte Die FPGA Karte liefert nach 40ms ein bersichtsbild der Disparit t in halber Aufl sung des Eingangsbildes Nach weiteren 30ms bekommt man einen kleineren Bildausschnitt in voller Aufl sung dessen Berech nung sich nicht deaktivieren l sst Mit einer angepassten Implementie rung in der man diese Funktionalit t deaktivieren kann w re somit eine Verarbeitungsgeschwindigkeit von 40ms m glich 5
89. uf die H he und Breite der FPGA Karte skaliert oder ob unter Voraussetzung hinreichender Gr e des Ein gangbildes nur ein Ausschnitt in Originalaufl sung verwendet werden soll Zuerst wird das Flag enableScaling als 1 Byte bertragen Dieses gibt an ob skaliert werden soll oder nicht Anschlie end wird als zwei uint16 die horizontale und dann vertikale Position des linken oberen Ursprungs eines m glichen Ausschnittes bertragen Zur einfacheren Handhabung des Datenaustausches verwende ich die Klassen BinaryStreamWriter und BinaryStreamReader der OSLib Diese erm glichen es primitive Datentypen typsicher in einen Stream zu schreiben beziehungsweise aus ihm zu lesen Die bertragung von Wer ten des Typs unsigned char habe ich hierbei angepasst sodass diese genau wie Daten vom Typ char als einzelnes Byte und nicht als 4 Bytes bertragen werden Um BinaryStreamWriter und BinaryStreamReader verwenden zu k n nen werden OutputStreams beziehungsweise InputStreams ben tigt Daher habe ich die Klassen TCPInputStream und einen TCPOut Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 41 putStream implementiert welche sich davon ableiten und eine stream basierte Daten bertragung ber TCP erm glichen Zum Datenaustausch verwenden sie einen TCPClientSocket der bei der Erzeugnung der Streams als Parameter an den Konstruktor bergeben wird Der Socket wird hierbei als SmartPointer gespeichert Wenn beim
90. v Koordinate im Gegensatz zur y Achse von oben nach unten w chst Im Objektraum liegt das Gesicht weiter hinten als der W rfel Betrach ten wir beispielsweise den Mittelpunkt der vom Betrachter aus vorde ren rechten Kante des W rfels Dieser ist durch Linien vom Objektraum in den linken und rechten Bildraum gekennzeichnet Durch jeweils zwei Pfeile in den Kameraebenen habe ich die u Koordinate des Bildpunktes markiert Der gestrichelte Pfeil ist dabei die u Koordinate des entspre chenden Punktes im jeweils anderen Bild Die Differenz der beiden Pfeile entspricht der Disparit t unseres Beispielpunktes Die Herausfor derung hierbei liegt darin aus den beiden Kamerabildern zu erkennen welche zwei Punkte im Bildraum einem gemeinsamen Punkt im Objekt raum zugeordnet sind Beim Stereomatching wird jedem Bildpunkt des einen Kamerabildes ein korrespondierender Punkt im jeweils anderen Bild zugeordnet Das Ergebnis wird als Disparit tsbild bezeichnet und kann als Abbildungs funktion von dem einen in das andere Kamerabild verstanden werden Hierbei treten verschiedene Effekte auf die besondere Herausforde rungen f r die Berechnung der Disparit t darstellen Ich unterscheide im Folgenden zwischen Effekten im Objektraum in der Kamera und in dem verwendeten Algorithmus Im Objektraum k nnen beispielsweise Verdeckungen einzelner Bildbe reiche auftreten sodass diese sind nur in einem der beiden Bilder zu sehen sind Ein Beispie
91. version SVN welche am DLR eingesetzt wird nicht enthalten Ebenso fehlt eine aktuelle Version der integrierten Entwicklungsumgebung IDE Eclipse Teilweise ist es m glich Soft warepakete f r SLED 11 aus den Quellen von openSUSE zu beziehen Diese Auswahl ist jedoch nicht vollst ndig und hat in mehreren F llen zu Kompatibilit tsproblemen gef hrt Dies f hrte zur der Entscheidung das Betriebssystem zu wechseln Ich habe die mir gut vertraute Distribution Ubuntu gew hlt Da das einge bettete System keine eigenst ndige Grafikkarte besitzt und um nicht unn tig Ressourcen zu verbrauchen nutze ich die Variante LUbuntu 14 04 1 LTS Sie ist abgesehen von der standardm ig installierten ressourcenschonenderen Desktopumgebung identisch zu Ubuntu Beim installierten Linux Kernel handelt es sich um die Version 3 13 0 39 in der 64Bit Variante 4 3 2 Die FPGA Karte zur Berechnung von SGM 4 3 2 1 Einsatzgebiet der FPGA Karte Zur Berechnung des Disparit tsbildes zu einem gegebenen Stereobild verwende ich einen FPGA Dieser wurde von einem externen Dienstleis 31 LTS ist eine Abk rzung f r Long Term Support Das bedeutet dass die Bereitstellung von Updates f r das System ber einen langen Zeitraum gew hrleistet ist Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 24 ter programmiert und dem DLR in Adlershof zur Verf gung gestellt Er enth lt eine auf den Einsatz im Stra enverkehr optimierte
92. vision 12 S 175 Vgl Census encodes the local neighborhood around each pixel into a bit vector that only sotres if the compared neighboring pixel has a lower value than the center pixel or not 12 S 175 Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 10 dem Hammingabstand also der Anzahl der nicht bereinstimmenden Bits der beiden so ermittelten Bitreihen Die Suche nach dem Disparit tsbild f r welches die Energiefunktion in Gleichung 1 minimal ist wird Optimierung dieser Funktion genannt Diese wird nicht zweidimensional sondern eindimensional also entlang einzelner Pfade vorgenommen da sie sonst ein NP vollst ndiges Prob lem darstellen w rde Dabei werden beim SGM mehrere Pfade sym metrisch aus allen Richtungen des Bildes verfolgt F r jeden Pixel und jede Disparit t werden die Kosten entlang dieser Pfade berechnet und anschlie end die Disparit t mit den geringsten Kosten gew hlt 3 Die angewandte Methodik 3 1 Die Methodik beim Systementwurf Zur erfolgreichen Entwicklung eines Systems ist es hilfreich von Anfang an Anforderungen festzulegen die sich aus den zuvor definierten Pro jektzielen ableiten Die Formulierung der Anforderungen hilft dabei schon fr h eine konkrete Vorstellung des zu entwickelnden Systems zu erhalten Ebenso dienen sie w hrend der gesamten Projektlaufzeit als Orientierungshilfe Beispielsweise helfen sie bei der Auswahl ei
93. war tenden Bytes indem ich den Speicherplatzbedarf einer Variablen des entsprechenden Pixeltyps mit der Anzahl der Kan le der H he und der Breite des Bildes multipliziere Die Bilddaten werden im Anschluss an diese Gr eninformationen von oben nach unten zeilenweise von links nach rechts bermittelt Die Deserialisierung der Feederdaten erfolgt analog zu ihrer Serialisie rung Damit ist der Austausch von Feederdaten auch ber die Grenzen verschiedener Rechner hinweg m glich 7 1 4 Die Herausforderungen bei der weiteren Implemen tierung Einige Feeder k nnen anderen Feedern die ihnen in der Verarbeitungs reihe nachgeschaltet sind auf Anfrage weitere Informationen zur Ver f gung stellen Beispielsweise kann ein StereoFeeder beim CameraFee Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 75 der Informationen ber die Kamerakonfiguration anfordern Dieser R ckkanal ist in der aktuellen Implementierung der Netzwerkfeeder nicht enthalten kann jedoch durch eine Erweiterung des Protokolls hinzugef gt werden Bei der bertragung von Flie kommazahlen der Datentypen float und double kann es unter Umst nden zu Kompatibilit tsproblemen kom men Meines Wissens existiert f r ihre architekturunabh ngige ber tragung keine Vorschrift bez glich der bertragungsreihenfolge der einzelnen Bytes Hierzu k nnten jedoch m glicherweise die Funktionen f r die ganzzahligen Datentypen int und long
94. zierungsschrittes Dauer des Skalierungsschrittes un E S 5 ke N oh Z 3 o Im 7 a Dauer der SGM Berechnung im FPGA Abbildung 16 Laufzeit der wesentlichen Verarbeitungsschritte 1360x1024 Da sowohl die Laufzeit der Rektifizierung als auch ihre Differenz zur Gesamtverarbeitungsdauer steigt kann man aus diesen Daten nicht eindeutig erkennen ob die Rektifizierung oder sonstige Prozesse wie beispielsweise die bertragung der Daten ber das Netzwerk die Leis tungsf higkeit des Systems beschr nken Um dies festzustellen habe ich eine weitere Messung mit gro en Bildern durchgef hrt bei der die Rektifizierung bersprungen wird Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 61 Laufzeit der wesentlichen Verarbeitungsschritte 1360x1024 ohne Rektifizierung 0 Gesamtdauer der N N Disparit tsberechnung AH WESEN A Dauer des Al N Ara were AA t i Rektifizierungsschrittes Dauer des Skalierungsschrittes un E Ss 3 un Eh 3 o I a Dauer der SGM Berechnung im FPGA Abbildung 17 Laufzeit der wesentlichen Verarbeitungsschritte 1360x1024 ohne Rektifizierung In Abbildung 17 ist zu erkennen dass die Gesamtdauer der Disparit ts berechnung erwartungsgem sinkt wenn der Rektifizierungsschritt weggelassen wird berraschenderweise ist sie mit durchschnittlich etwa 70ms sogar nie
95. zwischengespeichert werden Der sendende Thread kann weiterlaufen ohne darauf warten zu m s sen dass der empfangende Thread die Daten abholt Die in Abbildung 9 enthaltenen Stereo und Disparit tsbilder sind dem Middlebury Datensatz Teddy 12 entnommen Der in Abbildung 9 verwendete Linux Pinguin stammt von Wikimedia Quelle http commons wikimedia org wiki File 3ATux svg 31 01 2015 Die in Abbildung 9 abgebildete FPGA Karte dem entsprechenden Userguide von Avnet Quelle Spartan 6 LX75T FPGA Development Board Picture 20 S 6 Die in Abbildung 9 dargestellte IPS Box stammt von der Website des DLR Quelle http www dir de os en desktopdefault aspx tabid 9967 17040 read 41235 31 01 2015 Integration und Evaluierung eines Testboards zur Echtzeit 3D Verarbeitung 46 Eine Iteration des gesamten Prozesses beginnt bei dem nicht rektifizierten Stereobild und endet bei den rektifizierten Bilddaten und dem dazugeh rigen Disparit tsbild Zuerst nimmt Thread A die Stereo bilder im Feedernetzwerk entgegen und sendet sie per TCP an die SGM Box Beim ersten Stereobild berechnet er au erdem die Look Up Tabelle zur Rektifizierung der Bilder und bertr gt diese und die Para meter f r den SGM Algorithmus gemeinsam mit dem Stereobild Dort nimmt der Thread B die entsprechenden Daten entgegen und sendet sie an Thread C Dieser rektifiziert damit das Stereobild berf hrt es in das von der FPGA Karte unterst
Download Pdf Manuals
Related Search
Related Contents
ワイヤレス受信機 取扱説明書 861000 laine acier 000 金抜設計書 兵庫県 加東市 Teto - TropicalRio i.Sound ISOUND-5324 mobile phone case Copyright © All rights reserved.
Failed to retrieve file