Projekt Mindstorms 2005/06
PPS des TIK am D-ITET der ETH Zürich

Projektbeschreibung

Inhalt

Dürfen wir vorstellen: Unser Lego Mindstorms Projekt Pacman

Im Rahmen des vom Institut für Technische Informatik und Kommunikationsnetze Lego-dargebotenen MindStorms-Projektes, haben wir uns entschieden, das Pacman-Spiel mit Robotern nachzubauen. Dazu haben wir einen Pacman und drei Geister gebaut. Diese Projektbeschreibung beinhaltet einen Überblick über die wichtigsten Aspekte unseres Projektes.

Pacman, das Spiel

Pacman ist ein Videospiel welches 1981 in die Spielhallen der USA erschien. Im Spiel muss Pacman alle Punkte im Labyrinth auffressen, um ins nächste Level zu kommen. Dabei wird er von 4 Gespenstern, welche Blinky, Pinky, Inky und Clyde heissen, verfolgt. Wird Pacman von einem dieser Geister berührt, ist das Spiel zuende. Gesteuert wird Pacman mit einem Joystick.

Pacman
Ein Screenshot aus einem der vielen Versionen von Pacman.

Die wichtigsten Bausteine, aus denen unser Pacman Spiel besteht

RCX Das Herzstück unserer Roboter ist der RCX. Er ist ein kleiner Computer in einem Lego Gehäuse. Er besitzt drei Sensoreingänge (gekennzeichnet durch 1, 2, 3), drei Aktorausgänge (A,B,C), die vor allem gebraucht werden um Motoren zu steuern und der RCX besitzt oben eine Infrarot Schnittstelle über die er programmiert werden kann. Die Infrarotschnittstelle erlaubt ihm auch mit anderen RCX Modulen zu kommunizieren. RCX
Drucksensor Der Drucksensor, der einfachste aller Sensoren, liefert den Wert eins wenn er gedrückt wird, sonst 0. Drucksensor
Lichtsensor Der Lichtsensor liefert Werte zwischen 0 und 100, je nach Helligkeit. Lichtsensor
Rotationssensor Mit dem Rotationssensor kann man messen, wie stark sich die Achse gedreht hat. Rotationssensor
Motor Mit dem RCX kann man bis zu drei Lego-Motoren steuern. Motor

Pacman goes Lego!

Um das Pacman-Spiel aus Lego nachzubauen mussten wir einige Anpassungen machen, da wir uns an die physikalischen Gesetze halten mussten und nicht so viele Freiheiten hatten, wie in einem Computerspiel.

Das Labyrinth
Als erstes mussten wir uns Überlegen, wie wir das Labyrinth nachbauen wollten. Wir haben uns entschieden, dieses aus Linien, welche wir mit schwarzem Klebestreifen gezogen haben, zu bauen. Die Roboter fahren nun auf diesen Linien und dürfen sie nicht verlassen. Für Kreuzungen haben wir ein Material genommen, welches einen das Licht anders reflektiert, und somit den Lichtsensoren einen anderen Wert liefern, aber mehr dazu später. Labyrinth
Spurverfolgung
Wie bringt man den Robotern bei, eine schwarze Linie zu verfolgen? Wir haben das Problem folgendermassen gelöst: Die Roboter besitzen unten zwei Lichtsensoren. Sehen beide die Farbe "Schwarz", dann fährt er geradeaus. Befindet sich der rechte Lichtsensor ausserhalb der Linie, sieht er also "Weiss", dann dreht der Roboter nach links und verhindert somit, dass der Roboter die Spur verliert. Dasselbe passiert, wenn der linke Lichtsensor "Weiss" sieht, nur dass der Roboter nun nach Rechts korrigiert. Falls doch einmal beide Lichtsensoren ausserhalb der Spur kommen, dreht sich der Roboter im Kreis um die Spur wieder zu finden. Auf dem Bild rechts sieht man das Funktionsprinzip. Spurverfolgung
Kreuzungen
Kreuzungen bestehen wie schon gesagt aus einem Material, welches einen anderen Lichtwert liefert. Sobald ein Roboter merkt, dass er sich auf einer Kreuzung befindet, stellt er sich in den "Kreuzung" Zustand. Will er nach links abbiegen, so passt er auf, dass der linke Lichtsensor immer weiss sieht, bis der rechte Lichtsensor wieder den "normalen" Lichtwert liefert. Analog dazu, wenn der Roboter rechts abbiegen will. Möchte der Roboter geradeaus fahren, so stellt er sicher, dass beide Lichtsensoren auf der schwarzen Linie bleiben. Kreuzungen
Klötzchen / Punkte Sammeln
Ein weiteres Problem, welches wir knacken mussten, ist das Prinzip vom Punkte sammeln. Um dies physikalisch zu implementieren sammelt Pacman Klötzchen statt Punkte. Diese befinden sich in der Luft auf einer Klötzchenhalterung. Wenn Pacman nun unter der Klötzchenhalterung hindurchfährt, kippt er diese, und das Klötzchen fällt in sein Sammelbecken.

Ein Prototyp des Pacman. Trotzdem sieht man oben schön das Sammelbecken.













In diesem Bild sieht man Pacman in Aktion. Er kippt die Klötzchenhalterung, und das Klötzchen fällt in den Auffangbehälter.
Prototyp
Sammeln
Steuerung des Pacman
Den Joystick aus der Computerspiel Version des Pacman, haben wir mit dem im linken Bild dargestellten Apparat nachgebaut.
Der Apparat besteht aus einem RCX, 2 Drucksensoren und einem Drehsensoren. Der rechte Drucksensor erteilt den Start und Stoppbefehl, mit dem linken befiehlt man Pacman sich um 180° zu wenden. Mit dem Steuerrad teilt man Pacman mit in welche Richtung er als nächstes fahren soll. Für den Datentransfer zwischen Steuermodul und Pacman wird das BTNode gebraucht. Dieses leitet das Infrarot Signal mit Bluetooth weiter.
Das Funktionsprinzip des BTNode's ist im zweiten Bild links dargestellt.
Für das Kommunikationsprotokoll haben wir die folgende Tabelle benützt:

CodeBedeutung
1Links
2Rechts
3Stopp
4Go
5Wenden
6Geradeaus
Steuerung

BT Node
Pacman finden
Da das Spiel relativ langweilig wäre, wenn die Geister nur zufällig im Labyrinth herumfahren würden, haben wir den Geistern die Fähigkeit gegeben, den Pacman zu finden. Dies haben wir getan, indem wir am Pacman Lichtquellen montiert haben, und den Geistern oben einen Lichtsensor gegeben, welcher kontinuierlich einen 180° Winkel (mit einem Rotationssensor gemessen) nach der Lichtquelle absucht (je nach Lichtverhältnis muss man aber die Schwellwerte anpassen). Hat der Geist die Lichtquelle gefunden, entscheidet er sich anhand dieser Information, wie er sich an der nächsten Kreuzung zu verhalten hat. Da das anfügen zwei weiteren Sensoren dazu führt, dass man zu viele Sensoren für einen RCX hat, bestehen Geister aus zwei RCX.
Dieses Prinzip funktionierte so gut, dass es schon sehr schwierig ist das Spiel zu gewinnen, wenn auch nur zwei Geistern vorhanden sind. Mit drei Geistern ist es fast unmöglich. Das Bild zeigt einen Prototyp des Geistes. Oben sieht man den Lichtsensor.
Geist
Kollision und Gameover
Wenn man mehrere Geister auf dem Spielfeld hat, wird es unweigerlich zu Kollisionen kommen. Das Problem ist relativ einfach zu beheben, indem man die Geister vorne mit zwei Berührungssensoren ausstattet. Falls diese aktiviert werden, wendet der Geist.
Ein ähnliches Prinzip kann man benützen um zu entscheiden, wann das Spiel vorbei ist. Pacman ist ringsherum mit Berührungssensoren ausgestattet. Falls diese berührt werden, stellt sich Pacman ab und das Spiel ist vorbei.
Kollision
© 2005 by D-ITET ETHZ; Website created by Nicolas Perrenoud, designed for Mozilla compatible Browsers.
!!! Dieses Dokument stammt aus dem ETH Web-Archiv und wird nicht mehr gepflegt !!!
!!! This document is stored in the ETH Web archive and is no longer maintained !!!