Lego Spybotics
# Lego Spybotics

Lego Spybotics (offizielle Schreibweise: LEGO Spybotics) ist eine Produktserie der Lego Company, die die Modelle 2002 mit den Namen Gigamesh G60 (Lego-Nr. 3806), Snaptrax S45 (3807), Shadowstrike S70 (3808) und Technojaw T55 (3809) vorgestellt hat. Die Spybotics wurden nur kurze Zeit verkauft, 2008 wurde von Lego jeglicher Support eingestellt.

## Eigenschaften

Die Bausätze enthalten jeweils einen programmierbaren Legostein mit zwei Elektromotoren, einem Berührungs- und Licht-Sensor sowie Lego-Technic-Elemente (Zahnräder, Achsen, Lochstangen usw.), um einen der vier Spybotics-Roboter zu konstruieren. Durch die eingebauten Motoren und Sensoren sowie die mitgelieferte Software grenzt sich die Spybotics Serie vom RCX-Stein aus der Produktserie Lego Mindstorms ab, an den bis zu drei Motoren und drei Sensoren extern angeschlossen werden können.

Die Spybotics Modelle und deren voreingestellte Eigenschaften, die sich aus den verschiedenen Antriebssystemen ableiten lassen:

* Modell→ Eigenschaft↓
* Geschwindigkeit
* Stärke
* Beweglichkeit

## Programmierung

Der programmierbare Legostein der Spybotics kann genauso wie der RCX-Stein in diversen Programmiersprachen programmiert werden. Dazu wird das Programm am PC geschrieben, kompiliert und anschließend mit Hilfe einer VLL-Schnittstelle (Verbindung mit sichtbarem Licht) auf den Spybotics geladen. Anschließend kann der Spybotics völlig autonom handeln und auf äußere und innere Ereignisse reagieren, entsprechend den Programmieranweisungen. Mit Hilfe einer Infrarot-Fernsteuerung kann man jederzeit die Steuerung der Motoren übernehmen oder ein weiteres Ereignis auslösen.

Außerdem können Spybotics untereinander über die Infrarot-Schnittstelle kommunizieren, um zusammen eine Mission durchführen zu können. Dazu sendet jeder Spybotic mehrmals pro Sekunde eine Infrarotnachricht, den sogenannten Ping aus. Jeder andere Spybotic in Reichweite verarbeitet automatisch die Pings und legt die Informationen zu bis zu 16 anderen Spybotics oder Fernbedienungen in der sogenannten World Table (Welt-Tabelle) ab. Die Informationen zu jedem anderen Spybotics können über spezielle Variablen aus der Welt-Tabelle abgerufen werden:

| Name der Variablen | Bedeutung | Wertebereich |
| - | - | - |
| SPY_NOTE | Eigene Notiz über diesen Sender | 0-255 |
| SPY_LINKID | Fernbedienung, mit dem dieser Spybot verbunden ist | 0-7 (0 bedeutet: nicht mit einer Fernbedienung verbunden) |
| SPY_RANGE | Entfernung des Senders | Nowhere(0), anywhere(1), there(2), here(3) |
| SPY_DIRECTION | Richtung des Senders | Left(0), Center left(1), Center(2), Center right(3), Right(4) |
| SPY_ASPECT | Ausrichtung des Senders zum Empfänger | Front Left(0), Front(1), Front right(2), Back Right(3), Back(4), Back Left(5) |
| SPY_INFO | Nachricht des Senders | 0-255 |
| SPY_SHORTID | Identifikation des Senders | 0-255 |

## Programmiersprachen für Lego Spybotics

Grundsätzlich lassen sich die Spybotics genauso wie der RCX programmieren. Nähere Informationen zu Programmiersprachen lassen sich dort nachlesen. Mit der BricxCC-Software kann auch der Inhalt des internen EEPROM des Spybotic gelesen und geändert werden.

Ein simples Programm für den Spybotic in der Programmiersprache NQC könnte so aussehen:

Jedes Programm dieser Programmiersprache sollte mit task main beginnen. OnFwd(OUT_A+OUT_B) bedeutet, dass sich die zwei eingebauten Motoren (Motor A und B) in Vorwärtsrichtung drehen. Eine Anweisung wird mit einem Semikolon beendet. Eine Wait–Anweisung bedeutet lediglich, dass das Programm die angegebene Zeit – ein Vielfaches von 10 ms – wartet und danach erst mit dem nächsten Befehl fortfährt. In diesem Beispiel drehen sich beide Motoren für 4 Sekunden und werden dann mit dem Befehl Off angehalten.

Für die Spybotics gibt es spezielle NQC-Erweiterungen, mit denen man ihre Eigenschaften im Programm nutzen kann. Zum Beispiel kann mit dem Befehl FindWorld(index,SPY_RANGE,REL_GT,RANGE_NOWHERE) der nächste Eintrag in der Welt-Tabelle gefunden werden, von dem ein Ping empfangen wurde. Zurückgeliefert wird die zugehörige Zeile in der Variablen index, über die dann auf alle vorliegenden Informationen zugegriffen werden kann. Dadurch ist es möglich, auch komplexe Interaktionen unter den Spybots zu programmieren, z. B. Herden- oder Schwarmverhalten oder Räuber-Beute-Verhalten.

