Anwendungsbeispiel

Telerobotik - Dienstgüte in drahtlosen Netzen

Die erwähnten Dateien befinden sich in robocontr.tar.gz

Für eine Demonstration zum Thema Dienstgüte in drahtlosen Netzen wurde ein Roboter gebaut, der einen iPAQ trägt, über den er per WLAN ferngesteuert wird. Dabei soll die Bandbreite der Steuersignale nahe der maximal möglichen Übertragungsrate liegen, damit Störungen provoziert werden können.

Eine Regelung der Steuerung des Roboters muss auf Grund der Latenzen in der IR-Übertragung auf dem RCX laufen. Als Entwicklungsumgebung wurde dabei LeJOS gewählt. Die Steuersignale werden vom iPAQ mit der setMessage()-Methode gesendet und auf dem RCX von der Klasse Robocont verarbeitet. Diese verwendet ihrerseits die Controller-Klasse für die Regelung des Antriebs.

Für die Steuerung des Roboters wird ein Microsoft® SideWinder Force Feedback Lenkrad an einen Rechner angeschlossen, der UDP-Pakete per Broadcast an den iPAQ sendet. Diese Funktion ist in der remotecontrol.c implementiert. Auf dem iPAQ läuft die robocontrol.c, die Pakete entgegen nimmt und dem RCX periodisch die neuen Steueranweisungen sendet.

Durch eine Seriennummer, die mit den Datenpaketen gesendet wird, bemerkt der iPAQ Paketverluste. Liegt die Zahl der verlorenen Pakete unter einem Grenzwert, bleibt der Roboter für einen Moment stehen. Der Grenzwert, die Zeitdauer des Aussetzens und die Senderate können über das Fernsteuerungsprogramm eingestellt werden. Auch zur Laufzeit können diese Werte über die Knöpfe am Lenkrad verändert werden (s. remotecontrol -h).

Entsteht nun in dem selben Netz weiterer Datenverkehr, z. B. durch einen großen Datei-Download, wird die Fernsteuerung des Roboters gestört. Diese Störung kann durch adaptives Traffic-Shaping unterbunden werden, indem die Datenrate am Server runter geregelt wird, sobald dieser das Senden von Steuersignalen zum Roboter bemerkt. Diese Funktion wurde in trafficcontrol.c implementiert. Dabei muss das Programm tc aus dem Paket iproute2 installiert und ausführbar sein. Weitere Informationen erhält man durch ./trafficcontrol -h .