Softwarepraktikum LEGO Mindstorm SS 2005

Die zweite Aufgabe

Die Aufgabenstellung bestand darin, zwei Roboter Fotodosen in ein Zielgebiet schieben zu lassen. Dabei sollten die Roboter gleichzeitig von einer Person ferngesteuert werden.

Lösung

Erste Überlegungen

Zunächst: Erweiterung des Modells

Signalübertragungsklasse kümmert sich um die Aufteilung der Signale an die unterschiedlichen Roboter.

Weiterentwicklung des Roboters

Zugunsten einer besseren Steuerbarkeit des Roboters wurde das Schwenkrad recht schnell durch eine gekoppelte Hinter- und Vorderradachse ersetzt. Die Idee dabei war, dass durch die Kopplung beide Achsen gleichzeitig angetrieben wurden, wodurch die Steuerung wesentlich genauer wurde.
Nun fiel der Schwerpunkt unserer Überlegungen darauf, wie man möglichst effektiv Fotodosen einsammeln kann. Die Roboter mussten über eine Sammelvorrichtung verfügen, die verhinderte, dass die Dosen bei Drehungen verlorengingen. Zu diesem Zwecke bauten wir sowohl vorn als auch hinten eine Art (Sammel-) Gabel an, in die die Fotodosen aufgenommen werden konnten. Durch den symmetrischen Bau ist es zudem möglich, beidseitig zu sammeln, ohne vorher drehen zu müssen.

Zusätzlich haben wir einige Spezialbewegungen einprogrammiert, die vom Roboter automatisch ausgeführt werden können. So kann er gerade Strecken bestimmter Länge selbständig zurücklegen, Drehungen vollführen oder sich an einer Fotodose ausrichten („Einparkmanöver“). Währenddessen kann der zweite Roboter direkt per Fernbedienung gesteuert werden, was eine Möglichkeit der Zeitersparnis bietet.

Mit der Entwicklung der Spezialbewegungen ist das Problem aufgetreten, dass ein Roboter während des Ausführens einer solchen Bewegung keine Signale vom Tower empfangen konnte, weil er sozusagen den aufgetragenen Befehl noch nicht zu Ende geführt hatte. Mit dem Einsatz von Threads war es möglich, mehrere Aktionen gleichzeitig auszuführen. So konnte der Roboter während einer Bewegung gleichzeitig auf Befehle vom Tower hören, sodass einige Spezialbeweggungen auch abgebrochen werden konnten.

Anpassung der Signalübertragung

Die Kommunikation funktioniert nicht mehr über DataStreams. Durch Verwendung der Tower-Klasse konnte die Reichweite beträchtlich erhöht werden und es ist nicht mehr notwendig, auf empfangene Signale vom Tower zu antworten. Es werden nun Arrays mit zwei Byte-Werten versendet. Dabei gibt das erste Byte an, welcher der beiden Roboter gemeint ist, während der jeweilige Befehl durch das zweite Byte dargestellt wird.

Die neue Fernbedienung

Durch die veränderte Aufgabenstellung musste natürlich eine neue Fernbedienung her. Aus unseren Vorüberlegungen ging hervor, dass es so gut wie unmöglich ist, zwei Roboter parallel zu steuern. Deshalb gibt es in unserer Fernbedienung nur eine Steuerung und einen Umschalter für die Roboterauswahl. Insbesondere wurde darauf geachtet, dass die Steuerungstasten klar ersichtlich und ohne große Handbewegungen erreichbar sind. Auf diese Weise sollte die Aufmerksamkeit während des Wettbewerbs hauptsächlich auf die Roboter gerichtet und nicht durch die Tastensuche gestört werden. Eine eigens entwickelte Button-Klasse sorgt dafür, dass bei Tastendruck nicht mehr das ganze Fenster neu gezeichnet werden muss und behebt damit den Fehler der nicht dargestellten Grafiken aus der alten Fernbedienung.

Als besonderes Feature sei noch die aus Computerspielen übernommene "Schleich"-Taste erwähnt, die gleichzeitig während den Bewegungstasten gedrückt wird und eine genauere Steuerung des Roboters ermöglicht.