2.1 Die Aufgabenstellung
Nun wurde die 1. Aufgabe etwas erweitert. Und zwar soll ein weiterer Roboter ohne
Lichtsensor hinzukommen, der möglichst genau dieselbe
Bewegung wie der Roboter mit Lichtsensor(en) ausführen und mit Hilfe eines eingebauten Stifts die
Linie nachzeichnen kann. Dazu muss der "sehende" Roboter (Sender) via Infrarot-Schnittstelle, integriert
im RCX, einseitig oder auch zweiseitig mit dem "blinden" Roboter (Empfänger) kommunizieren. D.h., der
Senderoboter muss jede seiner Bewegungen, sei es die Lenkung oder der Antrieb, dem
Empfängerroboter mitteilen. Es gibt aber auch viele andere erlaubte Formen der Kommunikation.
So wäre es genauso erlaubt, die kompletten Bewegungen mit ihrer zeitlichen Dimension des Senderoboters zu speichern
und erst dann im Anschluss diese Informationsfolge (eine Liste von (Bewegungart, Dauer)-Tupeln) über die Schnittstelle
an den Empfängerroboter zu übertragen und schließlich auszuführen.Zum Nachbau eines baugleichen Roboters ohne Lichtsensor (Empfänger) wurde ein weiterer kompletter LEGO-Baukasten ausgeteilt. Es liegen nun insgesamt 4 Motoren, 2 Lichtsensoren und 4 Tastsensoren vor.
2.2 Der veränderte Aufbau (Prototyp II und III) der beiden Roboter
2.2.1 Aufbau des ersten Roboters (Sender)
Im Vergleich zur ersten Aufgabe wurde der Lenkkopf um den zweiten Lichtsensor erweitert. Durch diese
Erweiterung der "Sehfähigkeit" kann eine effizientere Linienverfolgungsstrategie angewendet werden,
die im Folgenden näher erläutert wird. Der restliche Aufbau entspricht dem Modell aus Aufgabe 1, ist aber nun
einwenig kompakter als zuvor. Die Kommunikation zum Empfänger erfolgt über die
Infrarot-Schnittstelle der RCX-Einheit mit einer großen Reichweite. Im Gegensatz zur großen
Reichweite, sind bei Einstellung der kleinen Reichweite häufig Sendeprobleme bzw. Empfangsprobleme aufgetreten.2.2.2 Aufbau des zweiten Roboters (Empfänger)
Der zweite Roboter ist im Aufbau völlig analog dem Senderoboter, jedoch mit dem Unterschied, dass
dieser nun im Lenkkopf keine Lichtsensoren enthält. Er ist quasi blind, hat dafür aber einen Stift zum Kopieren
der Linie montiert.2.2.3 Beispielbilder für die beiden neuen Prototypen II und III
2.2.3.1 Bilder des ersten neuen Entwurfs für die beiden Roboter
Erläuterung zu den Bildern (Prototyp II):
In den Abbildungen (Senderoboter mit blauen Augen) ist zu erkennen,
wie weit der Lenkkopf maximal ausgelenkt werden kann. Das Problem des Erstentwurfs
(Prototypen II) war es, dass die
RCX-Einheit keine Rückmeldung bekam,
wann der Lenkkopf angeschlägt.
Unterhalb der gelben RCX-Einheit befindet sich das Getriebe für die Steuerung des Lenkkopfes. Der Motor für die Lenkung ist zwischen den Hinterrädern eingebaut. Der Roboter selbst wird durch den im Lenkkopf befindlichen Motor angetrieben. Der Prototyp II wurde jedoch wiederum verworfen, da es abzusehen war, dass er für die nächsten Aufgaben einerseits zu groß und sperrig war (in Bezug zur Arena) und andererseits aufgrund des zu hohen Gewichts des Rumpfs und des Lenkkopfes. So wurde ein neues Modell unter Beibehaltung der Grundkonzeption aber einer wesentlichen Erweiterung (Tastsensoren für das Registrieren einer maximalen Auslenkung) entwickelt: Der Prototyp III, dessen RCX in den Rumpf instegriert ist. |
2.2.3.2 Bilder des neuen Entwurfs für die beiden Roboter
Erläuterung zu den Bildern (Prototyp III):
Diese Roboter sind nun wesentlich flacher und kompakter. Der Lenkmotor
befindet sich direkt hinter der RCX-Einheit. Das Getriebe zur Steuerung
des Lenkkopfes ist unterhalb der RCX-Einheit angeordnet. Im unteren linken Bild ist der
Tastsensor zu erkennen. Daneben sind die Hinterräder zu sehen, wodurch
ein stabiler Stand realisiert wird.2.3 Funktionsweise und Kommunikation der beiden Roboter
Die Linienverfolgungsstrategie ist nun mit zwei Lichtsensoren
wesentlich einfacher, da sie unmittelbar aneinander liegen und beim Start beide direkt auf der schwarzen Linie sind. Wird die Linie
verloren, ist sofort klar, in welche Richtung gegengelenkt werden muss. Registriert demnach der linke Sensor kein schwarzes Licht mehr,
ist nach rechts zu steuern. Dasselbe gilt analog für den rechten Sensor. Sollten beide Sensoren nicht mehr auf der Linie sein, wird kurz
zurückgesteuert. Manchmal kommt es nämlich vor, dass der Roboter zu schnell gewesen ist und daher beide Sensoren nicht mehr schwarz
registrieren. Dadurch ist es aber unmöglich zu erkennen, wann das Ende der Linie erreicht wurde und somit kann ein Umkehren nicht mehr
erfolgen.Damit beide Roboter wirklich die gleiche Bewegung vollziehen können, müssen sie synchronisiert werden. Denn nicht alle Motoren sind völlig baugleich und selbst unterschiedliche Batteriestände der RCX-Einheit sorgen dafür, dass die Bewegungen nicht simultan sind.
Dazu führen nach der Kalibrierung der Lichtsensoren (beim Senderoboter) beide ein komplettes Schwenken des Lenkkopfes aus der Mittelstellung (über max. rechts bis max. links) unter Zeitnahme durch. Anhand dieser Werte kann die Lenkbewegung des Senderoboters prozentual umgerechnet werden und an den Empfänger gesendet werden. Der wiederum rechnet diesen Prozentwert mit seinem eigenen Referenzwert wieder um und führt seinerseits die gleiche Bewegung durch (jedoch kürzer bzw. länger, je nachdem, wie schnell oder langsam die Motoren sind (bzw. der Batteriestand ist). Etwas Ähnliches wird für die Vorwärtsbewegung durchgeführt. Dazu legen wieder beide Roboter unter Zeitnahme eine konkrete Entfernung zurück und speichern ebenfalls diese Referenzwerte.
Für jede Bewegung des "sehenden" Roboters wurde ein vordefiniertes Byte-Signal (RECHTS = 1, LINKS = 2, VORWÄRTS = 3, RÜCKWÄRTS = 4) vereinbart, das von beiden verstanden wird und vom Senderoboter dem Empfängerroboter mitgeteilt wird. Dabei enthält jede Mitteilung zwei Informationen: Die Art der Bewegung (Lenkkopf nach rechts oder links schwenken, vorwärts oder rückwärts fahren) und die prozentualle Dauer der Bewegung, die beim Empfänger wieder mit seinem Referenzwert umgerechnet wird. Dadurch hat der Empfänger nach Durchführung einer jeden Aktion nahezu dieselben Bewegungen durchgeführt wie der Sender. Das Ergebnis ist dann eine nahezu perfekte Kopie der Linie.
Damit es keine Unstimmigkeiten untereinander gibt und alles möglichst synchron abläuft, sendet seinerseits der Empfänger stets, dass die Bewegung vollständig durchgeführt wurde, woraufhin erst dann mit der Linienverfolgung des Senderoboters fortgefahren werden kann.
Java-Quellcode (Aufgabe 2)
Videos zum Download (Prototyp III):