Real-Time and Embedded Systems

Infrarot

Die Mindstorms-Roboter werden per Cross-Platform-Development programmiert. Das bedeutet, daß die Programme nicht auf dem RCX, sondern auf einem PC geschrieben und compiliert werden. Die fertige Binäradatei wird zum RCX übertragen und dort ausgeführt, es sind also verschiedene Platformen an der Entwicklung beteiligt. Die Übertragung erfolgt über Infrarot-Signale, dazu hat jeder Tower und jeder RCX einen IR-Transceiver, also eine Einheit aus Sender (Transmitter) und Empfänger (Receiver).

RCX 6                              RCX 3

  • Mögliche Fehlerquellen
    Wenn es Probleme bei der Infrarot-Kommunikation gibt, ist meistens einer der folgenden Punkte die Ursache.
  • Ausrichtung
    Die Transceiver von Sender und Empfänger sollten sich gegenseitig sehen können und nicht zu weit auseinanderliegen. Bei hoher Sendeleistung ist die Ausrichtung allerdings weniger kritisch.
  • Störlicht
    Die Übertragung kann durch externe Lichtquellen gestört werden, beispielsweise durch Neonröhren oder das Sonnenlicht. Eventuell hilft etwas Schatten weiter.
  • Geschwindigkeit
    Viele Übertragungsfehler lassen sich durch eine niedrigere Übertragungsgeschwindigkeit beseitigen. Die Programme haben dann einen Parameter --slow oder ähnlich.
  • Empfangsbereitschaft
    Die auf dem RCX laufende Software muß bereit sein, das Programm oder die Daten entgegenzunehmen. Beispielsweise kann ein Betriebssystem nur geladen werden, wenn auf dem RCX kein anderes aktiv ist. Bei Bedarf kann ein Kaltstart durch Entfernen der Batterien alle Software löschen. Das gleiche gilt bei Anwendungsprogrammen, die nur geladen werden können, wenn das entsprechende Betriebssystem geladen ist und gerade kein Programm läuft.
  • Batterie im Tower
    Die Blockbatterie im Tower muß natürlich voll genug sein. Wenn bei einer Übertragung die grüne Kontrolldiode im Tower nicht aufleuchtet, kann das ein Hinweis auf eine leere Batterie sein.
  • Serielles Kabel
    Das Kabel zwischen Tower und PC muß auf beiden Seiten einen guten Kontakt haben. Wenn der Stecker auf der PC-Seite nicht halten will, kann ein Verkängerungskabel helfen.
  • Richtige Schnittstelle
    Den Programmen zur Datenübertragung muß mitgeteilt werden, an welcher Schnittstelle der Tower angeschlossen ist. Wie das genau eingestellt wird, hängt von der jeweiligen Software ab.
  • Zugriffsrechte
    Besonders unter Unix muß der Benutzer Schreibrechte für die Schnittstelle besitzen. Ist es als root möglich, eine Übertragung zu starten?
  • lnpd
    Der LNP-Daemon lnpd hat mit vielen Schnittstellen Probleme, was sich darin äußert, das umso mehr Pakete verloren gehen, je größer sie sind. Eine Lösung hierfür ist in der README-Datei des Paketes beschrieben.
  • lnphost
    lnphost ist ein Ersatz für lnpd und wesentlich einfacher und zuverlässiger. Siehe auch Tipps und Tricks. Es ist zwar grundsätzlich auch USB-Tower support implementiert, aber beim Einsatz von USB-Towern kann es doch zu Problemen kommen: Empfangen auf PC-Seite scheint kein Problem zu sein (insbesondere lnpshow und lnpdump funktionieren), aber beim Senden von PC Seite aus kann es passieren, dass die Sende-Funktion nichtdeterministisch und bisher nicht nachvollziehbar blockiert. Wenn viel Interaktion zwischen PC und RCX nötig ist, sollte zur Kommunikation besser ein serieller Tower benutzt werden. Im Zweifel funktioniert ein USB->Seriell Adapter + seriellem Tower auch besser als ein "echter" USB Tower, aber selbst dabei haben wir schon Probleme erlebt.

 

Noch ein Wort zu BrickOS: Manchmal erscheint nach dem Übertragen des Betriebssystems die Meldung "unlock firmware failed", BrickOS scheint aber zu funktionieren. Die Meldung ist ein Hinweis darauf, daß der Kernel leicht verändert auf dem RCX angekommen ist. In diesem Zustand kann es zu sporadischen Fehlern kommen. Das Problem läßt sich lösen, indem man einen Kaltstart durchführt (PRGM und ON/OFF gleichzeitig drücken) und die BrickOS Firmware neu überträgt.

Siehe auch: Tipps und Tricks zur Infrarotkommunikation