PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Asuro Kamerasteuerung: Big Brother sagt wo!



robo.fr
11.11.2007, 13:51
Hallo allerseits,

hier wieder einmal das Thema Kamerasteuerung mit dem ASURO.

Eine Kamera wird über den ASURO gehängt und beobachtet den ASURO.

Das Programm ist in OpenCV geschrieben und erkennt die Position des ASURO an der roten Farbe.

Was noch fehlt: das Programm soll über die serielle Schnittstelle die Koordinaten auf die IR-Schnittstelle legen, etwas in dem Format

1. StartByte
2. X-Koordinaten-Byte
3. Y-Koordinaten-Byte

Der Vorteil an diesem Verfahren ist dann, dass die Benutzer nichts mehr am Bildverarbeitungsprogramm auf dem PC machen müssen und sich voll auf die Programmierung des ASURO konzentrieren können.

Meiner Meinung nach dürfte das die Möglichkeiten des ASURO ziemlich erweitern. Endlich kann der ASURO seine Position sozusagen über das "Kamera-GPS" ermitteln.

Es sollte möglich sein, dass der ASURO anhand der von der Kamera gelieferten Koordinaten sehr genau anfahren kann.

Interessant könnte auch die Untersuchung der Regelungsschleife Kamera-ASURO-Positonsregler sein.


Gruß,
robo

damaltor
11.11.2007, 13:56
klasse sache. haste da etwas mehr doku dazu? quellcode? was für ne kamera? welches format haben die datenbytes? was muss der asuro haben um erkannt zu werden? usw, usw..

robo.fr
11.11.2007, 14:43
So, hier git es noch den Link auf OpenCV (http://opencvlibrary.sourceforge.net/)


klasse sache. haste da etwas mehr doku dazu? quellcode? was für ne kamera? welches format haben die datenbytes? was muss der asuro haben um erkannt zu werden? usw, usw..

Ziemlich viele Fragen. Hast Du es schon ausprobiert?

liggi
11.11.2007, 15:22
nur was ist mit übertragungsfehlern?? Vielleicht sollte man auf eine andere Art der übertragung wechseln.

mfg liggi

robo.fr
11.11.2007, 18:11
Was die Übertragungsfehler angeht, könnte man verschiedene Maßnahmen ergreifen.

1. Der Asuro fährt aus dem Empfangsbereich der IR-Signale
==> es wird ein Suchprogramm gestartet, bei dem der ASURO solange mit Zufallsbewegungen durch das Zimmer fährt, bis er das Signal wieder gefunden hat.

2. Es treten Übertragungsfehler der Koordinaten auf
==> Es wird eine Fehlererkennungsmechanismus eingebaut

Das Protokoll könnte dabei folgendermaßen aussehen:
Kommandobyte, X-Koordinate, Y-Koordinate

Die Koordinaten dürfen nur im Wertebereich von 0-199 liegen. Ein Wert größer als 199 wird als Kommandobyte interpretiert. 4 Bit des Kommandobytes werden aus der Checksumme der beiden Koordinaten X und Y gebildet. Damit dürfte ein Fehler einigermaßen zuverlässig erkannt werden.

damaltor
11.11.2007, 18:34
ich habe es noch nicht getestet, dqa ich linuxer bin.. mal sehen ob ich den code linux-tauglich machen kann. was für eine kamera hast du angeschlossen?

robo.fr
11.11.2007, 19:29
Eine gewöhnlich USB-Webkamera von Logitech. Die Kamera ist für das Programm selbst egal, da das Kamera-Handling vom Kameratreiber übernommen wird. Im Programm wird die Kamera einfach als Kamera 0 angesprochen.
Da das Programm mit OpenCV arbeitet sollte es eigentlich kein Problem mit der Portierung geben. Das Ganze sollte ziemlich 1:1 funktionieren. Einzig mit dem Ansprechen des Kameratreibers unter Linux sehe ich eine Unwägbarkeit.
Wenn Du es hingekriegt hast, poste den Code und das Vorgehen hier, dann kann ich auch wieder auf Linux umsteigen. Ich habe eher ungern Windows verwendet, um das Ganze einem breiteren Pulblikum zugänglich zu machen und weil's mit OpenCV in Verbindung mit VC++ einfacher war.

damaltor
11.11.2007, 19:36
ok, ich werde es mir mal antun bei gelegenheit. ich glaub ich hab noch ne klien philips webcam, die unter linux out-of-the-box funktioniert hat

MartinFunk
11.11.2007, 20:12
Hi,
bei mir läuft das nicht!!
Es wird mit der fehlermeldung abgebrochen(siehe anhang).

Ich benutze windoof XP

MfG Martin

robo.fr
11.11.2007, 20:18
Oha, das ist ja schon mal das erste Ergebnis. Ich habe auch XP und habe es auch auf einem Rechner mit Win2000 ausprobiert. Das Problem auf dem 2.ten Rechner war nur, das dort ein paar DLLs gefehlt haben, die ich dann zusammensuchen musste. Deine Fehlermeldung verstehe ich ehrlich gesagt nicht ganz. Vielleicht weiß hier ein VCC-Experte rat, ich probiere das nämlich quais zum ersten Mal aus.

mfs
11.11.2007, 21:23
Hi,

Die Meldung kommt, wenn dll's der Runtimebibliothek fehlen.
Welche kannst Du mit depends.exe herausfinden (http://dependencywalker.com/).

Bei mir fehlen:
CV100.DLL
CXCORE.DLL
HIGHGUI100.DLL
MSVCR80D.DLL
möglicherweise dann auch noch weitere, die von diesen fehlenden ihrerseits wieder gebraucht werden.

Womit wurde das programmiert? VCC sagt mir nix... aber da sollte es eine passende Bibliothek dazu geben.
vcredist, vcredistX86, vbrun, .net 1,2,3, java sind es nicht (die habe ich allesamt)

lg,
Martin

robo.fr
11.11.2007, 22:21
Bei mir fehlen:
1.CV100.DLL
2.CXCORE.DLL
3.HIGHGUI100.DLL
4.MSVCR80D.DLL

Also:
Meine Enwicklungsumgebung ist Visual Studio 2005 Express Edition, war mal in irgend einer c't dabei, war also umsonst. Von dort kommt glaube ich die 4.

1.,2.,3 sind Libraries von OpenCV.

Es gibt folgende Möglichkeiten: im Internet habe ich irgendwo die vorkompilierten Libs von 1.,2.,3. gesehen ( google cv100.dll ) allerdings von einer chinesischen Seite.
Oder OpenCV runterladen.

mfs
11.11.2007, 22:46
OpenCV hab ich oben überlesen, und kannte ich noch nicht - alles klar.

msvcr80d.dll muss ich mir nochmal anschauen (die sollte doch im vcredist_x86 drinnen sein? ich habe jetzt aber gar keine v8 msvc*.dll auf meinem PC gefunden, obwohl die runtime installiert ist :-k nur 7 und 7.1 ...)

Danke!

lg,
Martin

robo.fr
13.11.2007, 02:45
msvcr80d.dll muss ich mir nochmal anschauen (die sollte doch im vcredist_x86 drinnen sein

Ähh, weiss nicht. Ich habe leider keine Ahnung, warum die Dll überhaupt gebraucht wird. Das Programm ist ja eine Win32 Konsolenanwendung und verwendet ja ansonsten die Funktionionen von OpenCV. Schöner wäre es natürlich, wenn man ein Programm erstellen könnte, das überhaupt keine Dll's benötigt.
Man könnte vielleicht die Source-Code-Teile aus OpenCV herauskopieren, die benötigt werden und dann einfach alles zusammenkomplilieren. Der Aufwand dazu wäre aber eventuell nicht unbeträchtlich.

reini1305
23.12.2007, 12:24
Wie schnell ist deine Lösung eigentlich? Auf dem Screenshot kann man die Detection Time leider nicht lesen.

mfg
Reini

robo.fr
23.12.2007, 15:59
Warum fragst Du?

reini1305
24.12.2007, 11:25
Tschuldige, ich wusste ja nicht dass das ein Geheimnis ist ;) Ich wollt mir das Kompilieren sparen weil ich keinen Windoofrechner zur Hand hab. Hätt nur gern gewusst obs in Echtzeit geht? (In meinem Fall also mit ca. 15 fps).

mfg
Reini

damaltor
27.12.2007, 23:21
Warum fragst Du?

was soll die frage? :/ wie hoch ist sie? ich hab auch keinen windows rechner greifbar...

damaltor
27.12.2007, 23:23
Warum fragst Du?

was soll die frage? :/ wie hoch ist sie? ich hab auch keinen windows rechner greifbar...

robo.fr
28.12.2007, 08:30
>robo.fr schrieb:
>Wenn Du es hingekriegt hast, poste den Code und das Vorgehen hier, dann kann ich auch wieder auf Linux
>umsteigen. Ich habe eher ungern Windows verwendet, um das Ganze einem breiteren Pulblikum zugänglich zu
>machen und weil's mit OpenCV in Verbindung mit VC++ einfacher war.

damaltor schrieb:
ok, ich werde es mir mal antun bei gelegenheit. ich glaub ich hab noch ne klien philips webcam, die unter linux out-of-the-box funktioniert hat

Was macht die Umsetzung auf die Linux Plattform? Mein Tipp: erst Leistung zeigen, dann fordern. :evil:

reini1305
28.12.2007, 08:51
Was macht die Umsetzung auf die Linux Plattform? Mein Tipp: erst Leistung zeigen, dann fordern. :evil:

Es geht sicher unter Linux, wenn deine Kamera ein v4l-device erstellt /dev/video0 zB. Hab selbst schon viel mit der OpenCV gemacht und das schöne daran ist die relative Plattformunabhängigkeit, wenn man sonst nicht viele Bibliotheken braucht.

Um nun zu meiner Frage zurück zu kommen: Wie schnell? ;)

LG
Reini

EDIT: BTW, wo isn der Source hin? Jetzt sitz ich grad an einem Windows rechner in der Arbeit :)

EDIT2: Ich hab mir mal die Mühe gemacht und ein kleines Projekterl von mir von Linux nach Windows portiert. Die Portierung bestand nur in ein paar .h Datein ändern, am Source musste ich nix drehen. Wers probieren will: http://reini.homelinux.net/facetrack.rar

damaltor
28.12.2007, 14:18
so, da die kleine philips cam ein /dev/video0 bereitstelt, halte ich das auf jeden fall für machbar. allerdings habe ich atm einfach keine zeit um mich damit zu beschäftigen.

wie schnell ist es denn nun? =)