annotate das-projekt.tex @ 53:27a4243536d6 default tip

fixed dash-problem
author meillo@marmaro.de
date Thu, 04 Sep 2008 11:39:17 +0200
parents b5cb0aaf2286
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
1 \chapter{Das Projekt}
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
2
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
3 Das Projekt an dem ich gearbeitet habe, trägt die Bezeichnung ``Real Time Showcase mit dem Cell/B.E. Mikroprozessor: Implementierung einer optisch gesteuerten Produktionseinheit''.
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
4
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
5 Es war eines der \emph{IBM Speedteams} in diesem Jahr. Die offizielle Beschreibung dafür lautete folgendermaßen:
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
6 \begin{quotation}
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
7 Der revolutionäre Superchip Cell wurde in Kooperation von Sony, Toshiba und IBM für Sonys Playstation 3 entwickelt. Er wird derzeit in der Playstation 3 und dem IBM Blade Server QS21 eingesetzt. Aufgrund seiner herausragenden Architektur eignet sich der Cell Chip in besonderer Art und Weise für Echtzeit-Datenverarbeitung. Ziel dieses Projekts ist es einen Showcase zu implementieren, der die Leistungsfähigkeit des Cell/B.E.s für Echtzeit-Aufgaben unter Beweis stellt. Hierbei werden vier Roboterarme von zwei Kameras gesteuert. Das Speedteam wird die Ablaufsteuerung der Roboterarme implementieren, damit diese gemeinsam eine Aufgabe erledigen können. Die Kameras werden dabei die Roboterarme kontrollieren. Die Ansteuerung der Roboterarme ist bereits vorhanden, so dass sich dieses Projekt voll auf die Cell/B.E. Programmierung, die optische Datenverarbeitung mit OpenCV und die Algorithmen zur Ablaufsteuerung konzentriert. Als Student haben Sie die Möglichkeit - im wahrsten Sinn des Wortes - Ihre Programmierung anzufassen. Sie Programmieren auf dem interessantesten Prozessor der derzeit auf dem Markt ist und zudem gewinnen Sie Einblick in die Echtzeit-Datenverarbeitung.
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
8 \end{quotation}
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
9
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
10
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
11 Begonnen wurde das Projekt im April 2007. Seitdem arbeiten Studenten daran.
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
12
33
a4bea2266bb0 minor text improvements
schnalke@localhost.localdomain
parents: 32
diff changeset
13 Der erste Student hatte die Grundlagen gelegt indem er die low-level Kommunikation mit dem Roboter, die Inverse Kinematik\footnote{Berechnung der Gelenkwinkel in Roboterarmen zum Erreichen eines bestimmten Punktes} und ein erstes Framework für die Programmierung des Cell-Prozessors erstellt hat. Zum Einsatz kamen Lynx6-Roboterarme, die im Abschnitt \ref{robotarme} noch genauer beschrieben werden.
0
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
14
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
15 Sein Nachfolger arbeitete während seiner Masterarbeit vor allem an den mathematischen Berechnungen der Inversen Kinematik in allgemeiner Form. Seine Arbeit bezieht sich auf einen Industrie Roboter mit sechs Freiheitsgraden, der leider nicht beschafft werden konnte. Somit simulierte er seine Berechnungen nur.
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
16
39
4babe71073f8 added James
schnalke@localhost.localdomain
parents: 35
diff changeset
17 Student Nummer drei, und damit mein Vorgänger und Kollege, verweilte ein ganzes Jahr im Unternehmen, programmierte während seiner Zeit ein umfassendes Framework um die ganzen low-level Angelegenheiten zu abstrahieren. Dies erleichterte die Programmierung ungemein. Zudem band er \emph{OpenCV} zur visuellen Erkennung mit ein.
0
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
18
39
4babe71073f8 added James
schnalke@localhost.localdomain
parents: 35
diff changeset
19 Ich war nun der vierte Student der am Projekt arbeitete. Einen Monat nach mit kam noch eine weitere Studentin hinzu.
4babe71073f8 added James
schnalke@localhost.localdomain
parents: 35
diff changeset
20
51
b5cb0aaf2286 some fixes; removed confidential tag
meillo@marmaro.de
parents: 41
diff changeset
21 Als unser spanischer Teampartner, mein Vorgänger, im Juni seine Zeit im Projekt beendete, kam ein neuer Student hinzu. Dieser war von MIT in Cambridge. Es lässt sich also sagen, dass unser Projekt stark international geprägt var. Unsere Kommunikation war folglich größtenteils in Englisch.
0
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
22
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
23
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
24 \section{Zielsetzung}
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
25
4
5bb81f96e7db added more picture about the project
schnalke@localhost.localdomain
parents: 2
diff changeset
26 Ziel des Projekts ist es, ein Robotsteuerungs Framework zu erstellen, das auf der Cell/B.E. basiert.
0
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
27
33
a4bea2266bb0 minor text improvements
schnalke@localhost.localdomain
parents: 32
diff changeset
28 Üblicherweise werden Roboter über Digitale Signalprozessoren (DSPs) gesteuert. Diese erfordern spezielle Fachkenntnisse in der Programmierung und jeder Roboter wird über einen eigenen DSP gesteuert. Mit Hilfe der Cell-Architektur soll eine Alternative geschaffen werden, die es ermöglicht auf einfache Weise Robotersteuerungen zu entwickeln. Als Werkzeuge sollen die Programmiersprache \emph{C} und das Betriebssystem \emph{GNU/Linux} zum Einsatz kommen, da diese vom Cell unterstützt werden und zudem in der Industrie bekannt sind.
0
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
29
51
b5cb0aaf2286 some fixes; removed confidential tag
meillo@marmaro.de
parents: 41
diff changeset
30 Die Echtzeitfähigkeit die bisher für DSPs sprach kann mit dem Cell-Prozessor ebenso erreicht werden. Seine hohe Skalierbarkeit und die geringen Latenzen ermöglichen es dann sogar eine Vielzahl von Robotern, eventuell sogar ganze Fertigungsstraßen, mit nur einem Cell-Chip zu steuern.
4
5bb81f96e7db added more picture about the project
schnalke@localhost.localdomain
parents: 2
diff changeset
31
5bb81f96e7db added more picture about the project
schnalke@localhost.localdomain
parents: 2
diff changeset
32 Dass dies realistische Vorstellungen sind, soll nun gezeigt werden, indem ein Showcase mit vier Robotern und einer visuellen Komponente an einem System erstellt wird.
2
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
33
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
34
0
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
35 \section{Verwendete Technologie}
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
36
51
b5cb0aaf2286 some fixes; removed confidential tag
meillo@marmaro.de
parents: 41
diff changeset
37 Unser Entwicklungssystem war ein angepasster IBM \emph{QS21} Cell/B.E. Blade-Server, welcher zwei Cell-Prozessoren mit je einem Gigabyte Arbeitsspeicher beherbergt. An diesem waren vier Lynx6-Roboterarme von Lynxmotion\footnote{Website: http://lynxmotion.com} angeschlossen, und außer dem noch eine \emph{mvBlueFOX} Kamera von \emph{Matrix Vision}\footnote{Website: http://matrix-vision.com}. Als Betriebsystem lief die PowerPC-Version von \emph{Fedora\ 7} GNU/Linux mit einem angepassten Kernel.
4
5bb81f96e7db added more picture about the project
schnalke@localhost.localdomain
parents: 2
diff changeset
38
5bb81f96e7db added more picture about the project
schnalke@localhost.localdomain
parents: 2
diff changeset
39 \begin{figure}[hbt]
5bb81f96e7db added more picture about the project
schnalke@localhost.localdomain
parents: 2
diff changeset
40 \centering
5bb81f96e7db added more picture about the project
schnalke@localhost.localdomain
parents: 2
diff changeset
41 \includegraphics[width=0.6\textwidth]{pics/qs21.jpg}
35
f7bc5299e59b better figure captions (new command for that)
schnalke@localhost.localdomain
parents: 33
diff changeset
42 \caption[QS21 Blade-Server \source{IBM}]{QS21 Blade-Server mit zwei Cell-Prozessoren}
41
f72c9230d988 put label after includegraphics, for correct numbering; corrected som typos
meillo@marmaro.de
parents: 39
diff changeset
43 \label{fig:qs21}
4
5bb81f96e7db added more picture about the project
schnalke@localhost.localdomain
parents: 2
diff changeset
44 \end{figure}
0
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
45
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
46
2
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
47 \subsection{Cell-Prozessor}
0
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
48
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
49 Ausgeschrieben \emph{Cell Broadband Engine Architecture} genannt, werde ich hier meist die Kurzformen \emph{Cell/B.E.} oder einfach nur \emph{Cell-Prozessor} verwenden.
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
50
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
51 Dieser Chip wurde, zwischen 2001 und 2005, in einer Kooperation von Sony, Toshiba und IBM entwickelt. Der Hauptteil der Entwicklungsarbeit wurde dabei von \ibm\ übernommen.
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
52
2
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
53 \begin{figure}[hbt]
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
54 \centering
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
55 \includegraphics[width=0.6\textwidth]{pics/cellbe-chip.png}
35
f7bc5299e59b better figure captions (new command for that)
schnalke@localhost.localdomain
parents: 33
diff changeset
56 \caption[Cell/B.E. Chip \source{IBM ``Introduction to the Cell Broadband Engine''}]{Cell/B.E. Chip}
41
f72c9230d988 put label after includegraphics, for correct numbering; corrected som typos
meillo@marmaro.de
parents: 39
diff changeset
57 \label{fig:cellbe-chip}
2
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
58 \end{figure}
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
59
51
b5cb0aaf2286 some fixes; removed confidential tag
meillo@marmaro.de
parents: 41
diff changeset
60 Bei der Cell/B.E. handelt es sich um eine heterogene Multicore-Architektur. Das bedeutet, dass der Prozessor aus mehreren Kernen besteht, die (im Gegensatz zu den x86-Multicores aber) aus verschiedenen Kerntypen bestehen. Der Cell verfügt über einen PowerPC-Kern (PPE/PPU) und acht sogenannten Synergistic Prozessor Elemente (SPE/SPU). Die PPE ist ein vollwertiger 64-bit PowerPC Kern. Er kann in herkömmlicher Weise verwendet werden, so kann darauf zum Beispiel ein Betriebsystem oder eine beliebige Anwendung laufen. Die SPEs dagegen sind für große Rechenleistung optimiert, Datentransfer-Operationen sind bei ihnen eher langsam.
0
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
61
2
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
62 \begin{figure}[hbt]
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
63 \centering
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
64 \includegraphics[width=0.8\textwidth]{pics/cellbe-structure.png}
35
f7bc5299e59b better figure captions (new command for that)
schnalke@localhost.localdomain
parents: 33
diff changeset
65 \caption[Die Cell Broadband Engine \source{IBM ``Programming Tutorial''}]{Schematischer Aufbau der Cell/B.E.}
41
f72c9230d988 put label after includegraphics, for correct numbering; corrected som typos
meillo@marmaro.de
parents: 39
diff changeset
66 \label{fig:cellbe-structure}
2
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
67 \end{figure}
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
68
4
5bb81f96e7db added more picture about the project
schnalke@localhost.localdomain
parents: 2
diff changeset
69 \begin{figure}[hbt]
5bb81f96e7db added more picture about the project
schnalke@localhost.localdomain
parents: 2
diff changeset
70 \centering
5bb81f96e7db added more picture about the project
schnalke@localhost.localdomain
parents: 2
diff changeset
71 \includegraphics[width=0.8\textwidth]{pics/cellbe-ppe-spe.png}
35
f7bc5299e59b better figure captions (new command for that)
schnalke@localhost.localdomain
parents: 33
diff changeset
72 \caption[PPE und SPE \source{IBM ``Programming Tutorial''}]{Schematischer Aufbau von PPE und SPE}
4
5bb81f96e7db added more picture about the project
schnalke@localhost.localdomain
parents: 2
diff changeset
73 \end{figure}
5bb81f96e7db added more picture about the project
schnalke@localhost.localdomain
parents: 2
diff changeset
74
22
94535a512cfe improved some lines
schnalke@localhost.localdomain
parents: 8
diff changeset
75 Üblicherweise übernimmt die PPE die Kontrolle und verteilt die Arbeit auf die einzelnen SPEs die dann unabhängig von einander arbeiten. Die Ergebnisse fließen anschließend an die PPE zurück.
0
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
76
22
94535a512cfe improved some lines
schnalke@localhost.localdomain
parents: 8
diff changeset
77 Zur Kommunikation zwischen den einzelnen Kernen stehen drei verschiedene Wege zur Verfügung, welche alle über den Element Interconnect Bus (EIB) abgewickelt werden.
2
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
78
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
79 \begin{itemize}
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
80 \item \textbf{Mailboxen} Sie sind Hardwareimplementierungen von Nachrichtenwarteschlangen. Jede SPE hat drei davon. Nachrichten haben eine feste Größe von 32 Bit.
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
81 \item \textbf{Signale} Wie auch Nachrichten umfasst ein Signal ebenfalls 32 Bit, jedoch existieren keine Warteschlangen, so dass pro Signalkanal genau ein definierter Zustand aktiv sein kann. Jede SPE hat zwei Signalkanäle.
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
82 \item \textbf{DMA-Transfers} Hierbei wird den SPEs ermöglicht auf den allgemeinen Hauptspeicher zuzugreifen, ebenso kann die PPE so auf den lokalen Speicher einer SPE zugreifen. DMA\footnote{Direct Memory Access}-Transfers können mit bis zu 16 Kilobyte an Daten übertragen werden. Die Transfers werden vom Memory Flow Controller (MFC) der SPE durchgeführt und können somit parallel zu den aktuellen Instruktionen ablaufen.
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
83 \end{itemize}
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
84
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
85 Für DMA-Transfers empfiehlt es sich, die Technik \emph{Double-Buffering} einzusetzen, bei der die nächsten Daten schon geholt werden, während mit den aktuellen noch gerechnet wird. Auf diese Weise kann die SPE nahezu voll ausgelastet werden.
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
86
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
87 Mailboxen und Signale werden üblicherweise vor allem für die Übertragung von Statusinformatinen verwendet.
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
88
0
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
89
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
90
2
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
91 Der Cell ist ein sehr leistungsstarker Prozessor mit einer Maximalleistung von 230 GigaFLOPS\footnote{FLoating point Operations Per Second --- übliches Maß zum Vergleich von Prozessorleistung}.
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
92
51
b5cb0aaf2286 some fixes; removed confidential tag
meillo@marmaro.de
parents: 41
diff changeset
93 Er wird momentan vor allem in Sonys \emph{Playstation 3} und IBM Blade-Servern verbaut. Aber auch in Supercomputern, wie dem \emph{IBM Roadrunner}, der am 9. Juni diesen Jahres als erster Rechner mehr als ein PetaFLOPS erreicht hat, wird er eingesetzt. Zudem plant die IBM ihn künftig in ihre Mainframes zu integrieren.
0
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
94
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
95
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
96
4
5bb81f96e7db added more picture about the project
schnalke@localhost.localdomain
parents: 2
diff changeset
97 \subsection{Roboterarm} \label{robotarme}
0
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
98
2
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
99 Die von uns verwendeten Roboterarme sind das Modell \emph{Lynx6} vom Hersteller Lynxmotion. Die Roboter sind aus Lexan gefertigt und werden als Bausatz geliefert. Sie sind etwa 20 Zentimeter hoch und 40 lang.
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
100
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
101 \begin{figure}[hbt]
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
102 \centering
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
103 \includegraphics[width=0.6\textwidth]{pics/lynx6.jpg}
35
f7bc5299e59b better figure captions (new command for that)
schnalke@localhost.localdomain
parents: 33
diff changeset
104 \caption[Lynxmotion Lynx6 Roboterarm \source{http://lynxmotion.com}]{Lynxmotion Lynx6 Roboterarm}
41
f72c9230d988 put label after includegraphics, for correct numbering; corrected som typos
meillo@marmaro.de
parents: 39
diff changeset
105 \label{fig:lynx6}
2
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
106 \end{figure}
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
107
41
f72c9230d988 put label after includegraphics, for correct numbering; corrected som typos
meillo@marmaro.de
parents: 39
diff changeset
108 Sie haben fünf Freiheitsgrade (Basisdrehung, Schulter, Ellenbogen, Handgelenk, Handdrehung) und damit einen weniger als gängige Industrieroboter oder der menschliche Arm. Die Zahl ``6'' in der Modellbezeichnung rührt von einem sechsten Gelenk her, das jedoch nur der Greifer ist und damit keinen weiteren Freiheitsgrad darstellt.
2
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
109
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
110 Die Bewegung der Gelenke wird von Servomotoren\footnote{Motoren die bestimmte Positionen anfahren und halten können. Häufig im Modellbau eingesetzt.} (kurz ``Servos'') übernommen.
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
111
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
112 Angeschlossen sind die Roboterarme über USB am Cell-Blade und per serieller Schnittstelle am Roboter, dazwischen sitzt ein USB-zu-Seriell-Konverter.
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
113
24
b974f5895449 inserted picture of showcase
schnalke@localhost.localdomain
parents: 22
diff changeset
114 % FIXME: insert picture with terminology, where??
0
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
115
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
116
2
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
117 \subsection{Kamera}
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
118
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
119 Die optische Komponente wurde erst kurz vor meiner Zeit in das Projekt eingeführt. Anfangs wurde noch eine handelsübliche Webcam verwendet. Später wurde diese durch eine professionelle CCD-Kamera der Firma \emph{Matrix Vision} ersetzt. Bei dieser handelt es sich um eine \emph{mvBlueFOX}, die 100 Mal pro Sekunde ein Schwarz-Weiß-Bild mit ein einer Auflösung von 640x480 Pixeln liefert.
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
120
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
121 \begin{figure}[hbt]
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
122 \centering
8
cfa79cdfad27 new picture for camera; some new content about the showcase
schnalke@localhost.localdomain
parents: 4
diff changeset
123 \includegraphics[width=6cm]{pics/mvbluefox.png}
35
f7bc5299e59b better figure captions (new command for that)
schnalke@localhost.localdomain
parents: 33
diff changeset
124 \caption[Matrix Vision mvBlueFOX Kamera]{Matrix Vision mvBlueFOX}
41
f72c9230d988 put label after includegraphics, for correct numbering; corrected som typos
meillo@marmaro.de
parents: 39
diff changeset
125 \label{fig:mvbluefox}
2
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
126 \end{figure}
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
127
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
128 Zur Bilderkennung verwendeten wir die Open Source Bibliothek \emph{OpenCV}, welche auf den Cell portiert und dafür optimiert ist.
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
129
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
130
8
cfa79cdfad27 new picture for camera; some new content about the showcase
schnalke@localhost.localdomain
parents: 4
diff changeset
131 % FIXME: Echtzeit-Umgebung?
2
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
132
0
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
133
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
134 \section{Ausgangssituation}
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
135
2
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
136 Als ich meine Arbeit antrat waren folgende Dinge bereits vorhanden.
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
137 \begin{itemize}
51
b5cb0aaf2286 some fixes; removed confidential tag
meillo@marmaro.de
parents: 41
diff changeset
138 \item Framework das die low-level Kommunikation zwischen den SPEs regelt
2
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
139 \item Scheduler der die einzelnen Programmmodule verwaltet und die Echtzeiteinhaltung kontrolliert
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
140 \item Inverse Kinematik für den Roboterarm
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
141 \item Programme mit statischen Bewegungsanweisungen für den Roboter
51
b5cb0aaf2286 some fixes; removed confidential tag
meillo@marmaro.de
parents: 41
diff changeset
142 \item Einfache dynamische Bewegungen an Hand von Gesichtserkennung mit OpenCV
2
d7564f4705a9 die verwendete Technologie beschrieben
schnalke@localhost.localdomain
parents: 0
diff changeset
143 \end{itemize}
0
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
144
8
cfa79cdfad27 new picture for camera; some new content about the showcase
schnalke@localhost.localdomain
parents: 4
diff changeset
145 Die alten Arbeiten meiner Vorgänger waren abgeschlossen und mein Teampartner, der schon ein halbes Jahr bei IBM war und während dieser Zeit das Framework ausgearbeitet hatte, feilte daran nur noch herum. Somit fand mit mir eine Art Neubeginn statt.
cfa79cdfad27 new picture for camera; some new content about the showcase
schnalke@localhost.localdomain
parents: 4
diff changeset
146
cfa79cdfad27 new picture for camera; some new content about the showcase
schnalke@localhost.localdomain
parents: 4
diff changeset
147
cfa79cdfad27 new picture for camera; some new content about the showcase
schnalke@localhost.localdomain
parents: 4
diff changeset
148 \section{Der Showcase}
cfa79cdfad27 new picture for camera; some new content about the showcase
schnalke@localhost.localdomain
parents: 4
diff changeset
149
cfa79cdfad27 new picture for camera; some new content about the showcase
schnalke@localhost.localdomain
parents: 4
diff changeset
150 Die neue Aufgabe war, einen Showcase zu erstellen, der auf der \emph{Automatica}, einer Messe für Automatisierungstechnik in München, vorgeführt werden sollte.
0
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
151
8
cfa79cdfad27 new picture for camera; some new content about the showcase
schnalke@localhost.localdomain
parents: 4
diff changeset
152 Der Showcase sollte vier Roboterarme beinhalten, die sich einen Ball zuspielen. Der Ball sollte einen definierten Bereich nicht verlassen --- dafür sollten die Roboter sorgen. Die Position des Balles sollte durch Patternerkennung im Kamerabild herausgefunden werden.
0
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
153
8
cfa79cdfad27 new picture for camera; some new content about the showcase
schnalke@localhost.localdomain
parents: 4
diff changeset
154 %FIXME weg?: Dies alles sollte in Echtzeit berechnet werden können, selbst ohne ein Echtzeitbetriebssystem zur Verfügung zu haben.
cfa79cdfad27 new picture for camera; some new content about the showcase
schnalke@localhost.localdomain
parents: 4
diff changeset
155
24
b974f5895449 inserted picture of showcase
schnalke@localhost.localdomain
parents: 22
diff changeset
156 \vspace*{2em}
8
cfa79cdfad27 new picture for camera; some new content about the showcase
schnalke@localhost.localdomain
parents: 4
diff changeset
157
24
b974f5895449 inserted picture of showcase
schnalke@localhost.localdomain
parents: 22
diff changeset
158 \begin{figure}[hbt]
b974f5895449 inserted picture of showcase
schnalke@localhost.localdomain
parents: 22
diff changeset
159 \centering
b974f5895449 inserted picture of showcase
schnalke@localhost.localdomain
parents: 22
diff changeset
160 \includegraphics[width=0.6\textwidth]{pics/showcase-robots.jpg}
35
f7bc5299e59b better figure captions (new command for that)
schnalke@localhost.localdomain
parents: 33
diff changeset
161 \caption[Fertiger Showcase]{Am Ende sah es so aus}
41
f72c9230d988 put label after includegraphics, for correct numbering; corrected som typos
meillo@marmaro.de
parents: 39
diff changeset
162 \label{fig:showcase}
24
b974f5895449 inserted picture of showcase
schnalke@localhost.localdomain
parents: 22
diff changeset
163 \end{figure}