annotate taetigkeit.tex @ 17:2fd6859d238d

added introduction
author schnalke@localhost.localdomain
date Wed, 14 May 2008 12:58:35 +0200
parents 29268e9521a3
children cf891206ae27
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{Meine Tätigkeit}
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
2
10
98f2974a3cb4 added content about collision control
schnalke@localhost.localdomain
parents: 0
diff changeset
3 In den ersten Tagen musste ich zuerst meinen Rechner einrichten. Er war zwar standardmäßig installiert, jedoch mussten diverse Programme eingerichtet werden. Des weiteren wird für die Entwicklung für den Cell ein spezielles Software-Development-Kit (SDK) benötigt. Diese besteht aus eine Vielzahl von Teilen deren Setup einige Zeit in Anspruch nahm.
98f2974a3cb4 added content about collision control
schnalke@localhost.localdomain
parents: 0
diff changeset
4
98f2974a3cb4 added content about collision control
schnalke@localhost.localdomain
parents: 0
diff changeset
5 Als ich meinen Rechner soweit einsatzbereit hatte, nahm ich mir die umfangreiche Dokumentation zur Entwicklung von Cell-Programmen vor. Mit Hilfe von ihr sollte und wollte ich einen Überblick über die vorliegende Architektur und die Programmierung für sie gewinnen. Es gibt einen Simulator, der einen Cell-Prozessor imitiert und auf einem gewöhnlichen x86-System läuft. Mit diesem habe ich erste Testprogramme geschrieben um ein Gefühl für Cell-Programmierung zu bekommen.
98f2974a3cb4 added content about collision control
schnalke@localhost.localdomain
parents: 0
diff changeset
6
98f2974a3cb4 added content about collision control
schnalke@localhost.localdomain
parents: 0
diff changeset
7 Nachdem ich dann Zugriff auf den bestehenden Code hatte, studierte ich die Arbeiten meinem Vorgänger, bevor ich mich daran machte, das aktuelle Framework zu erforschen.
98f2974a3cb4 added content about collision control
schnalke@localhost.localdomain
parents: 0
diff changeset
8
0
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
9
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
10 \section{Kollisionskontrolle}
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
11
10
98f2974a3cb4 added content about collision control
schnalke@localhost.localdomain
parents: 0
diff changeset
12 Meine erste Aufgabe bestand darin, eine Kollisionskontrolle für die Roboterarme einzubauen. Diese in sich abgeschlossene Aufgabe war für den Anfang gut geeignet. So konnte ich ohne allzuviel Vorwissen haben zu müssen, sanft in das Projekt einsteigen.
98f2974a3cb4 added content about collision control
schnalke@localhost.localdomain
parents: 0
diff changeset
13
98f2974a3cb4 added content about collision control
schnalke@localhost.localdomain
parents: 0
diff changeset
14 Der Algorithmus sollte möglichst allgemein sein und nicht nur mit genau unserer Roboteranordnung funktionieren.
98f2974a3cb4 added content about collision control
schnalke@localhost.localdomain
parents: 0
diff changeset
15
11
4a9a22285369 added new pictures about the robot arm; added content for collision control
schnalke@localhost.localdomain
parents: 10
diff changeset
16 \begin{figure}[hbt] %FIXME: where put this picture?
4a9a22285369 added new pictures about the robot arm; added content for collision control
schnalke@localhost.localdomain
parents: 10
diff changeset
17 \centering
4a9a22285369 added new pictures about the robot arm; added content for collision control
schnalke@localhost.localdomain
parents: 10
diff changeset
18 \label{fig:robot-terminology}
4a9a22285369 added new pictures about the robot arm; added content for collision control
schnalke@localhost.localdomain
parents: 10
diff changeset
19 \includegraphics[width=0.8\textwidth]{pics/lynx6-terminology.png}
4a9a22285369 added new pictures about the robot arm; added content for collision control
schnalke@localhost.localdomain
parents: 10
diff changeset
20 \caption{Terminologie des Roboterarms}
4a9a22285369 added new pictures about the robot arm; added content for collision control
schnalke@localhost.localdomain
parents: 10
diff changeset
21 \end{figure}
4a9a22285369 added new pictures about the robot arm; added content for collision control
schnalke@localhost.localdomain
parents: 10
diff changeset
22
4a9a22285369 added new pictures about the robot arm; added content for collision control
schnalke@localhost.localdomain
parents: 10
diff changeset
23 \paragraph{Das Problem}
10
98f2974a3cb4 added content about collision control
schnalke@localhost.localdomain
parents: 0
diff changeset
24 Kollisionserkennung ist einfach Abstandsberechnung von Objekten. Unsere Objekte sind Roboterarme, die sich als vier aneinander hängende Linien ansehen lassen --- jedenfalls aus Sicht der Kollisionserkennung. Das eigentliche Problem besteht also aus Abstandsberechnungen von Strecken (nicht Geraden) im Raum. Um nicht die komplizierte Berechnung von Streckenabständen durchführen zu müssen, habe ich jede Strecke durch eine Anzahl Punkte auf ihr ersetzt. Somit musste ich nur Punktabstände berechnen, was einfach ist; allerdings in größerer Anzahl.
98f2974a3cb4 added content about collision control
schnalke@localhost.localdomain
parents: 0
diff changeset
25
98f2974a3cb4 added content about collision control
schnalke@localhost.localdomain
parents: 0
diff changeset
26 Ich berechnete die Abstände jedes Kollisionspunktes eines Roboters, mit jedem Kollisionspunkt jedes anderen Roboters.\footnote{Kollisionen innerhalb eines Roboterarms sollten durch die Kinematik abgefangen werden.} Da dabei, vereinfacht, jeder Punkt mit jedem verglichen wird, resultiert daraus eine quadratische Laufzeit: $O(n^{2})$. Für eine größere Anzahl von Robotern, oder mehr Kollisionspunkten pro Strecke, sollten wir also recht schnell viel Zeit brauchen. Diese Vorraussage wurde von den Performance-Messungen meines Teamspartners bestätigt.
98f2974a3cb4 added content about collision control
schnalke@localhost.localdomain
parents: 0
diff changeset
27
15
29268e9521a3 added content for logics module
schnalke@localhost.localdomain
parents: 13
diff changeset
28 Mit unseren vier Robotern konnte ich 16 Kollisionspunkte pro Knochen einfügen, ohne besonders viel Zeit zu verbrauchen; 32 Punkte waren noch machbar. Ich entschied mich für vier Kollisionspunkt pro Knochen, denn dies führte zu einer voll ausreichenden Genauigkeit, wie Abbildung \ref{fig:kollisionszone} %FIXME: bildnr stimmt nicht!
29268e9521a3 added content for logics module
schnalke@localhost.localdomain
parents: 13
diff changeset
29 zeigt.
11
4a9a22285369 added new pictures about the robot arm; added content for collision control
schnalke@localhost.localdomain
parents: 10
diff changeset
30
4a9a22285369 added new pictures about the robot arm; added content for collision control
schnalke@localhost.localdomain
parents: 10
diff changeset
31 \begin{figure}[hbt]
4a9a22285369 added new pictures about the robot arm; added content for collision control
schnalke@localhost.localdomain
parents: 10
diff changeset
32 \centering
4a9a22285369 added new pictures about the robot arm; added content for collision control
schnalke@localhost.localdomain
parents: 10
diff changeset
33 \label{fig:kollisionszone}
4a9a22285369 added new pictures about the robot arm; added content for collision control
schnalke@localhost.localdomain
parents: 10
diff changeset
34 \includegraphics[width=0.4\textwidth]{pics/collision-zones.png}
4a9a22285369 added new pictures about the robot arm; added content for collision control
schnalke@localhost.localdomain
parents: 10
diff changeset
35 \caption{Hervorgehobene Kollisionszone bei vier Kollisionspunkt pro Knochen}
4a9a22285369 added new pictures about the robot arm; added content for collision control
schnalke@localhost.localdomain
parents: 10
diff changeset
36 \end{figure}
10
98f2974a3cb4 added content about collision control
schnalke@localhost.localdomain
parents: 0
diff changeset
37
98f2974a3cb4 added content about collision control
schnalke@localhost.localdomain
parents: 0
diff changeset
38
11
4a9a22285369 added new pictures about the robot arm; added content for collision control
schnalke@localhost.localdomain
parents: 10
diff changeset
39 \paragraph{Programmablauf}
4a9a22285369 added new pictures about the robot arm; added content for collision control
schnalke@localhost.localdomain
parents: 10
diff changeset
40 Als Ausgangsdaten habe ich die Positionen und Ausrichtungen der Roboter in der ``Welt'' und die sämtliche Gelenkwinkel. Aus diesen Daten habe ich die Welt-Koordinaten, also Koordinaten bezogen auf das globale Koordinatensystem, aller Gelenke berechnet. Mit den globalen Koordinaten führe ich die Kollisionsberechnung durch, denn diese liegen im gleichen Koordinatensystem und Abstandberechnungen sind somit einfach: $distance = \sqrt{\Delta x^{2} + \Delta y^{2} + \Delta z^{2}}$.
10
98f2974a3cb4 added content about collision control
schnalke@localhost.localdomain
parents: 0
diff changeset
41
98f2974a3cb4 added content about collision control
schnalke@localhost.localdomain
parents: 0
diff changeset
42
12
2685558f3375 added conclusion to CC; added picture and text to SVG-gen
schnalke@localhost.localdomain
parents: 11
diff changeset
43 \paragraph{Ergebnis}
2685558f3375 added conclusion to CC; added picture and text to SVG-gen
schnalke@localhost.localdomain
parents: 11
diff changeset
44 Die Kollisionskontrolle stoppt das Program bevor eine tatsächliche Kollision auftritt. Die Performance der Moduls ist tragbar, könnte aber weiter verbessert werden. Die Optimierungen können in zwei Richtungen erfolgen. Zum Ersten könnten die Berechnungen für den Cell optimiert werden und somit eine deutlich höhere Rechenleistung erreicht werden. Zum Zweiten könnte die Zahl der Abstandberechnungen reduziert werden indem man zuerst schaut, ob ein Arm überhaupt in der Nähe eines anderen ist, bevor einzelne Kollisionspunkte angeschaut werden.
2685558f3375 added conclusion to CC; added picture and text to SVG-gen
schnalke@localhost.localdomain
parents: 11
diff changeset
45
2685558f3375 added conclusion to CC; added picture and text to SVG-gen
schnalke@localhost.localdomain
parents: 11
diff changeset
46
2685558f3375 added conclusion to CC; added picture and text to SVG-gen
schnalke@localhost.localdomain
parents: 11
diff changeset
47
2685558f3375 added conclusion to CC; added picture and text to SVG-gen
schnalke@localhost.localdomain
parents: 11
diff changeset
48
0
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
49
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
50 \section{Visualisierung}
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
51
12
2685558f3375 added conclusion to CC; added picture and text to SVG-gen
schnalke@localhost.localdomain
parents: 11
diff changeset
52 Im Laufe meiner Arbeiten an der Kollisionskontrolle musste ich mir oft ein Bild von den Stellungen der Roboter machen um die berechneten Werte überprüfen zu können. Ich wollte möglichst unabhängig von den realen Robotern im Labor arbeiten, von denen wir zu dieser Zeit sowieso nur zwei hatten. Anfangs habe ich mir die Winkelstellungen oder die Koordinaten der Gelenke ausgeben lassen und dann unseren defekten Testarm entsprechend eingestellt. So konnte ich mir die Situation einigermaßen vorstellen. Alternativ habe ich zu Stift und Papier gegriffen um mir die Situation zu zeichnen. Dies bedeutete jedoch immer wieder den gleichen Aufwand zu betreiben, nur um die Roboterstellungen visuell vor Augen zu haben.
2685558f3375 added conclusion to CC; added picture and text to SVG-gen
schnalke@localhost.localdomain
parents: 11
diff changeset
53
13
0a7e31e112a6 added content to visualization
schnalke@localhost.localdomain
parents: 12
diff changeset
54 \paragraph{Bilderzeugung}
12
2685558f3375 added conclusion to CC; added picture and text to SVG-gen
schnalke@localhost.localdomain
parents: 11
diff changeset
55 Wiederkehrende Aufgaben soll man automatisieren --- das ist bekannt. Ich wollte mir also automatisch Bilder generieren lassen, um die stupide Arbeit auf den Computer zu übertragen. Als geeignetes Grafikformat erschien mir das \emph{Scalable Vector Graphics}-Format, das eine Textdatei in XML ist. Somit konnte ich einfach line- und circle-Befehle vom Programm in eine Textdatei schreiben lassen. Im Vergleich zu den bisherigen Ausgaben der Gelenk-Koordinaten in der Welt, war in erster Linie nur eine andere Schreibweise. SVG-Dateien werden von gängigen Bildbetrachtern und aktuellen Browsern angezeigt.
2685558f3375 added conclusion to CC; added picture and text to SVG-gen
schnalke@localhost.localdomain
parents: 11
diff changeset
56
13
0a7e31e112a6 added content to visualization
schnalke@localhost.localdomain
parents: 12
diff changeset
57 Ich habe die SVG-Generierung als separates Modul implementiert, das bei Bedarf aktiviert werden kann und dann in jedem Programm-Cycle ein Bild der Roboterstellungen zeichnet. Die Darstellung im Bild ist zwei-dimensional, da 3D-Abbilder nur bei beweglicher Kamera sinnvoll nutzbar sind. Ich habe deshalb die Dreitafelprojektion verwendet, die auch technischen Zeichnungen und Bauplänen bekannt ist.
0a7e31e112a6 added content to visualization
schnalke@localhost.localdomain
parents: 12
diff changeset
58
12
2685558f3375 added conclusion to CC; added picture and text to SVG-gen
schnalke@localhost.localdomain
parents: 11
diff changeset
59 \begin{figure}[hbt]
2685558f3375 added conclusion to CC; added picture and text to SVG-gen
schnalke@localhost.localdomain
parents: 11
diff changeset
60 \centering
2685558f3375 added conclusion to CC; added picture and text to SVG-gen
schnalke@localhost.localdomain
parents: 11
diff changeset
61 \label{fig:svg-named}
2685558f3375 added conclusion to CC; added picture and text to SVG-gen
schnalke@localhost.localdomain
parents: 11
diff changeset
62 \includegraphics[width=0.8\textwidth]{pics/svg-named.png}
2685558f3375 added conclusion to CC; added picture and text to SVG-gen
schnalke@localhost.localdomain
parents: 11
diff changeset
63 \caption{Die generierte SVG-Grafik mit Beschriftungen}
2685558f3375 added conclusion to CC; added picture and text to SVG-gen
schnalke@localhost.localdomain
parents: 11
diff changeset
64 \end{figure}
2685558f3375 added conclusion to CC; added picture and text to SVG-gen
schnalke@localhost.localdomain
parents: 11
diff changeset
65
13
0a7e31e112a6 added content to visualization
schnalke@localhost.localdomain
parents: 12
diff changeset
66 \paragraph{Animation}
0a7e31e112a6 added content to visualization
schnalke@localhost.localdomain
parents: 12
diff changeset
67 Wenig später waren dann selbst die Einzelbilder teilweise zu umständlich, so dass der Wunsch nach einer animierten Darstellung des Geschehens aufkam. SVG-Animationen ausgeben zu lassen wäre deutlich komplizierter geworden, und diese können auch nur von wenigen Programmen dargestellt werden. Deshalb habe ich mit der Programmsammlung \emph{ImageMagick} aus dem SVG-Bildern ein animiertes GIF gemacht. Dieses stellte dann auch die Zeitdimension in den Bewegungen dar. Später wurden die GIFs dann durch komprimierte AVI-Filme ersetzt, da diese deutlich weniger Speicher verbrauchen und schneller erzeugt werden konnten.
0a7e31e112a6 added content to visualization
schnalke@localhost.localdomain
parents: 12
diff changeset
68
0a7e31e112a6 added content to visualization
schnalke@localhost.localdomain
parents: 12
diff changeset
69 \paragraph{Ergebnis}
0a7e31e112a6 added content to visualization
schnalke@localhost.localdomain
parents: 12
diff changeset
70 Es liegt hier eine Komponente vor, die die Entwicklung des Restsystems deutlich vereinfacht hat. Mit ihr war es möglich, im Büro zu testen --- es mussten nicht die Roboter im Labor bemüht werden. Zudem konnten durch den direkteren Weg von den Basisdaten zum visuellen Ergebnis Fehlerquellen eliminiert werden. So war es unter anderem auch hilfreich bei der Suche nach einem Bug in der Kinematik --- der ja erst durch die Unterschiede zwischen SVG-Simulation und realen Roboterbewegungen sichtbar wurde.
0a7e31e112a6 added content to visualization
schnalke@localhost.localdomain
parents: 12
diff changeset
71
0a7e31e112a6 added content to visualization
schnalke@localhost.localdomain
parents: 12
diff changeset
72 Es freut mich um so mehr, dass ich bei Fred Brooks ``The Mythical Man-Month'' bestätigt finde, was ich nebenbei herausgefunden habe: Es ist sinnvoll einen Simulator zu haben und diesen parallel mit dem eigentlichen Programm zu entwickeln.
0a7e31e112a6 added content to visualization
schnalke@localhost.localdomain
parents: 12
diff changeset
73
12
2685558f3375 added conclusion to CC; added picture and text to SVG-gen
schnalke@localhost.localdomain
parents: 11
diff changeset
74
0
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
75
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
76 \section{Intelligenz-Modul}
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
77
15
29268e9521a3 added content for logics module
schnalke@localhost.localdomain
parents: 13
diff changeset
78 Nachdem ich meine Arbeiten an den ersten zwei Modulen soweit fertig war, haben wir im Team beschlossen, dass ich mit dem Intelligenz-Modul weiter machen sollte. Der bisherige Code war natürlich nicht ganz fertig und es war auch durchaus so gewollt, dass die einzelnen Programmteile kontinuierlich weiterentwickelt werden. Neue Funktionalitäten im einen Modul zogen neue Anforderungen in einem weiteren nach sich. So wurde der gesammte Code stückweise ausgebaut.
29268e9521a3 added content for logics module
schnalke@localhost.localdomain
parents: 13
diff changeset
79
29268e9521a3 added content for logics module
schnalke@localhost.localdomain
parents: 13
diff changeset
80 Nichts desto trotz begann ich dann hauptsächlich an der Intelligenz, oder Logik, zu entwickeln.
29268e9521a3 added content for logics module
schnalke@localhost.localdomain
parents: 13
diff changeset
81
29268e9521a3 added content for logics module
schnalke@localhost.localdomain
parents: 13
diff changeset
82
29268e9521a3 added content for logics module
schnalke@localhost.localdomain
parents: 13
diff changeset
83 \paragraph{Aufgabe der Intelligenz}
29268e9521a3 added content for logics module
schnalke@localhost.localdomain
parents: 13
diff changeset
84 Das Logik-Modul plant, entscheidet und gibt die resultierenden Befehle. Es beherbergt den ``interessanten'' Programmcode, denn hier steckt eine Künstliche Intelligenz (so simpel sie auch sei).
29268e9521a3 added content for logics module
schnalke@localhost.localdomain
parents: 13
diff changeset
85
29268e9521a3 added content for logics module
schnalke@localhost.localdomain
parents: 13
diff changeset
86 In unserem Fall hat die Logik die aktuelle und letzte Ballposition, sowie die Roboterpositionen zur Verfügung. Das Modul soll ausgeben welcher Roboterarm was als nächstes tun soll.
29268e9521a3 added content for logics module
schnalke@localhost.localdomain
parents: 13
diff changeset
87
29268e9521a3 added content for logics module
schnalke@localhost.localdomain
parents: 13
diff changeset
88
29268e9521a3 added content for logics module
schnalke@localhost.localdomain
parents: 13
diff changeset
89 \paragraph{Grundgedanken}
29268e9521a3 added content for logics module
schnalke@localhost.localdomain
parents: 13
diff changeset
90 Unser Showcase ist so aufgebaut, dass es immer mindestens einem Roboter möglich ist, den Ball zu spielen, nie jedoch mehr als zweien. In den meisten Fällen wird der Ball nur von genau einem Arm erreichbar sein, dann wird dieser ihn spielen. Wenn zwei Roboter nah genug sind, übernimmt der Arm mit der geringeren Entfernung (genannt ``Master'') die Kontrolle und spielt den Ball. Der andere Arm (genannt ``Slave'') fungiert als Unterstützung und bewegt sich relativ zum Master. Dieses Verhalten sollte uns bei unvorgesehenen Änderungen des Ballwegs nützlich sein. Die restlichen Arme fahren in eine Warte-Position.
29268e9521a3 added content for logics module
schnalke@localhost.localdomain
parents: 13
diff changeset
91
29268e9521a3 added content for logics module
schnalke@localhost.localdomain
parents: 13
diff changeset
92 \paragraph{Die Schussbewegung} % FIXME: die paragraph-zeile weg?
29268e9521a3 added content for logics module
schnalke@localhost.localdomain
parents: 13
diff changeset
93 Der Ball sollte nicht nur am Paddle (= Schläger), den wir am Greifer des Arms befestigt haben, abprallen, sondern es sollte ihm wieder neue Bewegungsenergie mitgegeben werden. Es war also klar, dass die Roboter eine gewissen Schussbewegung ausführen mussten. Desweiteren war es notwendig das Paddle im richtigen Winkel auszurichten, um den Ball in eine bestimmte Richtung spielen zu können. Das Schussziel sollte in im Intelligenz-Modul gesetzt werden können. Damit wäre es dann auch möglich, dass sich nur zwei Roboter hin und her spielen. Solche ``Spielereien'' sollten auf jeden Fall machbar sein, denn diese machen einen Showcase erst interessant und zeigen einen Hauch menschlichen Verhaltens, was bei Robotern eine wichtige Komponente ist.
29268e9521a3 added content for logics module
schnalke@localhost.localdomain
parents: 13
diff changeset
94
29268e9521a3 added content for logics module
schnalke@localhost.localdomain
parents: 13
diff changeset
95 \paragraph{Mögliche Erweiterungen}
29268e9521a3 added content for logics module
schnalke@localhost.localdomain
parents: 13
diff changeset
96 Die Intelligenz bietet Ausbaumöglichkeiten aller Art. Das geht von einer Bibliothek von Entscheidungsmöglichkeiten, über persönliche Verhaltensmuster einzelner Roboter, bis zu Gruppenverhalten, Taktik, oder gar Finten.
29268e9521a3 added content for logics module
schnalke@localhost.localdomain
parents: 13
diff changeset
97
29268e9521a3 added content for logics module
schnalke@localhost.localdomain
parents: 13
diff changeset
98
29268e9521a3 added content for logics module
schnalke@localhost.localdomain
parents: 13
diff changeset
99
29268e9521a3 added content for logics module
schnalke@localhost.localdomain
parents: 13
diff changeset
100
29268e9521a3 added content for logics module
schnalke@localhost.localdomain
parents: 13
diff changeset
101
29268e9521a3 added content for logics module
schnalke@localhost.localdomain
parents: 13
diff changeset
102
29268e9521a3 added content for logics module
schnalke@localhost.localdomain
parents: 13
diff changeset
103
0
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
104
de3d14ca2b7a inital commit
schnalke@localhost.localdomain
parents:
diff changeset
105
10
98f2974a3cb4 added content about collision control
schnalke@localhost.localdomain
parents: 0
diff changeset
106
98f2974a3cb4 added content about collision control
schnalke@localhost.localdomain
parents: 0
diff changeset
107
98f2974a3cb4 added content about collision control
schnalke@localhost.localdomain
parents: 0
diff changeset
108 \chapter{Teamwork}
98f2974a3cb4 added content about collision control
schnalke@localhost.localdomain
parents: 0
diff changeset
109 % FIXME: rethink this chapter
98f2974a3cb4 added content about collision control
schnalke@localhost.localdomain
parents: 0
diff changeset
110
98f2974a3cb4 added content about collision control
schnalke@localhost.localdomain
parents: 0
diff changeset
111 Innerhalb unseres Teams hatte jeder ein Fachgebiet, für das er sich zuständig fühlte. Jedoch arbeiteten wir natürlich gemeinsam am Ganzen und in einer so kleinen Gruppe ist es normal, dass jeder an beliebiger Stelle anpackt wenn es erforderlich ist. Dennoch formierte es sich so, dass mein Teampartner hauptsächlich für das (sein) Framework und Installationen aller Art verantworklich war, zudem hatte er als der mit der meisten Erfahrung die Rolle des Projektleiters inne. Unsere Mitarbeiterin, die einen Monat nach mir dazu stieß, kümmerte sich um die visuelle Thematik. Ich übernahm den Teil der eigentlichen Anwendungsprogrammierung. Das heißt, dass ich die Arbeit der Anderen als Basis nahm um darauf die Anwendungsteile zu konstruieren, die spezifisch für unseren Showcase waren.