PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Positionsbestimmug durch Landmarken mit Hilfe einer Kamera



buchse_04
10.06.2005, 14:19
Hallo Leute!!!

Ich bin noch neu in diesem Forum und hoffe, dass mir einer bei meinem Problem weiterhelfen kann. Folgendes: Ich habe einen Roboter an dem ich eine Funkkamera befestigt habe. Der Roboter soll ein Spielfeld nach Bällen absuchen. Als Positionsbestimmung, wo sich der Roboter befindet, wollte ich meine Funkkamera nutzen, uns zwar durch anbringen von Landmarken (Markierungen) an den Ecken des Spielfeldes. Meine Frage ist jetzt, ob irgendeiner darüber Informationen hat, ob man das überhaupt so realisieren kann, ohne dafür irgendwelche zusätzlichen Sensoren zu benutzen.

Ich bedanke mich schon mal im voraus!!!!!!!!
Gruss buchse

Johannes
10.06.2005, 14:34
Moin,
lies dir das mal durch: http://www.mindrobots.de/cgi-bin/read.cgi?section=algorithms&site=1-3-1&action=readsite

Gruß
Johannes

buchse_04
10.06.2005, 15:27
Hallo,
danke für die Antwort! Deine Arbeit finde ich toll und auch die Ideen die dahinter stecken, jedoch ist meine Frage, wie soll ich das nur durch die Kamera bewerkstelligen? Ich kann gar keinen Abstand zu den Landmarken messen. Ich benutze keine CMU-CAM und ich wollte auch keine zusätzlichen Sensoren verwenden. Ich wollte die Positionsbestimmung nur über die Funkkamera realisieren, d.h. die Kamera sieht 2 Landmarken und durch die anzahl der Pixel, können irgendwelche Winkel oder Entfernungen darauss berechnet werden. So das ich aus diesen Parametern die Position bestimmen kann.

Gruss
buchse

menior
10.06.2005, 15:40
das ist relativ einfach, die cmu cam wird doch eine neuere cmu farbkamera sein, damit kannst du doch sehr simpel gefärbte marken erkennen. an der wirklichen grösse, die du kennst, kannst du die distanz berechnen, das ist doch einfach, probier es mal aus

buchse_04
10.06.2005, 16:01
hallo,
wie gesagt ich benutze KEINE Cmu-Cam, sondern eine normale FUNKKAMERA!! Wie könnte man das mit einer Funkkamera realisieren?
Hast du eine Idee wie die Bildverarbeitung ablaufen müsste (Messung der Entfernung durch die Anzahl der Pixel), oder kennst du irgendein Beispiel (Quellcode) für diese Anwendung, das eine detaillierte Beschreibung enthält ?

Gruss
buchse

Johannes
10.06.2005, 16:04
Moin,
es funktioniert doch genau so, wie du es möchtest. Du hast die vier Farbfelder, die zusammen die Landmarke darstellen. Durch die Abstände, der übereinander Liegenden Punkte bekommst du die Entfernung, während die Abstände der nebeneinanderliegenden Punkte den Winke widerspiegeln. Mit einer CMUcam geht es sicherlich auch, aber du bist mit der Funkkamera ja besser bedient, da du die Erkennung der Farben so programmieren kannst, we du es willst. Somit könntest du auch 4 gleichfarbige Felder nehmen.

Gruß
Johannes

menior
10.06.2005, 17:03
hatte ich überlesen. richtig, es ist die grösse im bild, die zum verhältnis der grösst möglichen darstellung gemessen wird. das wird dann einfach ein paar mal durchgemessen, daraus resultiert dann eine distanztabelle. deine position wirst du vermutlich nur über nicht gleich farbige marken bestimmen können. die berechnung erfolgt dann über die kamerasichtposition zur distanz. das sollte funktionieren, wenn du ein gleichmässiges licht hast. wie schnell ist deine bildverarbeitung, wie bekommst du die bildsignale ?

die marken kannst du in etwa so kodieren:
die erfasste marke musst du maskieren bevor du die distanzberechnung machst. das videobild ist keine lineare matrix, du wirst einige versuche machen müssen, gerade was perspektiven betrifft. die marke kann nicht immer gerade zum objektiv stehen, das will dann auch berechnet sein. zum beispiel, wenn du nur die höhe als faktor nimmst.

zefram
10.06.2005, 17:32
Such doch mal im Dunstkreis einiger RoboCup Teams nach weiteren Informationen. DIe Middle-Size League macht das exakt nach dem gleichem Prinzip.
In jeder Ecke des Spielfeldes steht eine farbig markierte Säule. Dabei sieht jede Säule anders aus, so dass man auch gleich die absolute Blickrichtung weiß.

buchse_04
12.06.2005, 22:37
Hallo
Danke für die hilfreichen Infos!!!
Ich hätte noch einige Fragen an @menior . Das wie du es beschrieben hast klingt einfach,jedoch habe ich nur die Hälfte verstanden. Ich habe sehr wenig Erfahrung was Programmierung angeht und ich habe eine Software (CamCom-Programm oder besser gesagt eine CamDetection.dll) im Internet gefunden, die ich in meinem Programm implementiert habe zur Farberkennung der Gegendstände auf meinem Spielfeld. Das klappt ja ganz gut, nur mit der Positionsbestimmung habe ich total Probleme. Ich wollte dich @menior fragen ob du mir das mit bisschen Mathematik erklären könntest, wie du das genau gemeint hast um die ungefähre Position zu bestimmen.Wäre nett wenn du mir irgendwelche Links geben oder irgendwelche Bücher nennen könntest, wo ich darüber was nachlesen könnte. Die Kamera macht ca. 25 Bilder/sekunde und die Bildsignale werden per Funk übertragen an einem USB-Port.
Leute vielen Dank für die Infos bis jetzt!!!!!!!!

Gruss
buchse_04

menior
13.06.2005, 07:46
hallo buchse, diese erkennungsprogramme habe ich auch ausprobiert. ich kann dir aber sagen, dass ich damit garnichts anfangen kann. ich brauche zunächst eine bitmap oder einen digitalen input, der nicht komprimiert sein darf, bzw. erst dekomprimiert werden sollte, weil man sonst in formeln versumpft. in der grafik triffst du auf einmal cos, tan etc. wieder, diesmal aber selber formuliert hihi es gibt drei prinzipielle methoden (author), die meines erachtens zusammen gehören. das eine ist die pixelmengenanalyse, bzw. deren dynamik, das zweite die winkel etc. messung, die schon nahe einer vektorumsetzung des bildes steht. dann die symbol oder objekt erkennung über recourcen. die erste methode reicht um aus der videomatrix ein koordinatensystem zu machen, das eine 2d auswertung des bildes zulässt, das man mit 2d-3d hilfstabellen bereichern kann. ich habe ein paar schicke videos meiner software im betrieb, allerdings hängt ein projekt dran, das ich nicht vorstellen will, weil es nicht mein projekt ist. meine formeln, ich habe gleich alles durchprobiert was mir auf anhieb einfiel, basieren nicht auf cmos-digitaldaten. ich habe ein bitmapformat gewählt, das heisst, ich muss die software selber noch portieren. die berechnungen stellen im prinzip nicht das problem dar, es ist mehr das vorhalten der daten auf die man systematisch zugreifen will. das heisst, du musst dir eine art offset builder bauen, sonst versumpfst du sofort in unübersichtlichkeit. ...wenn du garnicht programmieren kannst, dann hol dir doch eine cmu-cam.

Johannes
14.06.2005, 00:44
Wir haben scheinbar zwei parallele Threads mit demselben Thema, deshalb poste ich es hier auch noch einmal. Ich habe meine Website aktualisiert. Dort ist nun auch beschrieben, wie man die Position mit Hilfe von vier Farbfeldern berechnet: http://www.mindrobots.de/cgi-bin/read.cgi?section=algorithms&site=1-3-1&action=readsite

Gruß
Johannes

buchse_04
16.06.2005, 09:00
Ich wollte mich bei euch für die angebotene Hilfe bedanken und vor allem
bei @Johannes. Du hast recht gehabt was die Threads angeht Pinguin und ich
haben ähnliche Probleme was die Positionsbestimmung angeht, aber durch
deine Erklärungen habe ich das Problem jetzt gelöst ( zumindestens was die
Kameraerkennung angeht).

Gruss buchse_04