comparison taetigkeit.tex @ 35:f7bc5299e59b

better figure captions (new command for that)
author schnalke@localhost.localdomain
date Tue, 17 Jun 2008 14:16:55 +0200
parents 9d9e198cf876
children c64bd51d3dd6
comparison
equal deleted inserted replaced
34:410e839fe8b6 35:f7bc5299e59b
15 15
16 \begin{figure}[hbt] %FIXME: where put this picture? 16 \begin{figure}[hbt] %FIXME: where put this picture?
17 \centering 17 \centering
18 \label{fig:robot-terminology} 18 \label{fig:robot-terminology}
19 \includegraphics[width=0.8\textwidth]{pics/lynx6-terminology.png} 19 \includegraphics[width=0.8\textwidth]{pics/lynx6-terminology.png}
20 \caption{Terminologie des Roboterarms} 20 \caption[Terminologie des Roboterarms \source{http://lynxmotion.com, bearbeitet}]{Terminologie des Roboterarms}
21 \end{figure} 21 \end{figure}
22 22
23 \paragraph{Das Problem} 23 \paragraph{Das Problem}
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. 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.
25 25
30 30
31 \begin{figure}[hbt] 31 \begin{figure}[hbt]
32 \centering 32 \centering
33 \label{fig:kollisionszone} 33 \label{fig:kollisionszone}
34 \includegraphics[width=0.4\textwidth]{pics/collision-zones.png} 34 \includegraphics[width=0.4\textwidth]{pics/collision-zones.png}
35 \caption{Hervorgehobene Kollisionszone bei vier Kollisionspunkt pro Knochen} 35 \caption[Kollisionszonen]{Hervorgehobene Kollisionszone bei vier Kollisionspunkt pro Knochen}
36 \end{figure} 36 \end{figure}
37 37
38 38
39 \paragraph{Programmablauf} 39 \paragraph{Programmablauf}
40 Als Ausgangsdaten habe ich die Position und Ausrichtung der Roboter in der ``Welt'' und 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}}$. 40 Als Ausgangsdaten habe ich die Position und Ausrichtung der Roboter in der ``Welt'' und 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}}$.
58 58
59 \begin{figure}[hbt] 59 \begin{figure}[hbt]
60 \centering 60 \centering
61 \label{fig:svg-named} 61 \label{fig:svg-named}
62 \includegraphics[width=0.8\textwidth]{pics/svg-named.png} 62 \includegraphics[width=0.8\textwidth]{pics/svg-named.png}
63 \caption{Die generierte SVG-Grafik mit Beschriftungen} 63 \caption[Generierte SVG-Grafik]{Die generierte SVG-Grafik mit Beschriftungen}
64 \end{figure} 64 \end{figure}
65 65
66 \paragraph{Animation} 66 \paragraph{Animation}
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 (mit \emph{MEncoder} erstellt) ersetzt, da diese deutlich weniger Speicher verbrauchen und schneller erzeugt werden konnten. 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 (mit \emph{MEncoder} erstellt) ersetzt, da diese deutlich weniger Speicher verbrauchen und schneller erzeugt werden konnten.
68 68
120 120
121 \begin{figure}[hbt] 121 \begin{figure}[hbt]
122 \centering 122 \centering
123 \label{fig:captured-area} 123 \label{fig:captured-area}
124 \includegraphics[width=0.5\textwidth]{pics/captured-area.png} 124 \includegraphics[width=0.5\textwidth]{pics/captured-area.png}
125 \caption{Von der Kamera aufgenommener Bereich} 125 \caption[Blickfeld der Kamera]{Von der Kamera aufgenommener Bereich}
126 \end{figure} 126 \end{figure}
127 127
128 \paragraph{Heuristik} 128 \paragraph{Heuristik}
129 Bilderkennung ist nicht deterministisch und so können bei mehreren Durchläufen mit gleichen Eingangsbild unterschiedliche Bälle gefunden werden. Dies führte dazu, dass bei uns manchmal kein Ball gefunden wurde obwohl einer vorhanden war, ebenso wie gefundene Bälle an Stellen, wo keine waren. Insbesondere die Roboterarme wurden von Zeit zu Zeit als Ball erkannt. 129 Bilderkennung ist nicht deterministisch und so können bei mehreren Durchläufen mit gleichen Eingangsbild unterschiedliche Bälle gefunden werden. Dies führte dazu, dass bei uns manchmal kein Ball gefunden wurde obwohl einer vorhanden war, ebenso wie gefundene Bälle an Stellen, wo keine waren. Insbesondere die Roboterarme wurden von Zeit zu Zeit als Ball erkannt.
130 130
132 132
133 \begin{figure}[hbt] 133 \begin{figure}[hbt]
134 \centering 134 \centering
135 \label{fig:101balls} 135 \label{fig:101balls}
136 \includegraphics[width=0.7\textwidth]{pics/101balls.png} 136 \includegraphics[width=0.7\textwidth]{pics/101balls.png}
137 \caption{Unsere Trainingsbilder} 137 \caption[Trainingsbilder]{Unsere Trainingsbilder}
138 \end{figure} 138 \end{figure}
139 139
140 \paragraph{Ergebnis} 140 \paragraph{Ergebnis}
141 Alles in allem können wir aber sehr zufrieden mit unserer Ballerkennung sein. Wir haben eine konstante Erfolgsrate von über 90\% und schlechtes Licht oder ein teilweise verdeckter Ball wirken sich wenig aus. Gleichzeitig ist auch die Rate der Fehlerkennungen recht gering. Durch das invertierte Bild und hellem Ball auf dunklem Grund haben wir sowieso fast alle Fehlermöglichkeiten ausgeschlossen. Mit einem matten Untergrund war dann wirklich die letzte Irritationsgefahr gebannt und unser Vision-Modul arbeitete äußerst zuverlässig. 141 Alles in allem können wir aber sehr zufrieden mit unserer Ballerkennung sein. Wir haben eine konstante Erfolgsrate von über 90\% und schlechtes Licht oder ein teilweise verdeckter Ball wirken sich wenig aus. Gleichzeitig ist auch die Rate der Fehlerkennungen recht gering. Durch das invertierte Bild und hellem Ball auf dunklem Grund haben wir sowieso fast alle Fehlermöglichkeiten ausgeschlossen. Mit einem matten Untergrund war dann wirklich die letzte Irritationsgefahr gebannt und unser Vision-Modul arbeitete äußerst zuverlässig.
142 142
154 154
155 \begin{figure}[hbt] 155 \begin{figure}[hbt]
156 \centering 156 \centering
157 \label{fig:showcase-stand} 157 \label{fig:showcase-stand}
158 \includegraphics[width=1.0\textwidth]{pics/automatica-showcase-stand.jpg} 158 \includegraphics[width=1.0\textwidth]{pics/automatica-showcase-stand.jpg}
159 \caption{Unser Showcase am Stand von Matrix Vision} 159 \caption[Der Showcase auf der Messe \source{privat}]{Unser Showcase am Stand von Matrix Vision}
160 \end{figure} 160 \end{figure}
161 161
162 \begin{figure}[hbt] 162 \begin{figure}[hbt]
163 \centering 163 \centering
164 \includegraphics[width=0.8\textwidth]{pics/automatica-besucher.jpg} 164 \includegraphics[width=0.8\textwidth]{pics/automatica-besucher.jpg}
165 \caption{Interessierte Besucher} 165 \caption[Messebesucher am Showcase \source{privat}]{Interessierte Besucher}
166 \end{figure} 166 \end{figure}
167 167
168 168
169 169
170 170