# HG changeset patch # User schnalke@localhost.localdomain # Date 1213339065 -7200 # Node ID 969a0359b72a1808fbd285a3a6a7f25002a842f1 # Parent b974f5895449dd6928f49412d2a50934d0ad8341 added pictures and new content about the vision module diff -r b974f5895449 -r 969a0359b72a pics/101balls.png Binary file pics/101balls.png has changed diff -r b974f5895449 -r 969a0359b72a pics/captured-area.png Binary file pics/captured-area.png has changed diff -r b974f5895449 -r 969a0359b72a taetigkeit.tex --- a/taetigkeit.tex Thu Jun 12 15:35:28 2008 +0200 +++ b/taetigkeit.tex Fri Jun 13 08:37:45 2008 +0200 @@ -113,7 +113,34 @@ Dieses Problem löste sich ziemlich gut, indem wir deine wahrscheinliche Ballposition (ausgehend von der bisherigen Bewegung) annahmen, falls er nicht gefunden wurde. Wurde er jedoch über mehrere Zyklen nicht gefunden, sollte zuerst der Roboter der dem Ball wahrscheinlich am nächsten war, eine Befreiungsbewegung ausführen. War der Ball dann immer noch verschwunden, sollten alle Roboter die Bewegung ausführen. Brachte dies den Ball noch immer nicht zum Vorschein, dann war er vermutlich außerhalb des Spielfeldes und die Roboter sollten in ihre Ruhestellung fahren und warten \dots bis der Ball wieder auftauchen würde. -\section{Bilderkennung} +\section{Die Vision} +Für dieses Modul war zwar hauptsächlich meine Kollegin zuständig, jedoch möchte ich der Vollständigkeit halber ein paar Informationen dazu hier anführen. + +In jedem Zyklus holte das Vision-Modul zunächst ein Bild von der Kamera. Dieses wurde auf etwa 200x150 Pixel verkleinert um Rechenzeit zu sparen und noch invertiert. Dann wurde mit \emph{Haar-like features} nach einem Ball gesucht. Von den gefundenen Bällen wurden diejenigen aussortiert, die außerhalb der Spielfläche waren. Waren dann noch immer mehr als ein erkannter Ball übrig, wurde derjenige Ball ausgewählt, der ausgehend von der letzten Position am wahrscheinlichsten war. Als Resultat lieferte das Modul die Koordinaten des Balles, oder zeigte, dass kein Ball gefunden wurde. + +\begin{figure}[hbt] + \centering + \label{fig:captured-area} + \includegraphics[width=0.5\textwidth]{pics/captured-area.png} + \caption{Von der Kamera aufgenommener Bereich} +\end{figure} + +\paragraph{Heuristik} +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. + +Auch sonst lief bei der Bilderkennung nicht alles so, wie wir uns das dachten --- es scheint fast, als gäbe es dafür ganz eigene Regeln. Unsere Trainingsbilder waren allesamt von einem ganz anderen Ball, als wir nacher verwendeten. Das beste Ergebnis lieferte dann ein früher Test mit nur etwa hundert Fotos; mit mehr Fotos wurde das Ergebnis nur schlechter. Die Größe des Balles war (abgesehen von der Helligkeit natürlich) der wichtigste Einflussfaktor auf den Erkennungserfolg. Das Oberflächenmaterial und die -bemalung wirkten sich kaum aus. Unser Ball hatte am Ende sogar große schwarze Punkte auf weißem Untergrund (in Anlehnung an den ``Europass'', den Ball der EM 2008), ohne dass die Erkennungsrate merklich schlechter wurde. + +\begin{figure}[hbt] + \centering + \label{fig:101balls} + \includegraphics[width=0.7\textwidth]{pics/101balls.png} + \caption{Unsere Trainingsbilder} +\end{figure} + +\paragraph{Ergebnis} +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. + +% FIXME: add picture of facedetect \section{Auf der Messe}