PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Raumüberwachung...



Icebear
30.08.2004, 11:23
Hallo,

ich hoffe, dass ich nicht direkt in die falsche Rubrik poste.
Mein zukünftiges Projekt wird zwar kein Roboter, aber ich hoffe, dass ich hier doch ein wenig Hilfe erhalte.

Und zwar habe ich vor eine USB-Cam auf eine Plattform mit 2 (Schritt-)Motoren zu setzen, so dass sie um X-und Y-Achse schwenkbar ist. Diese Kamera soll nun eine sich im Raum befindliche Person verfolgen.

Das Problem ist, dass ich zwar programmiertechnisch recht fit bin, von der Elektronik aber wenig Ahnung habe.

Meine Vorstellung sieht so aus, dass ich eine Reihe von Sensoren dazu benutze, die Postion der Person zu ermitteln und die Kamera dann auf diese Person ausrichte. Die Feinausrichtung (schwenke auf den Kopf der Person) würde ich dann über die Kamerabilder steuern.

Die Frage ist jetzt nun, wie ich am Besten die Motoren ansteuere (vom PC aus, eventuell D/A-Wandlerkarte ?) und welche Sensoren die Vernünftgsten wären (der Raum ist ungefähr 15qm groß). Ich habe da an Ähnliche gedacht, wie sie in Bewegungsmeldern verbaut sind. Nur dass diese eine recht grobe Streuung haben... Naja, und auch diese Sensoren müssten ja irgendwie die Daten an den PC senden.

Oder wäre das Ganze auch mit Mikrocontrolern möglich (die Bildverarbeitung wahrscheinlich nicht, oder?) ?

Ich weiß, dass wahrscheinlich jede Frage von mir hier schon beantwortet steht, aber da ich absolut keine Ahnung habe, welche Bauteile ich verwenden kann, helfen mir die anderen Threads eher weniger, vor allem, weil die Einsatzmöglichkeiten der einzelnen Teile einfach überwältigend wirkt.

Mit freundlichen Grüssen,
der Icebear

Javik
30.08.2004, 12:13
Hi,
Also ich würde es so machen, dass ich die ganzen sensoren un einen uC anschliese und die daten dann über RS232 an den PC sende. Die cammera kann man gleich direckt an den PC anschliesen, da der uC zu langsam ist.

Ich frage mich nur wie du das Gesicht eines Menschen identifizieren willst ?!

mfg Javik

Icebear
30.08.2004, 12:33
Hallo Javik,

welchen uC würdest Du denn da empfehlen und vor allem, welche Sensoren würdest du einbinden ? Die Daten per RS232 an den Pc senden... wie kompliziert ist sowas für nen Hardwarenoob ? ;)

Das mit dem Erkennen der Kopfform dürfte lösbar sein, obwohl ich mir da zugegebener Massen noch keine Gedanken drüber gemacht habe.. Es war mehr so ein : Ach, das könnte funktionieren ;-) Aber da ich schon einiges in der Bild- und Mustererkennung gemacht habe, wird mir da auch noch was einfallen.
Falls es läuft kann ich den Code ja posten. Aber erstmal brauche ich die nötige Hardware.

Gruss der Ice

Javik
30.08.2004, 12:54
Hi Icebear,

Ich würde einen ATmegaX nehmen. Ich mache zur zeit mit einem AtMega32 gute Erfahrungen. Schnell klein viele ports.... Aber bei dir würde es wohl auch ein Mega16 tun. Rs232 ist nix anderes als die Serielle Schnittstelle. In Bascom schreibst du einfach nur 'Print "text" ' und der text wird an den Pc gesandt. Gar nciht schwer ;)

Sensoren.... Hmmm... kommt wohl drauf an wie der raum ist... laufen die leute einfach auf die kammera zu ? Wie weit ist der größt mögliche abstand zur kammera?
Grundsätzlich gibt es infrarot abstandsmesser oder welche mit ultraschall. Laser wirrd wohl wegen kosten und gefährdung der personen wegfallen...

In was proggst du?

Gruß Javik

RCO
30.08.2004, 13:01
ICh würde entweder Fall Schrittmororen verwenden, die Machen eine genaue Psoitionierung der Kamera einfacher.
ODer normale Motoren üder nen D/A steuern, weil du dann flüssige Kamerabewegungen hinkriegst.
Wenn du so fit im Programmieren bist, könntest du dann nicht so ne art Raster über das Kamerabild legen, und sagen wenn die Pseron schon im rechten drittel des Kamerabildes ist, soll die KAera schwenken oder ist sowas viel zu schwer?
Bei diesen kleinen Fußballrobotern, die immer mit nem roten Ball spielen klappt sowas auch, allerdings habe ich nicht alzuviel Ahnung vom Programmieren.

Also write back MFg Moritz

Icebear
30.08.2004, 13:06
Huhu,

das mit dem ATmega hört sich simple an ;-) Und er kann die Messdaten der Sensoren auswerten und an den Rechner schicken ? Aber das werde ich wohl hinbekommen.
Der Raum ist an sich rechteckig. Innenwände sind in einem tiefen gelbton gestrichen... Der max. Abstand sollte bei ca. 3 Metern liegen. Und die Personen könnten von verschiedenen Seiten in das Bild laufen. Klar kommen sie ersteinmal durch die Tür, aber es muss ja auch eine Möglichkeit geben, sie "wiederzufinden", falls sie sich aus dem Kamerabild entfernt haben.

Das Ganze soll halt ne kleine Bastelei ohne grösserem Nutzen sein. Durch meine Studienarbeit, die sich auch mit der Mustererkennung beschäftigt hat, bin ich halt auf der Idee : Webcam -> PC -> Bilder auswerten hängengeblieben.

Ich denke dass die Bilderkennung in C/C++ realisiert wird, da die USB-Ansteuerung nicht so schwierig ist, bzw. schon vorhanden ist. Ausserdem habe ich dort die meiste Programmiererfahrung.

Dann brauche ich wohl noch nen D/A-Wandler, der die Motoren zur Kamerabewegung steuert, oder gibts da auch bessere / günstigere Varianten ?

Gruss Ice

RCO
30.08.2004, 13:12
Wie sieht denn so ne Rastererkkennung chematisch aus?
also so?
Kamerakabel --> Wird angezapft --> interpretiert --> veränderung zum ersten Bild suchen --> erkenne und verdeutlichen?

Sorry wenn das nen bisschen blöd klingt, aber ich habe echt keine Ahnung wie das abläuft, wie soll man aus den einzlnen Pixeln des Bildes rausfinden wo sich ein kopf befindet?
Das würde mich wirklich mal interessieren.

MFg Moritz

Icebear
30.08.2004, 13:19
Hallo,

wie gesagt, habe ich mir dazu noch kaum Gedanken gemacht. Die Idee diese "steuerbare" Kamera zu basteln kam mir auch erst heute und ist von daher auch noch nicht ausgereift.

Eventuell klappts über Mustererkennung, vielleicht auch über Kantenerkennung (damit ist es zum Beispiel möglich in einem fotografiertem Gesicht die Augenregion recht genau auszumachen). Dass das Ganze bei "bewegten" Webcambildern nicht gerade trivial ist, weiß ich. Allerdings wächst man ja an seinen Aufgaben ;-)

Mein Plan sieht ersteinmal so aus, dass ich mir die Hardware hole (Webcam, Motoren, event. uC, und die Sensoren), und damit ein wenig rumspiele. Wobei das erste natürlich die Ansteuerung der Webcammotoren sein wird.

Wenn ich die Cam dann über den Rechner so steuern kann, wie ich das möchte, gehts an die Bilderkennung.

Gruss Lars

RCO
30.08.2004, 13:57
Du könntest ja mal fragen, rausfinden wie die diee Ballerekennung bei den Robocups machen.
Ansonsten vilel Glück, und informier uns mal übere deine Fortschritte, lingt interessant.

MFG Moritz

Icebear
30.08.2004, 14:08
Hallo RCO,

danke für den Tip mit den Robocups. Natürlich werde ich posten, wenn es was neues gibt. Nur leider weiß ich immer noch nicht :
a) was für Motoren (Schritt, Servo,...)
b) welche Sensoren,
c) uC, ja oder nein, wenn ja welches (obwohl da ja der Tip mir dem ATmega war.)
d)wie ich die Motoren am sinnvollsten über den PC ansteuern kann.

Vielleicht hat ja jemand die Zeit, mir da ein paar Tips zu geben ;-)
Ich würde mich auf jeden Fall freuen.

Gruss der Ice

30.08.2004, 14:46
Hi Lars,

vielleicht kennst Du ja diese schon?
http://www.logitech.de/index.cfm?countryid=7&languageid=4&page=products/details&CRID=4&CONTENTID=7172

Wir haben mit Hilfe von Intels OpenCV (http://www.intel.com/research/mrl/research/opencv/) ( sourceforge (http://sourceforge.net/projects/opencvlibrary/)) mal eine Besucherzählung in einem Museum realisiert.

Grüsse
Micha

m.eichner
30.08.2004, 14:51
ooops.. war nicht eingeloggt.

dafür noch einen Tip:
http://motion.sourceforge.net/

viel Erfolg

Icebear
30.08.2004, 15:06
Hallo m.eichner,

das sieht schon sehr nett aus. Bin im Moment bei der Arbeit, dass heisst, dass ich mich nicht stundenlang mit "meinem kleinen Projekt" beschäftigen. Aber gleich ist Feierabend ;-)
Kann ich die Kamerasteuerung denn auch selber ansprechen ? Also z.B. mit nem kleinen C-Programm oder so links-rechts, hoch-runter steuern?
Weil wenn ich da nicht drankomme, dann lohnt sich doch eher ne normale Webcam mit 2 kleinen Motoren dran, vor allem, weil ich ja noch nicht weiß, was ich sonst noch mit der Cam treiben will ;-)

Und wie sieht die Qualität bei weiter entfernten Objekten aus (2-3 Meter) ? Scheint ja recht gut zu sein, wenn Ihr sie im Museum eingesetzt habt.

Gruss Lars

m.eichner
30.08.2004, 15:11
Hi Lars,

auf der Motion-Seite ist sogar eine C-Source und ein Schaltplan dafür vorhanden. Kannst Du unter Linux direkt copilieren, müsste unter Win mit mingw auch gehen. Weiss nicht, ob Dir dort die API's (wie so oft) im Weg stehen..

Grüsse
Micha

30.08.2004, 15:43
Hallo,

die Motionseite sieht sehr nett aus. Allerdings scheint ja die Steuerung nicht für die Logitech-Cam zu sein, sondern mit extra Motoren. Wie sieht denn die Ansteurung der Logitechkamera aus ?
Also kann ich ein Programm schreiben, dass die Kamera nach meinen Wünschen schwenken kann ?

Gruss Lars

muraad
30.08.2004, 16:03
Du könntest ja auch die CmuCam2 benutzen. Diese Camera steuert selbständig zwei Servos für x und y Richtung. Dadurch kann sie spezielle Farben verfolgen. Um jetzt einen Menschen zu verfolgen müsste man nur warten bis sich was im Bild bewegt(der Mensch) sich die Farbe merken
(z.B. vom Pulli wegen größerer Farbfläche) und diese Farbe dann verfolgen. War aber nur ne Idee, habs selber noch nicht ausprobiert oder so.
Gruß Muraad

m.eichner
30.08.2004, 16:11
Hallo Lars,

wolltest Du das nicht?

Wenns um die Sphere geht, würde ich enifach mal einen USB-Portmonitor mitlauschen lassen...

Grüsse
Micha

30.08.2004, 18:12
Huhu,

@ m.eichner : Doch, an sich wollte ich genau das. Aber wie es ausschaut habe ich genau das richtige gefunden dank muraad. Die CmuCam2 scheint wirklich gut zu sein. Vor allem kann man sie später noch für andere Projekte einsetzen.

Gruss Lars

Joerg
30.08.2004, 19:01
Hi Lars,

schau dir mal folgendes Video an: http://www.roboter-teile.de/download/cmucam2rt.mpg (ca. 3MB)

Da wird ja ungefähr das gezeigt, was du wolltest (nur mit Apfel statt Birne ;) )
Auch kommt die Demo ohne zusätzlichen Controller aus. Soll heißen da ist noch etwas Finetuning drin, wenn man die Parameter über einen Controller von außen vorgibt.

Wichtig für die Funktion ist auf jeden Fall der Farbunterschied gegenüber dem Hintergrund.

Bei Fragen gern mehr.

Viele Grüße
Jörg

Icebear
30.08.2004, 21:04
Hallo Jörg,

wie, das Demo kommt ohne Controller aus ? Das heisst, dass die Cam automatisch die eigenen Servos so steuert, dass sie dem Objekt folgt ?
Wie gesagt, ich bin sehr begeistert.
Es gibt auf der mitgelieferten CD auch Programme, wie die GUI. Ist da auch der volle SourceCode bei ?
Was mich wundert ist, dass das scheinbar in Java programmiert ist. Ich mein mir solls recht sein, das programmier ich sogar noch lieber, nur habe ich bisher aus Java heraus nicht auf Webcams/Cams etc. zugegriffen.

Funktioniert das denn einwandfrei ? Also dass ich laufende Bilder auch analysieren / auswerten kann per eigenes Prog ?

Ich weiß, Fragen über Fragen, aber ich hab halt von der Hardware wenig Ahnung ;-)

Hier noch nen interessantes Video zur CMUCam2 :
http://www.active-robots.com/products/accessories/robovision/cmucam-video.avi

Gruss und danke für die vielen Antworten ;-)
Lars

Joerg
30.08.2004, 21:42
Hi Lars,


wie, das Demo kommt ohne Controller aus ? Das heisst, dass die Cam automatisch die eigenen Servos so steuert, dass sie dem Objekt folgt ?

ja das ist korrekt. Voraussetzung ist wie schon geschrieben ein entsprechender Farbkontrast. Im Video läuft der DemoModus. Beim Einschalten wird eine Taste gedrückt gehalten, ein zweiter Druck übernimmt die Farbe (wie auch in dem CMUcam2-Video auf http://www-2.cs.cmu.edu/~cmucam2/CMUcam2_demo.mov zu sehen) .
Das ganze lässt sich auch über einen Controller steuern. Die Parameter werden mit einem ASCII-Protokoll übergeben. Wahlweise kann die Cam die Servos dann selbst steuern oder man positioniert die an der Cam angeschlossenen Servos (bis zu 5) über externe Befehle.
Die Servosteuerung basiert auf Schwerpunktbildung der matchenden Pixels, wobei versucht wird, den Schwerpunkt in die Bildmitte zu bekommen.


Es gibt auf der mitgelieferten CD auch Programme, wie die GUI. Ist da auch der volle SourceCode bei ?

ja.


Was mich wundert ist, dass das scheinbar in Java programmiert ist. Ich mein mir solls recht sein, das programmier ich sogar noch lieber, nur habe ich bisher aus Java heraus nicht auf Webcams/Cams etc. zugegriffen.

Die Java-GUI ist eigentlich eine Art Beispielapplikation wo gezeigt wird, wie man die Cam bedienen kann. In der GUI läuft keinerlei Bildverarbeitung. Man steuert lediglich die Funktionen der CMUcam und stellt die zurückgegebenen Daten dar.


Funktioniert das denn einwandfrei ? Also dass ich laufende Bilder auch analysieren / auswerten kann per eigenes Prog ?

Analysieren, auswerten usw. kein Problem, sofern man mit den implementierten Funktionen der GUI auskommt. Also Farbtracking, Motiontracking usw.
Will man was eigenes machen bekommt man den Flaschenhals der seriellen Schnittstelle zu spüren. Ich hab's ja glaube ich gestern in einem anderen Thread hier geschrieben, ein Vollbild in Hires und allen Farben dauert 11s (in Normalauflösung immer noch 4s).
Da gibt es aber den sogenannten Linemode, wo ein deutlich reduziertes Binärbild als Ergebnis einer Trackingfunktion übertragen werden kann. Das geht zwar immer noch im Bewegtbildbereich, allerdings ist das Bild dann schon arg reduziert.
Mal ein Beispiel, eine einfache Linienverfolgung kann die CMUcam ohne zusätzlichen Programmieraufwand. Wenn jetzt Kreuzungen kommen, muss das der Hostprozessor erledigen, das kann die Cam nicht.


Hier noch nen interessantes Video zur CMUCam2 :

Nein das war von der CMUcam1. Interessant ist hier der Outdoor-Linienfolger Barney (Gewinnerbot von A. Rowe).

HTH und Viele Grüße
Jörg

Icebear
30.08.2004, 22:04
Hallo Jörg,

danke für die Information was die lange Übertragungszeit der Bilder angeht. Da muss ich dann doch nochmal überlegen.

Den Link von dem Video habe ich von einer CmuCam2-Seite. Aber die Linienverfolgung ist wirklich schön anzusehen.

Naja, ich werd nochmal 1-2 Nächte drüber schlafen. Ich mein die Cam reizt ja doch, aber für nen Studenten sind 135 Euro (+ eventuell die 32 Euro für das Gehäuse mit den Servos) erstmal ne Menge Geld ... ;-)

Gruss Lars

Joerg
31.08.2004, 09:19
Hi Lars,

naja ist halt ein etwas anderer Ansatz als eine Webcam, die Frage ist eben, ob man die Bildverarbeitung im PC macht und dafür die Bilder in Echtzeit braucht, oder ob die Bildverarbeitung in der Cam stattfindet und nur die Ergebnisse übertragen werden. Letzteres wird halt mit den CMUcams gemacht.
Die RS-232 ist reingekommen um überhaupt kleineren Controllern ne Chance zu geben irgendwas mit Bildverarbeitung zu machen. Das man den Live-Stream in hoher Auflösung nicht über die RS-232 bekommt, sollte nach kurzem Griff zum Taschenrechner klar sein.

Viele Grüße
Jörg

RCO
31.08.2004, 11:37
Also die Videos sind ja der Hammer, besonders:


Hier noch nen interessantes Video zur CMUCam2 :
http://www.active-robots.com/products/accessories/robovision/cmucam-video.avi

Schauen zwar alle wie dumme Hunde, aber ich würd sagen 'Fertig ist der Robocup- Bot'

MFg Moritz

RCO
01.09.2004, 09:11
Ach grade nen anderen Thread gefunden, da gehts darum, wie man Video-Bilder analysiert... Vielleicht interessiert dich das ja auch.

https://www.roboternetz.de/phpBB2/viewtopic.php?t=2486

MFG moritz