PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ultraschall Fragen



exzoys
22.02.2011, 16:29
Guten Tag,
ich möchte meinen ROboter demnächst mit einem Ultraschallsensor versehen.
Er soll damit Objekte erkennen können.
Da ich noch nie mit Ultraschall gearbeitet habe stellen sich mir einige Fragen, viele davon konnte ich schon selbstständig beantworten.
Z.b. folgendes:
Mit Ultraschall kann ich ja durch die Laufzeit Entfernungen bestimmen, aber woher weiß ich von welchem Objekt ich im Moment die Entfernung messe.
Vor dem US-Sender können ja mehrere Objekte verschieden weit weg sein.
Bei einem Laser wäre mir das klar, das Objekt das angepeilt wird, wird gemessen.
Ist es mit Ultraschall möglichst "unkompliziert" machbar dass ich eine KArte des Raums erstellen kann? Natürlich nur in 2d.
Beispiel: Der Roboter fährt in einen quadratischen Raum. Wie würde das denn etwa funktionieren dass er mir sagt dass in diesem Raum 4 Wände sind.
Bzw. kriege ich immer die Entfernung von einem Punkt pro Messung oder kann ich per Ultraschall ganze Geraden bzw. Strecken messen.
Grüße

Besserwessi
22.02.2011, 16:59
Bei den normalen Ultraschallsensoren bekommt man den Abstand zum dichtesten Objekt das groß genug ist um erkannt zu werden. Also immer nur einen Punkt (Abstand pro Messung). Um die ganze Umgebung zu erfassen müsste sich der Sensor (oder der ganze Bot) einmal um knapp 360 Grad drehen.

Richard
22.02.2011, 17:18
Bei den normalen Ultraschallsensoren bekommt man den Abstand zum dichtesten Objekt das groß genug ist um erkannt zu werden. Also immer nur einen Punkt (Abstand pro Messung). Um die ganze Umgebung zu erfassen müsste sich der Sensor (oder der ganze Bot) einmal um knapp 360 Grad drehen.

Dazu können auch noch Reflexionen von Wänden u.s.w. kommen und je nach Luftdruck kommen noch unterschiedliche Laufzeiten dazu. Super genau ist das nicht wirklich, aber um nicht gleich alles um zu nieten reicht es schon. :-)

Für Einen echten §D Laserscanner muss man letztendlich auch einige k€ hinblättern.:-(

Gruß Richard

exzoys
22.02.2011, 17:43
Bei den normalen Ultraschallsensoren bekommt man den Abstand zum dichtesten Objekt das groß genug ist um erkannt zu werden. Also immer nur einen Punkt (Abstand pro Messung). Um die ganze Umgebung zu erfassen müsste sich der Sensor (oder der ganze Bot) einmal um knapp 360 Grad drehen.


was meinst du mit dichtestem objekt? die physikalische dichte oder eher ein objekt das am nähsten am sensor steht.


also müsste ich praktisch eine messung machen den sensor einen schritt drehen und noch eine messung machen usw...
um also eine gerade zu bestimmen müsste ich also 2 punkte messen und die position des sensors wissen. daraus könnte man das dann trigonometrisch ausrechnen.

nur würden sich hierbei viele fehlerquellen einschleichen.
wie macht ihr soetwas?

ePyx
22.02.2011, 17:59
Er meint wortwörtlich das dichteste Objekt. Der Ultraschall durch läuft den Reflektor nicht, sondern wird von diesem reflektiert. Wenn es ein analoger Ultraschallsensor ist, dann gibt der eine Spannung aus, die dir verrät wie dicht das Objekt ist.

Natürlich nur wenn es groß genug ist und auch as solches erkannt wird. Also das was Besserwessi geschrieben hat.

Was du machen möchtest ist wohl so etwas hier :
http://www.designer2k2.at/index.php?option=com_content&view=article&id=22:3d-scan-arduino&catid=13:arduino&Itemid=36

Andre_S
22.02.2011, 18:18
...
Ist es mit Ultraschall möglichst "unkompliziert" machbar dass ich eine KArte des Raums erstellen kann? Natürlich nur in 2d.
Beispiel: Der Roboter fährt in einen quadratischen Raum. Wie würde das denn etwa funktionieren dass er mir sagt dass in diesem Raum 4 Wände sind.


Hallo

Das wird dann mit Sicherheit ein Raum ohne Ecken und so sieht es dann auch ganz allgemein mit der Karte aus. Schau Dir die "Keule" von dem US-Sensor an und Du kannst ungefähr einschätzen wie genau Du selektieren kannst. Du wirst also auch nicht erkennen können ob Du vor einem Tischbein oder einem viel breiteren Hindernis stehst.
Ging mir genauso...
Als grobe Orientierung sehr sinnvoll, ergänzend muss man dann aber mit IR oder prinzipiell anders vorgehen.
Nur mit US würde meiner nie engere Bereiche durchqueren können.

Gruß André

exzoys
22.02.2011, 18:23
@ePyx

danke, soetwas ähnliches möchte ich bauen.
jedoch möchte eben dass der bot in einem koordinatensystem die gemessenen punkte einträgt (x/y).
also etwa so wie unten angehöngt..
und jeder punkt in dieser karte ist eben ein tabu für den roboter...
nur leider komme ich gerade nicht dahinter wie so etwas gehen soll ohne bei jeder messung große rechnungen zu machen.

ich möchte ja den ultraschallsensor nicht als verlängerten taster benutzen der mir nur anzeigt ob ein bjekt vor mir ist oder nicht.

aber ich denke ich werde nicht drum herumkommen aus der postion des roboters und aus der laufzeit die x und y koordinaten zu berechnen. ich frage mich nur ob das mein atmega32 schafft wenn er das ganz schnell hintereinander machen muss...

ePyx
22.02.2011, 18:30
Würde die Fläche des Zimmers rastern und dann nach xy fahren, dann 360 drehung um die Umgebung aufzunehmen. Eventuell passt es in deinen Mega32, weiss ja nicht ob du die kompletten Daten im uC bereit halten willst oder ob ein PC involviert ist.

Ansonsten kannst du bei der Auflösung des Rasters noch drehen und nicht zu vergessen, kannst du das Raster ja auch an die maximale Entfernung deines US-Sensors anpassen.

Allerdings solltest du daran denken, dass du maximal schemenhafte Konturen kriegst, ist halt keine Webcam oder Ähnliches.

exzoys
22.02.2011, 18:43
Tut mir leid der Begriff rastern ist mir unbekannt;) Also seine bedeutung in der Navigation.
Hmm nachdem was ich so gelesen habe denke ich dass ich die US-Sonsoren doch nur dazu verwende werde damit der Roboter nicht an objekte stößt...
Also im endeffekt so wie eine IR Objekterkennung...
Grüße

exzoys
22.02.2011, 19:14
Was meint ihr dazu:

Ich befestige den Sensor drehbar am Roboter. Der Sensor soll sich ständig drehen und die Entfernungen immer abspeichern, bei jeder neuen Messung wird überspeichert. So wüsste der Roboter ja wo er nicht ranfahren darf.

Oder übersehe ich da etwas?

Grüße

Besserwessi
22.02.2011, 20:47
Das mit dem drehen des Sensors ist möglich. Die alten Werte immer gleich zu überschreiben ist nicht unbedingt die beste Lösung aber möglich. Wenn man genügend Speicher hat, kann man sich eine Karte aufbauen und da die Informationen eintragen. z.B. den Raum ein kleine Quadrate einteilen, und zu jedem Quadrat dann eintragen ob es da frei ist, oder ein Hindernis und dazu wie sicher bzw. alt die Information ist.

Mit dem Mega32 hat man vermutlich zuerst Probleme mit dem RAM und weniger mit der Rechengeschwindigkeit.

Mit dichtestem Objekt war gemeint, das mit dem kleinsten Abstand.

Ein Problem gibt es noch mit Glatten Oberflächen, wenn die nicht Senkrecht stehen. Der Ultraschall wird dann mehr gespiegelt als zurück gestreut . Entsprechend kann es da zu Fehlmessungen kommen.

exzoys
22.02.2011, 21:36
Danke für eure Hilfe, ich werde wohl einen drehenden Sensor bauen.
Wie stellt man einen Kontakt her wenn sich das Ding dreht? Schleifkontakt?
Grüße

Thoralf
23.02.2011, 08:53
Schleifkontakt aus Klinkensteckern. Es gibt auch 4-polige. Da hast du alle Kontakte, die du brauchst.

exzoys
23.02.2011, 14:06
Ich habe gelesen dass Schleifkontakte für Sensoren ungeeignet sind, nur verstehe ich den Grund nicht.
Gibt es denn da überhaupt einen?

Grüße

Richard
23.02.2011, 15:41
Ich habe gelesen dass Schleifkontakte für Sensoren ungeeignet sind, nur verstehe ich den Grund nicht.
Gibt es denn da überhaupt einen?

Grüße

Der Grund dürfte im mangelten/schwankenden Kontakt und Übergangs Kapazitäten zu finden sein. Um mittels US einen größeren Bereich zu erfassen, sollte es reichen den Sensor mittels Servo um (beinahe) 360 Grad zu schwenken. Das klappt auch noch mit Kabel Verbindung. wenn die servo Mittelstellung in Fahrtrichtung liegt sollte man am Winkel ermitteln können wann der Bot am Hindernis vorbei passt.

Gruß Richad

exzoys
23.02.2011, 16:39
JA gut Richard ich denke du hast recht.
Ich kann ja den US-Sensor einmal um fast 360 Grad schwenken und dann zurück usw....
gute idee:P

Thoralf
26.02.2011, 15:56
dass Schleifkontakte für Sensoren ungeeignet sind
das kann man eh nicht so pauschal sagen. Analoge signal mißt man eh hochohmig, so daß der Übergangswiderstand kaum eine Rolle spielt. Bei sowas wie Photowiderständen oder Pt100 kann der Übergnagswiderstand der Kontakte (vorallem bei schlechten Kontakten) einen großen einfluß haben aber zur Temperatur- oder Lichtmessung gibts auch andere Möglichkeiten.
Und bei Ultraschallgebern werden in fast allen Fällen Digitalsignale verwendet, die nahazu unempfindlich gegenüber Kontaktwiderständen sind (wenn die Kontakte nicht gerade total verrottet sind).

Aber wenn du eh nur 360° scannst (hin und her wie ein Radargerät) ist ein festes Kabel erstmal die bessere Lösung, auch wenn es ab und zu mal neu angelöten werden muß. Übrigens sollte ein Winkel von etwas mehr als 180° reichen. Wenn eine Karte vom Raum existiert genügt eigentlich die Kenntnis, was sich in Fahrtrichtung VORM Roboter befindet