PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ultraschall-Radar



holzi
07.12.2008, 10:22
Hallo Forum,
ich habe mir mit dem US-Sensor SRF10 ein kleines Radar aufgebaut. Dieser Sensor ist über das RN-Control mittels der RS232 an den PC angeschlossen. Über ein Windowsprogramm wird der Scan und die somit gefundenen Hindernisse angezeigt.
Findet der Sensor ein Hinderniss innerhalb einer eingestellten Entfernungsgrenze, bleibt der Sensor auf dem gefundenen Objekt stehen. Der Robot bewegt sich dann in die entgegen gesetzte Richtung und zwar so lange, bis das vorher gefundenen Hinderniss aus dem Scanbereich verschwunden ist. Ist es verschwunden, bewegt sich der Robot wieder gerade aus und scant die Umgebund so lange weiter, bis eventuell wieder ein Hinderniss gefunden wurde.
Hier ein kleines Video zu diesem Radar:
http://de.youtube.com/watch?v=JgIm5GnZuQ4

Peter

dennisstrehl
07.12.2008, 10:49
Das ist ein Sonar...

Und wenn du schon dabei bist... Versuch doch mal, deine Sonar-Antenne elektronisch zu schwenken... Stichwort "Phased Array". :D

kalletronic
07.12.2008, 12:15
Hi, geile Sache, hab auch schon lange an so nem Windowsprogramm rumgebastelt, aber nix gescheites hingekriegt, womit hastn das programmiert???

holzi
07.12.2008, 17:01
Hi, dieser Teil ist noch in Visual-Basic geschrieben. Ich sitze gerade daran, auch diesen in Visual C umzuschreiben. Der Grund dafür ist,dass ich in anderen Bereichen meines Gesamtprogramms doch wesentlich mehr Möglichkeiten mit C habe. Ist halt nicht so einfaches alles, aber es funktioniert
Es ist mir schon klar, dass das Sonar ist. Da ich es aber so aufgebaut habe, wie ein Radar, habe ich es halt auch so genannt. Es ist für mich nicht nur eine Definitionssache, sondern auch die Idee, die dahinter steckt. Bevor sich aber einige hier eventuell an dem Namen stören, ist es OK. Es ist Sonar.
Peter

kalletronic
08.12.2008, 13:57
Hi, ich habs auch in VB geschrieben, könntest du mir nich mal kurz erklären wie du das genau gemacht hast? Hauptsächlich würde mich interessieren wie du das mit dem Grafischen Teil realisiert hast.

Gruß Kalle

Klingon77
08.12.2008, 14:58
hi,

das Radar (Sonar) ist ja mal große Klasse!

Damit kann man sich einiges an Sensoren sparen.

Mit einer umlaufend und erhöht platzierten Version könnte man den Robby ggf. nur mit einem Sensor bestücken.
Das hängt natürlich auch von der Geschwindigkeit des Roboters im Verhältnis zur Umlauf- und Verarbeitungsgeschwindigkeit des "Radar´s" ab.

Mit einer Drehachse aus einem dickwandigem Kunststoffrohr und aufgeklebten Kupfer (Messing) -rohrstückchen sowie Schleifer aus dünnem, federhartem Messingblech ließe sich eine solche Konstruktion auch recht einfach mit "Hausmitteln" verwirklichen.

Als Antrieb reicht ein einfacher, senkrecht stehender Getriebemotor. Die Last und die benötigte Kraft ist ja nur sehr gering.

Das Kunststoffrohr könnte man im oberen Bereich nochmals mit einem kleinen Gleitlager und einer Halterung am Gehäuse führen.

Liebe Grüße,

Klingon77

maw_hn
08.12.2008, 15:46
Hallo Peter,

also erst mal vorab: Echt klasse dein Projekt!

Gibts vom SRF10 eigentlich auch einen Ableger mit SPI? Das wäre mir persönlich lieber. Sonst bin ich am überlegen etwas ähnliches mit einem SRF05 umzusetzen.

Hast du eigentlich Angaben über den Abstrahlwinkel deines Moduls gefunden? Ist bei Reichweiten von bis zu 6m ja schon interessant.

Grüße,

Marco

Besserwessi
08.12.2008, 17:18
Die einfache Möglichkeit zum drehen des sonars wäre ein kleiner Servo. Dann kann man auch ruhig flexible Kabel nehmen. Die Messung kann man dann größtenteils auf die vordere Hälfte begrenzen, denn was hinten ist kannt man schon und interessiert eher wenig.

holzi
08.12.2008, 17:43
Moin moin hier an die Runde,
mav_hn: Den Abstrahlwinkel von SRF10 habe ich aus dem folgenden Dokument:
http://www.roboter-teile.de/datasheets/srf10.pdf
Wie ich feststellen konnte, stimmt das auch . Jedenfalls wie ich es mit meinen Mitteln feststellen konnte.
Klingon77: Das Problem mit der Geschwindigkeit ist mir klar und es wächst auch eine Lösung bei im Kopf dafür. Ist aber noch nicht ausgereift. Der Ansatz, den ich habe, ist mit einem mehrdimensionalen Array zu arbeiten, in dem ich den Abstrahlwinkel, die Entfernung und den Kompasskurs pro Scaneinheit (ich bezeichne eine Scaneinheit am Servo von Schritt 0 bis zum Max. und zurück) abspeichere. Auf Grund dieser Werte tritt dann die Reaktion auf. Sollte das Hinderniss dann nicht mehr aktuell sein, wird der Wert entsprechend im Array gelöscht. Aber wie gesagt, das ist nur der Ansatz. Das muss noch wachsen bzw. wie ich immer sage, ich muss noch den Kopf aufmachen.
Ich möchte auch noch en Abstrahlwinkel verkleinern bzw fokussieren. Aber ein Schritt nach dem anderem, der Anfang ist jedenfalls gemacht.
An Kalle: Lass mich mal überlegen, wie ich Dir am besten helfe. Ich kann Dir nicht meinen kompletten Code geben, da das Radar nur ein kleiner Teil davon ist und kein selbstständiges Programm ist. Soviel kann ich Dir aber sagen.
Für den Strahl übergebe ich die Servoposition vom RN-Control an das Windowsprogramm per RS232 und werte diese nach dem Dreisatz für die entsprechende X/Y-Position aus. Da ich diese Bewegung auf Grund der ServoPos. mache, bleibt im Windowsprogramm auch schön der Strahl stehen, wenn ein Hinderniss unterhalb des eingestellten Schwellwertes vorhanden ist. Die Entfernung zum Hinderniss übergebe ich genauso an das Windowsprogramm und setze somit die Servopos. mit der dazugehöriegen Entfernung in Einklang. Zum Schluss zeichne ich für jedes gefundene Hinderniss einen kleines Kreis.
Wenn Du mehr Interesse daran hast, meld Dich ruhig bei mir. Am besten per Email. Das sollten wir schon hinkriegen Dein Programm.

Peter

Besserwessi
08.12.2008, 21:09
Den Abstrahlwinkel zu verkleinern ist nicht ganz einfach. Durch die Relativ große Wellenlänge muss das ganze dann größer werden, denn durch beugung ist die Größe beschränkt. Eine Möglichkeit wäre es US-modul zu nehmen, das mit getrennten sendern/empfängern auskommt, und dann den Empfänger durch 2 zu ersetzen. Das ist dann die einfachste form vom einen phased-array. Durch das Zusammenspiel mit dem schon grob gerichteten Sender sollte das schon eine ganz gute Richtwirkung bekommen.

Herkulase
09.12.2008, 07:40
Hm, wie groß müsste das Ding denn werden mit dem man den Schall bündelt? Die Wellenlänge ist ja ca 8mm...

oberallgeier
09.12.2008, 09:53
Hi, holzi, hallo alle,

bisher hatte ich US-Sensoren in die Familie Megaphon eingeordnet - wegen der Größe. Aber dieses Teil sieht ja schnuckelig aus (leider bleibt der Wert Länge*Preis konstant *ggrrrrrr*). Immerhin ist das Ding ja praktisch von der Größe her mit den Sharps (GP2Dxx) vergleichbar. Schade, dass mein Weihnachswunschzettel schon steht . . . aber ich habe Appetit bekommen.


... Findet der Sensor ein Hinderniss innerhalb einer eingestellten Entfernungsgrenze, bleibt der Sensor auf dem gefundenen Objekt stehen ...Ha - so eine Fensterphilosophie habe ich auf meinem R2D03 (Dottie). (https://www.roboternetz.de/phpBB2/viewtopic.php?p=390196#390196)Da blinzeln die Abstandssensoren (irDME´s) in Blindenstockmanier (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=363793#363793)von oben schräg nach unten. Mein Dottie erkennt auf diese Weise Hindernisse und Abgründe und kann entsprechend reagieren (siehe Video). Hindernisse natürlich leider nur in einer recht begrenzten Entfernung - bei der mässigen Fortbewegungsgeschwindigkeit der Coladose (darf ja nicht zu sehr geschüttelt werden - wegen der Colasäure *gggg*) ist das aber kein Problem.


@holzi, viel Erfolg

holzi
09.12.2008, 17:23
Moin moin hier an die Runde,
es freut mich, dass dieses Teil hier gut ankommt.Mir war gar nicht klar, was ich da gemacht habe. Ich wollte in meinem Gesamtkonzept diese art von Radar einfach nur haben und habe es gemacht. Ganz nebenbei, den Kompass, den ich ja auch gemacht habe und der eine oder andere wird das hier im Forum auch gelesen haben, war um einiges schwieriger zu programmieren. Ich bin gerne bereit, dem einen oder anderen zu helfen, wenn er auch so etwas vor hat. Auf Grund Eurer Resonanz bin ich auch am überlegen, ob ich daraus nicht sogar ein Tutorial mache und hier ins RN-Wissen lade. Wenn daran Interesse besteht, teilt mir das mit, dann nehme ich es in Angriff.

Peter

oberallgeier
09.12.2008, 18:05
Hi holzi,

das ist doch ein feines Angebot, schon mal jetzt DANKE. Sensorik, eines der Fundamente von mehr oder weniger autonomen Systemen finde ich generell wichtig. Daher habe ich mich ja auch mit so etwas Ähnlichem (https://www.roboternetz.de/phpBB2/viewtopic.php?t=38009) wichtig getan.

Es sind ja die eigenen Töchter (Ideen) immer die schönsten (besten), aber ein bisschen über den akustischen Tellerrand schaue ich doch gerne nach dem Motto: das Forum bildet. Und dieses klitzekleine Messteilchen ist wirklich schick. (Dass ich für die ebenfalls recht kleinen Hufeisennasen schwärme, hat damit garnix zu tun).

holzi
10.12.2008, 17:24
Guten abend hier an die Runde,
ich habe nun für mich entschieden, dass ich dieses Tutorial für das RN-Wissen schreibe. Aber bitte ein wenig Geduld, denn das geht nicht von heute auf morgen. Ich teile dann hier mit, wenn ich es in RN-Wissen reingesetzt habe.

Peter

jeffrey
11.12.2008, 13:09
hallo,
ich wollte aber mal anmerken, dass deine messung nicht wirklich stimmt. hab mir das video angesehen. da wird der messwert immer an der horizontalen position eingetragen, wo der stral die 1m grenze schbneidet. das ist aber nicht korrekt, wenn das hindernis näher oder weiter entfernt ist.
mfg jeffrey
edit: aber ansonsten find ich das ziemlich cool

holzi
11.12.2008, 17:21
Hallo jeffrey,
ich gebe Dir Recht. Das Hinderniss wird schon korrekt angezeigt, aber zu einem falschen Zeitpunkt. Ich werde das Anzeigen der Hindernisse so wie so überarbeiten müssen, wenn ich an dem dazu gehörigen Tutorial sitze. Wenn ich das dann veröffentliche wird auch dieses Problem gelöst sein (ich weiss auch schon wie).

Peter

ex535
11.12.2008, 17:30
Hallo Peter.

Das ein sehr schönes Projekt. Gratuliere - gute Arbeit.

Gruß vom Rhein

Kurt

pieper-online.dyndns.org
admin
tim

Klingon77
12.12.2008, 12:55
...
ich habe nun für mich entschieden, dass ich dieses Tutorial für das RN-Wissen schreibe.
...

Peter


Glückwunsch und Dank für das "Weihnachtsgeschenk" an´s Forum \:D/

Ich glaube das von diesem Tutorial viele User profitieren können.



Wenn ich darf, zwei kurze Anmerkungen:

* Foto´s / Bilder
* erklärende REM-Zeilen im CODE

Ein Bild sagt mehr als tausend Worte und die REM-Zeilen machen es dem Einsteiger leichter den CODE zu verstehen.


liebe Grüße,

Klingon77

oberallgeier
12.12.2008, 13:23
Hallo Peter,


... für mich entschieden, dass ich dieses Tutorial für das RN-Wissen schreibe ...danke schon jetzt. Dann weiss ich ja, was auf meinen Arbeitsplan kommt in der nächsten Zeit.

Dir viel Erfolg beim Schreiben (und beim wegtesten der Mängel die einem bei solchen Berichten dann doch noch auffallen)

holzi
12.12.2008, 15:12
Hallo Klingon,
ich gehöre zu denen, die sehr sehr großen Wert auf Kommentierung und Einrückung innerhalb des Codes legen. Mein Prof. hat mich genug genervt, bis ich es gemacht habe und heute ist es eine Selbstverständlichkeit. Was ich nicht mache, ist vor dem ersten Code ein Struktugramm erzeugen und daraufhin den Code entwerfen. Ich mache das anders herum.
Lasst mir aber ein bisschen Zeit für das Tutorial.

Peter

Klingon77
12.12.2008, 15:22
hi holzi,

Sorry!

Ich wollte Dich nicht drängen und schon gar nicht belehren :oops:

Ist wohl nicht ganz so rübergekommen, wie ich es meinte.

Ich habe mich einfach nur über Dein Engargement gefreut O:)

liebe Grüße,

Klingon77

3TageBart
12.12.2008, 18:39
Mich würde mal interessieren mit welcher Geschwindigkeit man das Radar maximal bewegen kann und wie lange es braucht um, sagen wir mal, 120° abzudecken. Müsste ja irgendwie durch die maximale Laufzeit des Schalls begrenzt sein.

holzi
13.12.2008, 10:47
Guten morgen,
die Schallgeschwindigkeit in der Luft beträgt 343 m/s bei 20 Grad Lufttemperatur . Um daraus die Entfernung berechnen zu können, muss die folgende Formel benutzt werden:
s = c[m/s] * t[s] / 2
Wobei s die Entfernung, c die Schallgeschwindigkeit und t die Zeit ist.
Ich gehe nun mal davon aus, dass ein Objekt in 1 Meter Entfernung gefunden wurde. Das ist bei mir der Schwellwert.
Durch Umstellung der Formel nach t ergibt sich für das empfangende Echosignal eine Zeit von 0,6 ms.
Der Sensor (Sender und Empfänger) hat eine Breite von 4 cm. Daraus ergibt sich der Radius von 2 cm. Nun berechne ich die Länge des Kreisausschnittes für 120 Grad.
b=(alpha/360°) *2 * r * Pi
alpha wäre hier 120 Grad und r sind die 2 cm
Daraus ergibt sich die Länge b=4,19cm
120 Grad entsprechen 60 Servoschritte (Servostellung von 70 bis 130)
Somit hat ein Servoschritt in diesem Kreisausschnitt eine Länge von 0,07 cm
Daraus folgt nun, dass die Zeit von Servoschritt zu Servoschritt den Wert von 0,6ms nicht unterschreiten darf. Ich setze nun nach jedem Servoschritt ein Waitms 10, dass heisst nun, dass der Servo auf die Position fährt, 10 ms wartet und dann die nächste Position anfährt.
Hierbei sehe ich aber übrhaupt kein Problem. Es gibt ein anderes, wesentlich grösseres Problem. Und zwar ist das die Geschwindigkeit des Robots. Aus diesem Grunde bleibt bei mir der Sensor auf dem gefundenen Hinderniss stehen und bewegt sich erst weiter, wenn das Hinderniss auf Grund der Gegenreaktion sich nicht mehr im momentanen Scanbereich befindet. Ich habe noch das Problem, welches ich noch nicht gelöst habe, wenn der Sensor auf dem Hinderniss stehen bleibt und gleichzeitig in der Gegenreaktion des Robots ein neues Hinderniss auftaucht, kann der Robot zur Zeit nicht drauf reagieren. Dann bummst es. Aber dafür werde ich auch noch eine Lösung finden.
Ich hoffe diese Erklärung reicht aus.

Peter

Besserwessi
13.12.2008, 11:04
Da ist ein kleiner Rechenfehler: für die 1 m Strecke braucht der Schall etwa 6 ms, nicht 0,6 ms. Damit sind dann die 10 ms auch schon relativ knapp, aber noch ausreichend. Nur für mehr Reichweite wird man etwa länger warten müssen.
Damit hat man die Zeit für eine Messung.
Wie dicht man die Messungen machen muß oder sollte hängt von der Richtwirkung des Senders/empfängers ab. Da man die keine gute Bündelung hat, sollten Schritte wesenlich unter 5 Grad nicht nötig sein. Das wären dann nur 24 Messungen für 120 Grad.

oberallgeier
13.12.2008, 11:06
Hallo Peter,

hübsche Auslegungsrechnung. Das machen ja nicht alle (vorher rechnen und überlegen - erst bauen, dann um Hilfe schreien ist eher angesagt).

... habe noch ... nicht gelöst ... gleichzeitig in ... neues Hinderniss auftaucht...Ich habe bei meinem Dottie (https://www.roboternetz.de/phpBB2/viewtopic.php?p=390196#390196) einen eher genauen Sensor, den Sharp GP2D120, auf einem 5ervo. Die grob-qualitativen Sensoren sind irLED-Empfänger-Kombinationen - die fest eingebaut 45°-45°-gefächert das nähere Umfeld (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=363793#363793) "im Blick" haben. Vielleicht wäre das etwas für Dich?

holzi
13.12.2008, 11:23
Hallo Besserwessi,
stimmt natürlich. Das sind 6 ms. Aus diesem Grunde habe ich ja auch die 10 ms gesetzt. Ansonsten hätte ich ein Waitms 1 gesetzt. Der Witz an dieser Sache ist nun doch tatsächlich, dass ich in meiner Doku auch die 0,6 stehen habe. Das versteh ich nun doch tatsächlich nicht von mir.In meiner Doku habe ich das nun aber sofort geändert, denn die muss ja nun stimmen.
Danke

Peter