annotate das-projekt.tex @ 1:e1081de0b981

neue Beschreibung der Abteilung
author schnalke@localhost.localdomain
date Wed, 07 May 2008 16:42:14 +0200
parents de3d14ca2b7a
children d7564f4705a9
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
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
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 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.
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
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
17 Student Nummer drei, und damit mein Vorgänger und Kollege, denn er 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.
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
18
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
19 Ich war nun der vierte Student der am Projekt arbeitete. Einen Monat nach mit kam noch eine weitere Studentin hinzu. Somit waren wir in der Zeit zwischen April und FIXME zu Dritt.
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
20
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
21
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
22 \section{Zielsetzung}
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
23
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
24 % FIXME: refactor that text
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
25 Momentan werden in der Industrie Roboter über DSPs angesteuert, welche nur schwierig programmiert werden können, da spezielle Kenntnisse nötig sind. Grundgedanke dieses Projektes ist es, dieses Manko durch den Einsatz der SPUs des Cell- Prozessors aufzuheben. Da die Cell-Architektur die Programmiersprache C und Linux unterstützt, können so auf einfachem Wege schnell Robotersteuerungen entwickelt werden ohne spezielle DSP und FPGA Entwicklung zu betreiben. Dies würde den Zeitfaktor neuer Entwicklung dramatisch senken.
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
26 Ein weiterer Aspekt der Cell-Architektur ist die extrem hohe Skalierbarkeit und die äußerst geringe Latenz dank mehrerer Prozessorelemente auf einem Chip. Da eine SPU das vielfache eines DSPs leistet und bis zu acht SPUs auf einem Cell-Core Platz finden ist es denkbar komplette Fertigungsstraßen durch dieses System zu ersetzen.
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
27 Kombiniert man nun beide Welten, DSP und Standard Computer, erhält man DSP-ähnliche Applikationen unter einem Linux Betriebssystem gekoppelt mit einer enormen Rechenleistung der nächsten Generation.
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
28
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
29
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
30 \section{Verwendete Technologie}
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
31
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
32 Unser Entwicklungssystem war ein angepasster \emph{QS21}\footnote{FIXME} % FIXME
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
33 Cell/B.E. Blade-Server. An diesem waren vier Lynx6-Roboterarme von Lynxmotion\footnote{http://lynxmotion.com} angeschlossen, und außer dem noch eine \emph{myBlueFOX} Kamera von \emph{Matrix Vision}\footnote{http://matrix-vision.com}. Als Betriebsystem lief ein Fedora 7.
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
34
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
35
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
36 \subsection{Der Cell-Prozessor}
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
37
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
38 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
39
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
40 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
41
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
42 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 eher langsam.
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
43
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
44 Ü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 dann an die PPE zurück.
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
45
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
46
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
47
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
48
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
49
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
50
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
51
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
52 \subsection{Die Roboterarme} \label{robotarme}
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
53
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
54
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
55
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
56 \section{Ausgangssituation}
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
57
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
58
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
59 \section{Mein Projektteil}
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
60
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
61