VILAP

(English readers: Try the english version of this page. As the german page has some more information, it may also help to use the babelfish translation at the bottom of this page)


Typische Rundenzähler für RC-Autos basieren meist auf Infrarot/Lasermessstrecken oder Transpondern. Bei diesen Lösungen ist immer spezielle Hardware nötig und manche Anlagen sind nicht gerade billig. Alternativen hat man eigentlich nur, wenn man gute Elektrotechnikkenntnisse hat.

VILAP dagegen ist ein Rundenzähler, der auf einer einfachen Webcam basiert, die Markierungen an Autos erkennen kann. VILAP ermöglicht es, mit einem PC und einer billigen Webcam eine Rundenzählanlage für 2 Autos zu bauen. Sollte also beides zufällig schon vorhanden sein, eine recht günstige Alternative.

Im Moment ist das ganze noch im Entwicklungsstadium, also erwartet noch nicht zuviel. Als einfache Anlage für das Einzeltraining zu Hause oder ein Rennen mit einem Kumpel ist es aber durchaus schon geeignet.

Die Benutzeroberfläche der Software ist auch noch sehr spartanisch, aber erstmal brauchbar.

Download

http://www.starky.de/vilap/vilap.tar.gz

Prinzip

Die Idee: Eine Kamera „filmt“ die Ziellinie von der Seite aus ca. 1 m Abstand und ist in der Lage, Fähnchen an den Autos zu erkennen, wobei der Hintergrund weiß sein muß (was sich durch ein paar Blätter Papier und etwas Tape schnell realisieren läßt). Die Fähnchen müssen ungefähr beim Abstand von 1m ca. 5x5cm groß sein (bei kleineren Autos, z.B. Microsizer, dann alles entsprechend kleiner, d.h. 50cm Abstand und 2,5x2,5cm Fähnchen). Die Fähnchen hängen auf unterschiedlichen Höhen und bewegen sich somit auf unterschiedlichen horizontalen Bahnen, die die Webcam prüft.




Einschränkungen

Die Software ist noch ziemlich neu (Version 0.3), daher gibt es noch eine Menge Einschränkungen.

Damit also Eure Erwartungen nicht zu hoch sind, hier einiges vorweg:

Ich bastele noch an der Performanz, damit auch schnelle Autos erkannt werden. Eine Webcam mit 30 Bildern wäre dazu wohl in der Lage.

Vorraussetzungen

Das System ist unter Linux implementiert worden, weil ich mir für das Projekt keine M$-Entwicklungsumgebung zulegen wollte und unter Linux alle notwendigen Komponenten für lau vorhanden und gut beschrieben sind. Dazu kommt, dass ich nur wenig über MFC usw. weiß.

Ich selbst betreibe VILAP momentan auf einem Laptop mit 266 Mhz Prozessor und 128MB RAM unter Knoppix mit X-Windows und KDE. Knoppix basiert auf Debian Linux, ich benutze z. Z. Kernel 2.4.20. Prinzipiell sollte das System auch unter jedem anderen aktuellen Linux laufen. Über die Mindesthardwareanforderungen kann ich nichts sagen, aber auf kleineren PCs könnte es knapp werden.

Im Moment betreibe ich das System mit einer „DEXXA Webcam“, die 100% kompatibel zur „Logitech Quickcam Express“ sein soll. Ob auch andere Kameras laufen, weiß ich nicht. Die Software setzt auf „Video 4 Linux“, ist aber z. Z. eben noch mit keiner anderen Kamera getestet worden. Die Auflösung der Kamera muss 176x144 betragen, die Werte in der Konfigurationsdatei hierzu werden noch nicht ausgelesen! Gebt mir doch bitte Bescheid, falls Ihr auch mit anderen Kameras Erfolg haben solltet.

Informationen und alle möglichen Treiber für Webcams unter Linux gibt es unter http://www.exploits.org/v4l/ . Für die DEXXA Webcam benutze ich den Treiber unter http://qce-ga.sourceforge.net/. Laut Webseite sollten damit auch die Logitech Quickcam Express, die Logitech Quickcam Web, die LegoCam und die Labtec Webcam laufen.

Aufbau

Die Kamera wird im Abstand von einem Meter (konfigurierbar) aufgestellt, so das die optische Achse zwischen der hohen und der niedrigen Fahne der beiden Autos liegt. Startpositionen für ein Rennen müssen vor dem durch die Kamera erfassten Bild liegen.

Software

Die Software kann als Tar-Datei „vilap.tar.gz“ unter http://www.starky.de/vilap/vilap.tar.gz heruntergeladen werden und enthält den Sourcecode, ein Makefile, eine Konfigurationsdatei und verschiedene Textdateien. Die Software kann frei weitergegeben werden (aber bitte immer mit allen Dateien).

Installation und Start unter Linux allgemein (für Linux-Gurus und solche, die es werden wollen)

Vorraussetzung ist, dass die Webcam installiert ist. Da sie normalerweise am USB-Port hängt, muß der Kernel USB unterstützten und natürlich Video für Linux, ggf. muß also ein neuer Kernel kompiliert werden.

Die DEXXA Webcam habe ich mit den Treibern unter http://qce-ga.sourceforge.net/ eingerichtet. Dazu muß nach Compilierung des Treibers einfach „./quickcam.sh“ in der Shell eingegeben werden. Danach steht ein Videogerät an „/dev/video0“ zur Verfügung. Besser ist es natürlich den passenden „insmod“ schon beim Booten zu integrieren. Die Funktion der Kamera kann man mit Programmen wie z. B. „xawtv“ prüfen.

Die Software selbst ist erstmal mit „gunzip vilap.tar.gz “ und „tar xvf vilapt.tar“ auszupacken und besteht aus mehreren Sourcedateien in „C“ und wird durch Eingabe von „make“ kompiliert. Dabei wird das Programm „vilap“ erzeugt. Durch Eingabe „./vilap“ in der Kommandozeile wird das Programm gestartet, dabei sollte die Konfigurationsdatei „vilap.cnf“ im aktuellen Pfad liegen.

Installation und Start unter Knoppix (für den Rest der Welt)

  1. Erstmal vilap.tar.gz herunterladen und auf einer Diskette speichern.

  2. Logitech Quickcam an den USB Anschluß anschließen.

  3. Dann Knoppix herunterladen (http://www.knopper.net/knoppix/#order) und eine CD brennen. Oder die CD aus der c´t 4/2003 nehmen, die tut´s auch.

  4. Diese CD ins Laufwerk und von dieser CD booten (dazu ggf. ins BIOS des Rechners). Bei Problemen die unter http://www.knopper.net/knoppix angegebenen Dokumentationen oder Foren zu Hilfe nehmen.

  5. Wenn das System gestartet ist, durch Doppelklick im Desktop auf „HOME“ links oben ins persönliche Verzeichnis gehen.

  6. Nun geht Ihr im Desktop mit einem Doppelclick auf das Diskettensymbol auf das Floppylaufwerk („/dev/fd0“). Nun kopiert Ihr die Datei „vilap.tar.gz“ in das andere Fenster, d. h. Euer „HOME“-Verzeichnis.

  7. Nun macht Ihr eine Shell auf (sowas wie eine MS-DOS Eingabeaufforderung, aber 1000mal besser). Dazu klickt Ihr unten auf das Symbol eines Bildschirms mit einer Muschel davor.

  8. Jetzt gebt Ihr in die Shell folgendes ein: erstmal „gunzip vilap.tar.gz“ und dann „tar xvf vilap.tar“. Damit werden alle Dateien des Programms ausgepackt (Wer lieber klickt: alternativ geht das natürlich auch über den Explorer, der hier Konqueror heisst)

  9. In der Shell danach dann „cd qce“

  10. Jetzt „./quickcam.sh“ um den Treiber für die Kamera zu starten

  11. Jetzt „xawtv“ eingeben, um die Funktion der Kamera zu prüfen.

  12. Danach in der Shell „cd ..“

  13. Uff! Gleich geht´s los. Erstmal ein neues Bier holen.

  14. Jetzt kann das Programm mit „./vilap“ gestartet werden!

  15. Beendet wird das Programm durch den Windowmanager oder durch Anklicken der Shell und drücken von „STRG-C“


Bitte beachten: Wenn Ihr den Rechner ausschaltet, muß beim nächsten mal alles ab Schritt 4 wiederholt werden! Es empfiehlt sich daher, das Programm irgendwo auf eine der angezeigten Festplatten (/mnt/hda1/, /mnt/hda2 ... /mnt/sda1 usw.) zu kopieren. Aber nicht vergessen, diese Platten vorher im Konqueror zu mounten und schreibbar zu machen.

Konfiguration

Die Software wird durch eine Konfigurationsdatei eingestellt, die „vilap.cnf“ heißt und im aktuellen Verzeichnis liegen muß. Ein Beispiel wird mit der Tar-Datei ausgeliefert. Kommentarzeilen haben ein „#“ vorangestellt.

Hier ein Ausschnitt aus einer Konfigurationsdatei:


# VILAP Konfigurationsdatei

# M. Stark, April 2003


MINLAPTIME=3.0

CAMDISTANCE=1.0

XMIN1 = 70

XMAX1 = 110

YMIN1 = 14

YMAX1 = 130

...

XSTEP = 8

YSTEP = 8

VIDEOWDTH = 176

VIDEOHGTH = 144

CONTRAST = 33000

HIGHCOLOR = 0

... (usw.)




Die Datei kann durch Eingabe von „kwrite vilap.cnf“ oder mit einem anderen Editor (bei Knoppix links in der Startleiste zu finden) geändert werden.

Bitte passt unbedingt HIGHCOLOR an, sonst geht es nicht!



Kalibrierung

Nach Aufruf durch „./vilap -c1“ von der Kommandozeile erscheint ein Fenster mit einem Videobild. Die Kamera ist nun so auszurichten, dass die Autos durch die rechteckig markierten Meßfelder fahren und die Zielinie in der Bildmitte von oben nach unten läuft. Der Abstand zwischen Kamera und Strecke sollte einen Meter betragen, ist aber grundsätzlich über die Konfigurationsdatei einstellbar.

Die durch XMIN1...YMAX21 (d.h. durch die Rechtecke) abgedeckte Fläche muß weiß sein, also entsprechend mit Papier o.ä. abgeklebt sein. Die weiße Fläche mit einer Lampe beleuchten oder durch Verändern der Parameter BRIGHTNESS usw. dafür sorgen, dass das Papier ganz weiß dargestellt wird und nicht gräulich oder farbstichig. Dies sieht zwar nicht schön aus, ermöglicht aber erst die Erkennung.

Wird das Programm mit der Option „-c1“ oder „-c2“ aufgerufen, wird der Kalibierungsmodus eingeschaltet (für Auto 1 bzw. Auto 2). Dann erscheinen Hexadezimalzahlen. Diese sollten alle „FFF2“ anzeigen, wenn nichts im Meßfeld ist. Wenn man einen Gegenstand (sprich eine Fahne) ins Meßfeld schiebt, dann sollten wilde Zahlen erscheinen.

Bedienung

Wenn alles korrekt eingestellt ist, sollten sich die Autos an die Startposition begeben, die außerhalb vor dem Messfeld liegt. Nun wird das Programm durch „./vilap“ gestartet und nach ein Paar Sekunden kommt das „Go“ zum Start. Leider werden Frühstarts noch nicht erkannt, aber das kommt noch. Das Programm kann jederzeit durch Eingabe von „STRG-C“ beendet werden. Die beste Runde wird übrigens auch angezeigt.

Tipps

Mögliche Erweiterungen

Die Bedienung und die Konfiguration durch die Datei ist noch sehr spartanisch, da wird natürlich noch etwas getan! Für die Zukunft ist noch einiges möglich:

Getestete Umgebungen

Unter den folgenden Umgebungen habe ich das System bisher erfolgreich betreiben können.


Betriebssystem:


Hardware:


Zur Zeit ist das System mit folgenden RC-Autos getestet worden:


Hinweis

Die Entwicklung des Programms ist reines Hobby. Das Programm ist nur für den spielerischen Einsatz vorgesehen. Die Software ist im Moment ein reiner Prototyp und soll erst einmal die Möglichkeit der Rundenmessung über eine Webcam zeigen. Ich lehne jede Verantwortung für Folgen aus Programmfehlern ab. Das Programm ist weit von der Fertigstellung entfernt. Auch wenn die Ergebnisse im Moment ermutigend sind, muß davon ausgegangen werden, dass die Messungen nicht fehlerlos sind.

Weiterverwertung

Das Programm liegt im Sourcecode vor und Dieser kann nach Belieben von Euch geändert oder weiter verwendet werden. Auch eine Verwendung des Codes oder der Idee in einem kommerziellen Tool ist Euch freigestellt.

Copyright

Das Programm unterliegt der GPL. Große Teile des Programms basieren auf Code von anderen Personen, die diesen auch unter der GPL zur Verfügung gestellt haben. Diese Teile sind deutlich zu erkennen. Von mir stammen nur die Dateien „detect.c/.h“. Die Datei „vilap.cpp“ hieß vorher anders und wurde angepasst.

Kontakt

Über konstruktives Feedback würde ich sehr freuen.


Markus Stark, starky@starky.de, www.starky.de/vilap/vilap-de.html




1Wenn man Parameter in der Konfigurationsdatei ändert, muß das Programm neu gestartet werden.


2Messpunkte werden hier durch Hexadezimalzahlen ausgegeben, und zwar jeweil der Rot, Grün und Blauanteil von 0-15. „FFF“ ist also Weiß, „000“ wäre Schwarz und „F00“ reines Rot. Sobald einer der drei Werte unter „SENSIVITY“ liegt, wird ein Auto erkannt.