PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 3D-Scanner / Hinderniserkennung mit Laser



Omnikron
01.09.2005, 13:21
Hallo Leute

Um die Hindernisserkennung meines Roboters zu verbessern möchte ich mir einen 3D-Scanner bauen. Ich dachte daran das ich ich einen Laserstrahl unter einem definierten Winkel aussende und die Reflektion mit einer Kamera erfasse. Aus dem Kamerabild müsste ich dann nur noch die Position des Laserpunktes bestimmen.
Die Entfernung zum angepeilten Punkt lässt sich dann über Trigonometrische Funktionen berechnen.


Das Ablenken des Laser funktiniert schon ganz gut. Problematisch ist nur die Erkennung des Laserpunktes auf der Reflektionsebene. Ich habe eine Analoge Farbkamera an einer TV-Karte mit der ich zur Zeit versuche die Bilder auszulesen. Leider erziele ich da nur mäßige Fortschritte. Außerdem ist diese Methode auch recht langsam und daher eher ungeeignet für mobile Roboter.

Würde der Kauf einer CmuCam lohnen? Mit der Color Tracking funktion müsste ich den Laserpunkt doch lokalisieren können oder? In Verbindung mit einem µC könnte die dann auch die gesamte Berechnung übernehmen und ich brauch keinen extrnen Computer mehr.
Hat vielleicht schon jemand Erfahrung damit?


Für konstrukitve Kritik bin ich immer offen. Vielleicht gibt es ja noch Verbesserungsvorschläge.

mfg Omnikron

sep
01.09.2005, 13:30
Hm, für kurze Entfernungen könntest du auch einen SHARP-Sensor nehmen,

für weite Entfernungen brauchst du recht hochaufgelöste Bilder um da noch was über die Entfernung aussagen zu können.

Das kannst du natürlich mit "Zoom-Objektiven" verbessern - aber den Zoom zu verändern kostet doch viel Zeit.

Wie genau willst du denn messen? Rechne das ganze mal ein bisschen durch :D

pebisoft
01.09.2005, 13:45
der kauf der cmucam2 lohnt sich immer. der punkt wird ausgewertet. du musst aber vorher die rgbmin und rgbmax ermitteln.
kannst mit dem beiliegenden java-programm machen.
mfg pebisoft

Omnikron
01.09.2005, 13:46
Hi

Bevor ich den Scanner baute, habe ich die erzielbare Auflösung abgeschätzt. Diese hängt ja maßgeblich von der Auflösung der Kamera ab. Mehr als 2 Meter brauche ich nicht zu überblicken.

Sharp Sensoren benutze ich bereits, bin damit aber eher unzufrieden. Die Reichweite ist zu gering. Und mit der Entfernung werden die auch recht ungenau.

Mich interessiert es nun ob ich auch eine Cmu Cam dafür einsetzen kann.

Ein Zoom Objektiv habe ich leider nciht zu verfügung.

mfg
Omnikron

Omnikron
01.09.2005, 13:51
rgbmin und rgbmax sind Variablen die den Puntk beschreiben? Das würde bedeuten, dass ich das einmalig bestimme und danach das system selbständig arbeitet.
Sendet die cmucam2 die xy position über die ´rs232?
Was meinst du wieviel fps ich damit schaffe.

Manf
01.09.2005, 14:40
Problematisch ist nur die Erkennung des Laserpunktes auf der Reflektionsebene.
Falls Du an eine eigene Lösung denkst solltest Du bestimmt den Laser modulieren erlässt sich dann im Differenzbild leichter finden.


Ein Zoom Objektiv habe ich leider nciht zu verfügung.
Ich hätte noch ein paar billige Zoomobjektive, aber ich glaube nicht, dass die dafür nötig sind. Du willst doch praktisch nur im Abstand von 1-2m oder mehr messen.
Manfred

gerrylix
01.09.2005, 15:07
Ist wahrscheinlich eine unnötige Hilfestellung weil du sicher schon dran gedacht hast aber ich sags mal vielleicht bringts doch was.

Setz vor deine Kamera eine Blende um den Punkt leichter zu finden!
Ich mein ne RGB Blende mit der du einfach die Umgebungsfarben ausblendest und dich auf die Wellenlänge des Lasers konzentrierst.

Und spiel dich mal mit ein paar Tools im Netz um zumbeispiel eine leichtere auswertung zu erhalten kannst du ja ein negativ des Bildes machen.

Du kannst auch sogenannte Patterns machen--> Falls nicht bekannt erklär ichs kurz: Mach von dem Punkt mehrere Aufnehmen speichere sie in ner Datei ab und such dir ne Software die das so entstandene Pattern im Gesamtbild findet! Das Prinzip ist dass die Software einen Punkt findet und nicht unabsichtlich ein rotes Hemd O:) Soweit mir bekannt ist brauchst du dazu Vektor grafiken also in nem jpeg abspeichern.

Ich hoffe das war enigermassen verständlich und hilft!

gerrylix \:D/

Omnikron
01.09.2005, 15:39
@gerrylix

Wollte zuerst eine SW kamera benuzen. Dazu hätte ich den Filter auf jeden fal gebraucht. Hab mal im Netz gesicht und bei nem Optiker welche gefunden. Die sind aber sehr teuer. Daher dachte ich mir das ich mir den Filter spare und einfach eine Farbkamera benutze.

Wie funktioniert das mit den Pattern wenn der Punkt keiner mehr ist sondern eine Ellipse oder so.? Wenn der Laserstrahl eine schiefe ebene streft dann ist der "Kreis" ja deformiert.

@manf

Das ist eine gute Idee mit dem Modulieren des Strahls. Habe ich hier in einem andern thread auch schon gelesen. Dachte das ich ein bild mit und eins ohne laser mache und in die Subtraktion dann zu analyse benutze.


Ich bastele gerade an einem VB Projekt bei dem ich ein Bild einlesen kann und darin den Punkt suche. Selbst mit der langsamen Point methode will es nicht so recht funktionieren.

Wie kann ich denn in VB die Farben eines pixels in RGB speichern?



Omnikron

Felix G
01.09.2005, 23:12
Bei einer Farbkamera kannst du dir die Modulation evtl. sparen...

Subtrahiere einfach vom R-Kanal die beiden anderen und du erhälst ein Graustufenbild auf dem alles Rote weiss ist, und der Rest schwarz.
Auf diesem Bild musst du dann nurnoch kleine weisse Punkte finden,
wobei es wohl sinnvoll wäre nur in dem Bereich des Bildes zu suchen in dem der Punkt überhaupt liegen kann.
(diesen Bereich musst du natürlich vorher erstmal grob berechnen)


Damit sollte das ganze schon sehr gut funktionieren, sofern der Laser keinen roten Gegenstand trifft
(oder auch direkt neben/in einen Haufen roter Stecknadeln)

Falls der Abstand zwischen Scanner und Ziel wesentlich größer ist als der zwischen Kamera und Laser (und das nehme ich mal an),
ist die Form des Punktes auch kein großes Problem (es sei denn man trifft das Objekt in einem sehr flachen Winkel)


edit:
bei der Variante gehe ich mal davon aus, daß ausreichend Rechenleistung zur Verfügung steht
(Laptop oder ein sehr schneller µC der nur für die Bildverarbeitung zuständig ist)

Omnikron
02.09.2005, 00:36
Mit welcher Methode kann ich denn in VB die Farbe eines Pixels in alle 3 Kanäle aufspalten? Dannach kann ich den roten Anteil aus dem Bild extrahieren.
Leider fehlt mir die benötigte Rechenleistung am Roboter. Deswegen muss ich das Bild über Funk an meinen Desktop Rechner senden und die ausgewerteten Daten wieder zurück schicken.
Daher die Überlegung die cmucam zun nutzten, vorausgesetzt die ist Schnell genug.

Bernhard667
02.09.2005, 17:12
Hallo,

wieso die Abneigung gegen die Farbfilter. Mit 70€ bist Du dabei.
Nicht gerade umsonst aber funktionieren dafür recht gut und Du kommst mit Scharz Weis Kamera aus
->Einfachere Signalverarbeitung
->Höhere Empfindlichkeit und deswegen größere Reichweite


Schau Dir doch mal mein Homepage an.
Is zwar nur ein 2D Laserscanner, aber immerhin

Für ein neues (noch Gedanken) Projekt habe ich vor, den 2D Scanner zu fahren und daduch eine 3D Darstellung zu erhalten. Ist dann natürlich langsam, aber für meinen Zweck ok.

Bernhard

Omnikron
02.09.2005, 17:37
Hallo Bernhard667

Deine Homepage kenne ich schon. Finde ich sehr beeindruckend! Von deiner Site hab ich den Link zu den Farbfiltern. 70€ ist zwar nciht die Welt aber für das Einsatzgebiet ist mir das leider doch zu teuer.

Das ist doch eine analoge Kamera die du da benutzt oder? Wertest du dann das PAL Signal aus? Dachte das eine digitale Bildanalyse einfacher wäre.

Kannst du den Linienlaser nicht drehbar auf einem Stepper oder Servo montieren? Ist vielleicht einfacher als eine linear Verschiebung. Und die Kamera muss nicht bewegt werden. Man müsste dann deine Glecihungen ein wenig modifizieren.

Omnikron

Günter49
02.09.2005, 20:46
@ Omnikron

Umwandeln des Farbwertes, der mit der Point-Methode ausgelesen wird in R,G und B: (in VB5)

FARBEgefunden = picture.Point(x, y)

B = FARBEgefunden / 256
B = Int(B / 256)
temp = FARBEgefunden - B * 256 * 256
G = Int(temp / 256)
R = temp - (G * 256)
Kann man sicher noch ein bisschen geschickter machen, aber funktioniert.

Ich bewundere deinen Aufbau. Wieviel Geld hast du bisher für Laser, Kamera, Filter etc. aufgewandt? Ab 300€ wird sicher der Laser-Abstandsmesser efector pmd von ifm interessant. Ist hier im Forum schon mehrmals angesprochen worden. Reichweite max 10m, Genauigkeit +/- 15mm je nach Entfernung.
http://www.pmdtec.com/inhalt/produkte/documents/Prosp_200PMD_B50_D_05.pdf
Man kann die Entfernungen dann ohne weitere Rechenoperationen direkt auslesen und die Mechanik zum 3D-Bewegen des Sensors hast du ja praktisch schon fertig bzw.lässt sich leicht anpassen. Ich will gern zugeben, dass mich der Preis auch noch abschreckt, aber ich spare schon.

Gruß, Günter

Omnikron
03.09.2005, 04:38
@günter49

SChon mal danke für den Code! Werd ihn morgen mal ausprobieren. Heute ist es mir dafür zu spät :-)

Also die Stepper habe ich von Pollin. Einer hat glaub ich 3,95€. Der Laser war von Conrad. Um die 30€. Aber da gibt es mittlerweile auch günstigere Modelle. Die Funkkamera ist mit 89,90€ (bei pearl) das teuerste. Einen Filter benutze ich nicht. Aber der würde nach Aussage von Bernhard667 so um die 70€ kosten.

Der Rest ist eigenkonstruktion, daher für mich mal abgesehen von der dafür draufgegangenen Zeit kostenlos.
Glaube nicht das noch mehr dafür ausgeben muss (evtl die cmucam2 statt der Funkkamera??). Jetzt fehlt ja eigentlich nur noch die Software.


Omnikron

Bernhard667
03.09.2005, 15:51
@Omikron,

das Schwarz/Weiß Video Signal werte ich direkt elektrisch aus.
Das Bild liegt nie als Pixelmuster in digitaler Form im Speicher des Controllers vor. Die Laserreflektion ist einfach das hellste = höchster Spannungswert im Signalverlauf.

Das fand ich eigentlich für einfacher, als das ganze Bild zu digitalisieren und dann rechnerisch drin zu analysieren. Kann man aber wohl auch anders rum sehen.

Bei Farbbilder ist das Verfahren jedoch (glaube ich) nicht mehr möglich.

Sicherlich kann man den 2D Scanner durch Kippen auf 3D aufbohren.
Bei meinem (noch Gedanken) Projekt muß der Scanner jedoch sowieso fahren, da kriege ich die 3. Dimension gleich geschenkt dazu.

Zum Thema "Farbbilder einlesen und analysieren" kann ich Dir nur Ken Maxxon empfehlen (Link über meine Homepage).
Der spielt allerdings doch ein bis zwei Ligen höher.
2-3 Kameras einlesen und in Echtzeit mit FPGA analysiern.

Bernhard