Willkommen      Zaurus      Projekte      Dokumente      Kontakt   

  CyTV - Netzwerk-Streaming für elgato EyeTV  

  OpenGL-Grabber (Ogre)  

  Lego Mindstorms  

  Virtuelles Sonnensystem  

  Tetris  

  BWT  
    

  Überblick    NQC-Code    Kamera-Filter    "Broadcast" für VC    Download    Links   

Hier finden Sie einige Tools für Lego Mindstorms, die während meiner Master Thesis entstanden sind. Sie dienen dazu, Mindstorms-Roboter Fußball spielen zu lassen, können aber auch in ganz anderen Projekte hilfreich sein.

Zum Entpacken der Dateien können Sie z.B. WinZip verwenden.

Fußball-Roboter

  Überblick    NQC-Code    Kamera-Filter    "Broadcast" für VC    Download    Links   

Der Quellcode für die Fußball-Roboter enthält unter anderem Routinen, die folgendes leisten:

  • Entlangfahren an einer Wand (followBorderRight() und followBorderLeft() in "kicker.h"). Der Roboter bewegt sich dabei flüssig und recht schnell (hängt natürlich auch von der Konstruktion ab). Benötigt wird dazu eine Stoßstange mit Berührungssensoren rechts und links (siehe auch meine Master Thesis).
  • Erkennen verschiedener Helligkeitswerte, z.B. schwarz - grau - weiß (adjustShades() in "kicker.h"). Das besondere ist, daß die Helligkeit nicht an den absoluten Lichtsensor-Werten festgemacht wird. Stattdessen bekommt der Algorithmus nur vorgegeben, wieviele Helligkeitsstufen er unterscheiden soll, und lernt dann selbständig, welche absoluten Werte dazu gehören. Bei veränderter Gesamthelligkeit (z.B. durch Einschalten einer Lampe) paßt sich die Erkennung ebenfalls automatisch an.
Programmiert ist das ganze in NQC.

  Überblick    NQC-Code    Kamera-Filter    "Broadcast" für VC    Download    Links   

Die Vision Command Kamera kann zwar Farben erkennen, aber bei kleinen Objekten, die innerhalb eines großen Bereichs erkannt werden soll, versagt die Erkennung. Zu diesem Zweck habe ich einen Filter-Treiber geschrieben, der solche Objekte erkennen und für Vision Command vergrößern kann. Der Quellcode ist ebenfalls verfügbar.

Hinweis: Die erste Version des Filters enthielt einen Fehler beim Setzen der Toleranz-Werte. Dieser ist in der aktuellen Version behoben.

Original-Bild Erkannte Pixel Vergrößerter Ball
Original-Bild Erkannte Pixel Vergrößerter Ball

Die Installation des Filters ist einfach: Zuerst die Datei "camfilt.sys" ins Verzeichnis "C:\Windows\System32\Drivers" (oder entsprechend) kopieren. Die Datei "camtool.exe" kann dagegen in einem beliebigen Verzeichnis stehen. Um den Filter zu verwenden, rufen Sie

camtool -install 1

auf und starten Sie Windows neu. Um den Filter abzuschalten, rufen Sie

camtool -install 0

auf (ebenfalls erst nach Neustart wirksam). Beachten Sie bitte, daß sich die Datei "camfilt.sys" möglicherweise erst nach Abschaltung per camtool löschen läßt.

Der Filter kann im laufenden Betrieb konfiguriert werden. Die Parameter werden im Detail in meiner Master Thesis erklärt, deshalb hier nur ein kurzes Beispiel, wie man ein rotes Objekt erkennen und für Vision Command vergrößern kann:

camtool -color 0x00FFFF -tolerance 0x204080 -radius 8 -weight 9 -replacement 0xFF0000

Die Filtereinstellungen kann man testen, indem man "camtool -showFireflies 1" aufruft. Damit zeigt der Filter die Punkte an, deren Farbe er erkannt hat (siehe mittleres Bild oben). Mit "camtool -showFireflies 0" kommt man wieder zum üblichen Vergrößerungsmodus zurück. Die aktuellen Einstellungen des Filters können Sie sich durch Aufruf von "camtool" (ohne Parameter) auflisten lassen.

Getestet wurde der Filter unter Windows 98, er sollte aber auch unter ME funktionieren. Windows 2000 sollte laut Microsoft-Doku ebenfalls klappen (halte ich aber für eher unwahrscheinlich).

  Überblick    NQC-Code    Kamera-Filter    "Broadcast" für VC    Download    Links   

Vision Command (VC) kann immer nur mit einem RCX-Baustein zusammenarbeiten. Befinden sich mehrere Bausteine in Reichweite, bricht VC mit einer Fehlermeldung ab, weil sich Bestätigungsmeldungen der Roboter überlagern und nicht mehr einwandfrei beim Infrarot-Tower ankommen. Oft wäre es aber nützlich, an mehrere Roboter zu senden, z.B. die Position des Balls bei einem Fußball-Spiel.

Dieses Problem kann man mit einer neuen "VPBrick.dll" lösen. Diese gaukelt Vision Command vor, daß das Senden von Nachrichten immer erfolgreich ist. Auf diese Weise wird das VC-Programm nicht unterbrochen, wenn mehrere Roboter in Reichweite sind oder auch gar keiner.

Zur Installation müssen Sie die Datei "VPBrick.dll" im Vision Command Verzeichnis in "VPBrick_orig.dll" umbenennen. Es muß ganz genau dieser Name sein, denn die neue Version benötigt das Original zum Funktionieren und sucht es unter diesem Namen! Anschließend können Sie die heruntergeladene "VPBrick.dll" ins Vision Command Verzeichnis kopieren.

Achtung: Überschreiben Sie auf keinen Fall die Original-DLL, sonst müssen Sie Vision Command neu installieren!

Beachten Sie bitte, daß Vision Command beim Start eines (VC-)Programms ein kleines RCX-Programm nach Slot 5 des Roboters übertragen will. Wenn keiner oder mehr als ein Roboter in Reichweite ist, geht das schief (auch mit der neuen "VPBrick.dll"). Deshalb müssen Sie beim Programmstart folgende Reihenfolge einhalten, wenn Sie die Übertragung an mehrere Roboter benutzen wollen:

  • Zuerst genau einen RCX-Baustein einschalten.
  • Warten, bis Vision Command sein Programm übertragen hat.
  • Jetzt die übrigen Roboter einschalten und das gewünschte RCX-Programm starten.
Wenn Sie Vision Command NICHT als "Smart Sensor" benutzen wollen (beschrieben auf Michael Gasperis Vision Command Homepage), dann müssen Sie mehrmals das VC-Programm starten, wobei jeweils genau ein Roboter eingeschaltet ist. Dadurch empfangen nach und nach alle RCX-Bausteine ihr Programm. Das ist deshalb nötig, weil die gleichzeitige Übertragung des Programms an mehrere Bausteine nicht funktioniert (auch nicht mit der neuen "VPBrick.dll"). Nachdem jeder einmal an der Reihe war, kann man wie oben beschrieben vorgehen, um mehrere Roboter gleichzeitig anzusteuern.

  Überblick    NQC-Code    Kamera-Filter    "Broadcast" für VC    Download    Links   

NQC-Quellcode für Fußballroboter (10 KB)kicker.tgz
Kamera-Filter für Vision Command (V0.2, 22.10.2001, 23 KB)camfilter.tgz
Quellcode für den Kamera-Filter (V0.2, 22.10.2001, 23 KB)camfilter_src.tgz
"VPBrick.dll" für Vision Command (siehe oben) (24 KB)VPBrick.dll
Quellcode für "VPBrick.dll" (13 KB)VPBrick_src.tgz

  Überblick    NQC-Code    Kamera-Filter    "Broadcast" für VC    Download    Links   

Lego Mindstorms Homepagehttp://mindstorms.lego.com/
Lego Vision Command Homepagehttp://mindstorms.lego.com/products/vc/index.asp
NQC Homepagehttp://www.enteract.com/~dbaum/nqc/
Michael Gasperis Vision Command Homepagehttp://www.plazaearth.com/usr/gasperi/viscommand.htm


Letzte Änderung: 24.10.2001