Software

RCX, Firmware und Treiber

Für den RCX gibt es mittlerweile mehrere Programmiersprachen, wir beschränken uns hier auf NQC (Not Quite C), eine einfache C artige Sprache, die mit der standard Lego Firmware funktioniert. Die Lego Software ist für dieses Einsatzgebiet zu unhandlich, größere Projekte werden schnell unübersichtlich. Für Programmiereinsteiger ist sie vielleicht ein einfacherer Start, für alle anderen sind Befehle wie "OnFwd(OUT_A);" wohl selbsterklärend und einfacher als Bildchenschieben...
Ursprünglich wollten wir das ganze Projekt unter Linux realisieren, haben diese Idee aber nach zwei Tagen vergeblichen Kampfes mit dem Treiber für den USB Tower aufgegeben. Windows scheint zumindest für NQC sowieso die bessere Wahl zu sein, da die Entwicklungsumgebung BricxCC, nicht für Linux verfügbar ist. Funktionen wie das direkte Auslesen der Sensor- und Variablenwerte, steuern der Motoren in Echtzeit, Syntax-Highlighting für NQC, etc. machen das Arbeiten ein gute Stück einfacher als mit Textdateien und Commandline Compiler unter Linux.
Hier noch einige Tips zur Arbeit mit NQC:

Labyrinth und Lösung

Weil es uns nicht besonders sinnvoll erschien das Rad zweimal zu erfinden haben wir ein fertiges C++ Programm aus dem Internet benutzt und so abgeändert, dass es NQC Code für unseren Roboter erzeugt. Das Programm generiert zuerst ein perfektes Labyrinth, d.h. ohne Rundwege, also mit einer eindeutigen Lösung, und zeigt es auf dem Bildschirm an. Dann wird diese Lösung durch Probieren aller möglichen Wege gefunden und wiederum ausgegeben. Als nächstes wird der Lösungsweg durch das Labyrinth verfolgt und an jeder Kreuzung entschieden ob geradeaus gefahren oder abgebogen wird. Der Weg wird in Form einer include Datei für das NQC Programm gespeichert. Dann wird der NQC Compiler aufgerufen und das Programm an den Roboter geschickt.

Line Following

Das Hauptproblem besteht natürlich darin, bis zu nächsten Kreuzung geradeaus zu fahren und dann möglicherweise links oder rechts abzubiegen. Die Sensoren sind so angebracht, dass sie jeweils rechts bzw. links von der Linie bleiben, so lange der Roboter geradeaus fährt. (Beide = 0, also nicht schwarz). Sobald der Roboter nach rechts abkommt sieht der linke Sensor die Linie und der Roboter korrigiert nach links (und umgekehrt). An Kreuzungen sehen beide Sensoren das Klebeband und der Roboter hält an. Soll nach links gedreht werden, dreht sich der Roboter so lange nach links, bis der linke Sensor erst Klebeband sieht und dann wieder Boden, so dass dann die Sensoren wieder rechts und links der Linie sind. Mit den beiden Unterprogrammen (Subs) "followLine" und "turn" kann durch Aneinanderreihung so das ganze Labyrinth durchfahren werden.

copyright 2005 by Tobias Brachmann & Jonas Rauch