Kleiner Roboterkran

Die "sehende" Maschine zu bauen war ein Traum von mir. Während des Vordiploms hatte ich angefangen einen "Plotter" zu bauen. Das ist das Gerät auf dem Regal (Bild 1). Doch das abarbeiten von Steuerzyklen, ohne auf die Umgebung zu achten, war auf Dauer nicht so interessant. So kam ich auf die Idee, daß eine Kamera die Umgebung beobachten könnte und auf Aufträge reagieren könnte. Wenn man einen Gegenstand, der sich vom Hintergrund abhebt, auf den Tisch legt, so wird er automatisch von dem Kran eingesammelt. Der Kran kann aber auch Stundenlang den Tisch betrachten und nichts tun, bis irgendwann einmal ein Gegenstand auf den Tisch gelegt wird.

Bild 1: Roboterkran

Die Steuersoftware ist größtenteils Objektorientiert geschrieben (Java) nur die Hardwarenahen Teile sind in C geschrieben. Die beiden Programmteile sind nach dem Client- Server Prinzip gekoppelt, so daß das Programm auf mehrere Rechner verteilt werden kann. Die Teilfunktionen sind in einem Dekompostionsdiagramm (Bild 2) dargestellt.

Bild 2: Dekompostionsdiagramm

Das folgende Applet zeigt die Benutzeroberfläche mit einer off-line Simulation des Vorgangs. Welcher Punkt auf dem Bild zum Gegenstand gehört und welcher nicht, wird durch ein Schwellwertverfahren ermittelt. D. h. das alle Punkte, die nicht heller sind als ein Grenzwert, zu dem Objekt gehören. Im unteren Teil des Applets ist ein Histogramm abgebildet, das die Grauwertverteilung in dem Bild beschreibt. Legt man den Gegenstand auf den Tisch, so ändert sich die Grauwertverteilung. Der Grauwertverlauf auf dem Strich repräsentiert die Grauwerte. Der rote Strich markiert den Schwellwert. In dem oberen Editierfeld kann dieser Schwellwert verändert werden. Ist der Gegenstand erkannt worden, so werden die Schwerpunktskoordinaten (Xs, Ys) auf dem Tisch in seinem Koordinatensystem mit Hilfe der Triangulation berechnet. Man könnte auch sagen, daß die "Perspektive herausgerechnet wird".

Steuerungsapplet