PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Navigation mittels Infrarot - "Winkelsendern"



sigo
23.04.2006, 22:14
Wie wärs für die Navigation im Garten oder auch in einer Halle (Rasenmäßer, Roboterfußball) o.ä. mit folgender Positionsbestimmung:

Es gibt mehrere "Leuchttürme", die einen rotierenden Strahl senden. Z.B. IR-Laser (strahl augensicher aufgeweitet) oder Infrarot-Diode über rotierenden Spiegel.

Nun wird jeder Strahl so moduliert, dass er seine aktuelle Winkelposition + Senderkennung + CRC sendet..

Beliebig viele Bots (!), die sich dann in der Arena bewegen (z.B. Garten, Roboterfußball usw..) können nun diese Signale mittels 360° - IR-Empfänger empfangen.

Aus Sicht der Empfänger sieht es so aus, dass die meiste Zeit nichts empfangen wird, außer wenn ein Strahl vorbei kommt und den Sensor trifft.

Die Strahlen könnten nun entweder synchron rotieren, oder man müsste Kollisionen der Daten erkennen und bekäme bei unterschiedlichen Drehzahlen der Sender in der nächsten Runde die gültige Info....

Jedenfalls bekommt der Empfänger so die Winkelpositionen zu den "Leuchttürmen" - und zwar ohne Peilung in Klartext mitgeteilt.

(wenn die Sender mit z.B. 20U/s rotieren, wären das 20x pro Sekunden alle empfangbaren Sender.
Wenn die Reichweite nicht reicht, können mehr Sender installiert werden, oder Redundante Sender können die Datensicherheit und ggf. Auflösung erhöhen..

Die Datenrate und Drehzahl bestimmen die zeitliche und räumliche Auflösung. Mit Lasern könnte man das ganze auf großen Flächen realiseren.

Das System wäre skalierbar in Auflösung, Geschwindigkeit und Ausdehnung. Der Bot braucht keine besondere Prozessorleistung und benötigt nur einen geringen Energieverbrauch und Platz fir den Empfänger..

Just a thought

Sigo

Madgyver
23.04.2006, 23:00
Wenn der Strahl aufgeweitet wird, dann hat man ja keinen exakten Winkel, bei dem der Bot ein SIgnal empfangen kann, sondern einen Winkelbereich.
Gibt es den eine möglichkeit das zu umgehen oder wie hast du dir das gedacht?

StEndres
24.04.2006, 11:01
Könnte gehen. Das mit dem Winkelbereich sehe ich nicht so tragisch. Er nimmt dann einfach der Durchschnitt vom ersten und letzten empfangenen Signalwinkel. Eher schon die Reichweite. Hab dazu noch keinen Versuch gemacht, aber sehe das auch net so tragisch. Zur Not muss die Sonne abgeschirmt werden und müssen mehrere Sendestationen aufgebaut weden. Die Ortung dürfte dann eh genauer sein.
20 Hz dürften allerdings zuviel sein. Dein Robo wird in 50ms schon kann ganzen Meter fahren.
Bei 30Bits pro Signal dürfte dann so ein 5° Bereich zum senden genügen. Auf 5m wäre das dann eine Abweichung von 45cm. Bei der nächsten Umdrehung kann dann ja ein leicht anderer Winkel gesendet/empfangen werden so um 2°. Durch Mittelung im Empfänger dürfte es ja dann wieder genauer werden. Allerdings, in den cm-Bereich wirste damit net so leicht kommen. Aber mit einem zusätzlichen langsam drehenden Signal (so 3s pro Umdrehung) wäre dann eine feinere Ortung sicherlich möglich.

Stefan

Andree-HB
24.04.2006, 11:43
...noch ein Vorschlag, ähnlich GPS - könnte man sich nicht eine Umgebung mit einer supergenauen (Funkuhr) bauen und die Sendezeit zusammen mit einer Positionsangabe ("ich bin Bake 1") über nacheinander 4 Baken aussenden. Dann vergleicht man im Robby (der ebenfalls eine Funkuhr eingebaut hat) die Empfangszeit/Laufzeit/Entfernung. Zur Übertragung ein "langsames" Medium wie Ultraschall verwenden, Infrarot/Lichtgeschwindigkeit ist viel zu schnell.

Bei mind. 3 Baken wäre eine sehr genaue Positionsbestimmung möglich, wenn die Abstände der Baken im Vorfeld bekannt sind.

ManniMammut
24.04.2006, 12:12
Also wir haben was ähnliches bei Jugend Forscht 2005 und '06 gebastelt. Wir hatten 3 Baken mit einem Laserstrahl, der über den Spiegel abgelenkt wurde ->war ziemlich plöd, weil sich durch die Rotation die Stative bewegt haben und durch die Ablenkung und die hohe Frequenz die 5mW-Laser zu schwach wurden. Gegen Sonnenlicht war das ganze außerdem auch sehr empfindlich.
Dieses Jahr hatten wir dann auf IR umgesattelt. Dafür haben wir wieder 3 Baken, mit jeweils 10 im Halbkreis angeordneten IR-Dioden, auf unserem "virtuellen" KoSy aufgestellt. Nen moduliertes (für jeden Sender gleich moduliert - also keine kodierten Baken) Signal wird von dem auf nem sich um 360° drehenden Schrittmotor Empfänger gesehen und verarbeitet. Dieses System war auch gegenüber Sonnenlicht unempfindlich. Die Berechnung des Standpunktes durch die Winkel hat auch recht zuverlässig funktioniert.

mfG, Manni

StEndres
24.04.2006, 15:44
War grad im Garten und da kam mich noch eine andere Möglichkeit. Diesmal nicht mit Winkelmessung sondern mit Abstandsmessung. Dazu wird (zur Positionsbestimmung mehrere) ein Sender aufgestellt, der ziemlich exakt z.B. mit 5 Umdrehungen pro Sekunde einen Spiegel rotiert und einen IR- oder Laserstrahl rotieren lässt. Also praktisch so wie oben. Nur ohne Winkelinformation. Wichtig ist nur, dass dies gleichmäßig geschieht und einigermaßen scharfe gerichtet ist. Der Empfänger besteht jetzt zum Beispiel aus 12 im Kreis in der Horizontalen mit r=10cm angeordneten Empfängerdioden, die den Strah empfangen. Der Strahl streicht jetzt also seitlich über den Kreis und die Dioden registrieren dies. Der zeitliche Abstand zwischen dem ersten und letzten Signal wird gemessen. Der Abstand zum Sender kann dann mit r=(s/t)/(2*PI*f) bestimmt werden, wobei f die Frequenz des Senders, s der Durchmesser des Empfängers und t der zeitlich Abstand der Signale ist. Die Signale zu Messen ist kein Problem. t liegt im höheren µs-Bereich (je nach f). Des sollte für einen µC kein Problem sein. Bei 12 Dioden sind rechnerisch bei einer Entfernung von 2m max. 10cm Toleranz drinnen. Bei 20 Empfängerdioden sind es nur noch 2,5 cm (f muss aber dabei sehr exakt sein!) Wer es genauer will, kann einfach den Kreis vergrößern und noch mehr Dioden draufsetzten. Wer eine häufigere Aktualisierung wünscht muss nur die Frequenz erhöhen.

Stefan

sep
24.04.2006, 17:51
Interresant - und wie verhindert man Mehrwegeausbreitung (Spiegelung...) etc.?

StEndres
25.04.2006, 11:01
Reflexionen kann man sicher elektronisch ausblenden. Der µC weiß ja, dass ein Signal mit einer bestimmten Codierung (damit man weiß, um welchen Sender es sich handelt) nur einmal z.B. innerhalb von 0,2s auftreten kann. Steht jetzt irgendwo ein Spiegel verdoppelt sich die Häufigkeit. Es entsteht ein virtueller Empfänger der "hinter dem" Spiegel steht. Der Abstand zwischen Sender und Empfänger ist daher größer als auf direktem Wege. Der µC muss also innerhalb einer Periode immer das Signal nehmen, das den längsten Zeitabstand hat. Denk ich zumindest mal. :-s

Was mir mehr Probleme bereitet ist die Anordnung der Empfängerdioden. Ich hab keine Ahnung wie ich diese am günstigsten einbauen müsste, damit sie die Signale auch empfangen.

Stefan

sigo
25.04.2006, 13:06
Was mir mehr Probleme bereitet ist die Anordnung der Empfängerdioden. Ich hab keine Ahnung wie ich diese am günstigsten einbauen müsste, damit sie die Signale auch empfangen.

Stefan

Das sehe ich nicht so problematisch. Wenn man sich die Pindioden (z.B: BPW34 mit Tageslichtfilter) ansieht, stellt man fest, dass diese einen sehr weiten Empfangswinkel haben. Man kann also z.B. 4 Dioden jeweils 90° zueinander anordnen. Da die Dioden normalerweise sperrren und durch den Fotoeffekt leitend werden, kann man sie sogar parallel schalten und kommt evtl. sogar mit nur einer Auswertelektronik aus (die man ggf. an den 4-fachen Ruhestrom anpassen muss). Ob die Kapazität bei einfacher Parallelschaltung zu hoch wird, und die Grenzfreqzenz zu sehr reduziert, weiß ich (noch) nicht. Einen Teil kann man sicher auch hier kompensieren.

sigo

sigo
25.04.2006, 13:24
...noch ein Vorschlag, ähnlich GPS - könnte man sich nicht eine Umgebung mit einer supergenauen (Funkuhr) bauen und die Sendezeit zusammen mit einer Positionsangabe ("ich bin Bake 1") über nacheinander 4 Baken aussenden. Dann vergleicht man im Robby (der ebenfalls eine Funkuhr eingebaut hat) die Empfangszeit/Laufzeit/Entfernung. Zur Übertragung ein "langsames" Medium wie Ultraschall verwenden, Infrarot/Lichtgeschwindigkeit ist viel zu schnell.

Bei mind. 3 Baken wäre eine sehr genaue Positionsbestimmung möglich, wenn die Abstände der Baken im Vorfeld bekannt sind.

Hi,
also die Laufzeit wollte ich eigentlich nicht messen ;-) und mehrere supergenaue Atomuhren würden auch den Etat sprengen.

Die sind aber auch gar nicht nötig. Du hast reicht, dass es reichen würde, eine Senderkennung zu senden. Das wäre ja recht einfach, indem man unterschiedliche Pulsmuster oder auch Bitzeiten verwendet.

Wenn man alle Sender synchron laufen lässt, und einfach das Eintreffen der Signale mit einem Timer stopt, kann man sicher auch was damit anfangen.

Ideal wäre ein globaler, rundum strahlender Synchronisationsimpuls, den alle Sender und alle Fahrzeuge erhalten (z.B. per Funk). Auf diesen Impuls könnten sich alle Sender synchronisieren, sodass sie immer nach Norden senden, wenn der Impuls kommt. Sobald die Synchronisation steht, senden nun alle Sender ihr sehr kurzes Muster (Morsezeichen würde reichen).

Nun können die Empfänger auf Basis der Zeit bis zu den jeweiligen Signalen die Winkel ermitteln und daraus die Position peilen.

Dazu reichen die Timer eines µController allemal aus. Keine Atomuhr nötig.

Auf den Funk würde ich aber gern verzichten, da teuer. Man kann natürlich auch den Mastersender einfach mit einem Ring aus IR-LEDs ausstattung und so die Synchronisation mit der gleichen Intensität wie die Winkel runum senden.

Hey, das gefällt mir schon ziemlich gut. Ist einfacher und wohl auch übertragungssicherer als die Datenübertragung..finde diese dennoch sehr reizvoll.

Wenn man gleich alle Sender aus vielen Dioden baut, braucht nan die nicht mehr rotieren zu lassen. Hmm, aber die Auflösung von ideal z.B. 1-2° erreicht man so wohl eher nicht..

Sigo

sigo
25.04.2006, 13:26
Also wir haben was ähnliches bei Jugend Forscht 2005 und '06 gebastelt. Wir hatten 3 Baken mit einem Laserstrahl, der über den Spiegel abgelenkt wurde ->war ziemlich plöd, weil sich durch die Rotation die Stative bewegt haben und durch die Ablenkung und die hohe Frequenz die 5mW-Laser zu schwach wurden. Gegen Sonnenlicht war das ganze außerdem auch sehr empfindlich.
Dieses Jahr hatten wir dann auf IR umgesattelt. Dafür haben wir wieder 3 Baken, mit jeweils 10 im Halbkreis angeordneten IR-Dioden, auf unserem "virtuellen" KoSy aufgestellt. Nen moduliertes (für jeden Sender gleich moduliert - also keine kodierten Baken) Signal wird von dem auf nem sich um 360° drehenden Schrittmotor Empfänger gesehen und verarbeitet. Dieses System war auch gegenüber Sonnenlicht unempfindlich. Die Berechnung des Standpunktes durch die Winkel hat auch recht zuverlässig funktioniert.

mfG, Manni

Hey Manni, da habt Ihr ja ein richtig schönes Projekt gemacht.
Hast du ein paar mehr Infos?

Sigo

sigo
25.04.2006, 13:35
War grad im Garten und da kam mich noch eine andere Möglichkeit. Diesmal nicht mit Winkelmessung sondern mit Abstandsmessung. Dazu wird (zur Positionsbestimmung mehrere) ein Sender aufgestellt, der ziemlich exakt z.B. mit 5 Umdrehungen pro Sekunde einen Spiegel rotiert und einen IR- oder Laserstrahl rotieren lässt. Also praktisch so wie oben. Nur ohne Winkelinformation. Wichtig ist nur, dass dies gleichmäßig geschieht und einigermaßen scharfe gerichtet ist. Der Empfänger besteht jetzt zum Beispiel aus 12 im Kreis in der Horizontalen mit r=10cm angeordneten Empfängerdioden, die den Strah empfangen. Der Strahl streicht jetzt also seitlich über den Kreis und die Dioden registrieren dies. Der zeitliche Abstand zwischen dem ersten und letzten Signal wird gemessen. Der Abstand zum Sender kann dann mit r=(s/t)/(2*PI*f) bestimmt werden, wobei f die Frequenz des Senders, s der Durchmesser des Empfängers und t der zeitlich Abstand der Signale ist. Die Signale zu Messen ist kein Problem. t liegt im höheren µs-Bereich (je nach f). Des sollte für einen µC kein Problem sein. Bei 12 Dioden sind rechnerisch bei einer Entfernung von 2m max. 10cm Toleranz drinnen. Bei 20 Empfängerdioden sind es nur noch 2,5 cm (f muss aber dabei sehr exakt sein!) Wer es genauer will, kann einfach den Kreis vergrößern und noch mehr Dioden draufsetzten. Wer eine häufigere Aktualisierung wünscht muss nur die Frequenz erhöhen.

Stefan

Hallo Stefan ein interessanter Ansatz.
Die Dioden müssten aber, wenn ich das richtig verstehe, einen großen Empfangswinkel haben, wenn sie kreizförmig angeordnet sind, müssten ja die Dioden, die nur tangiert werden, möglichst auch noch was empfangen. Wenn das klappt, hat man so also den Abstand zum Sender.
Wie würdest du die Richtung ermitteln? Codieren oder die Dioden, die am meisten empfängt?

sigo

StEndres
25.04.2006, 19:33
Hallo sigo. Um die Richtung zu ermitteln bräcuhte man zwei Sender. Nur anhand der Empfängerdioden könnte es auch gehen, aber nur sehr ungenau. Zwei oder mehr Sender sind da net so der Stress. Die braucht man sowieso für größere Gebiete. Echtes Kopfzerbrechen macht mir, wie du richtig erkannt hast, der Einfallswinkel der Dioden. Es sollte dringend so sein, dass die äußerersten Dioden etwas empfangen. Es würde zwar auch mit einem anderen Paar gehen, also weiter "innen" liegenende Dioden. Wichtig ist nur, dass ihre Verbindungslinie im rechten Winkel zur Sender-Empfängerlinie ist. Für die äußeren Dioden sind Abweichungen relativ unkritisch (hängt mim cos zusammen). Bei anderen wird der mögliche Fehler größer. Muss ich später mal durchrechnen.

Stefan

sigo
25.04.2006, 20:20
Hallo sigo. Um die Richtung zu ermitteln bräcuhte man zwei Sender. Nur anhand der Empfängerdioden könnte es auch gehen, aber nur sehr ungenau. Zwei oder mehr Sender sind da net so der Stress. Die braucht man sowieso für größere Gebiete. Echtes Kopfzerbrechen macht mir, wie du richtig erkannt hast, der Einfallswinkel der Dioden. Es sollte dringend so sein, dass die äußerersten Dioden etwas empfangen. Es würde zwar auch mit einem anderen Paar gehen, also weiter "innen" liegenende Dioden. Wichtig ist nur, dass ihre Verbindungslinie im rechten Winkel zur Sender-Empfängerlinie ist. Für die äußeren Dioden sind Abweichungen relativ unkritisch (hängt mim cos zusammen). Bei anderen wird der mögliche Fehler größer. Muss ich später mal durchrechnen.

Stefan

Hallo Stefan, Wenn man für jede Diode ein Paar bestehend aus 2 parallelen Dioden nimmt, die 90% zueinander stehn, als wenn sie auf die Zähne eines Sterns/Zahnrads montiert wären, würde es auf jeden Fall gehn, dann bekäme eine Diode immer das Licht aus besser als 45°. Bei Planaren Pindioden ist dann die Empfindlichkeit noch nicht so schlecht (ebenfalls cosinus oder so). Allerdings wär man da schon bei 2x 12 Dioden..

Warum willst du eigentlich die Entfernung so messen? Wenn man ohnehin eine Map der Sender braucht, kann man sich ja auch auf den Winkel beschränken und nur eine Rundumdiode (bestehend aus z.B. 4 Dioden) nehmen.

Alternative zu so vielen Dioden:
Wie wäre es mit einem Kreis/Stern/Zahnrad aus einer dicken Plexiplatte als Lichtsammler (leitet Plexi Infrarot?)

Wenn man in der Mitte in einer Bohrung die Fotodiode anordnet, würde wahrscheinlich immer etwas in die Mitte geleitet. Von oben könnte man die Scheibe mit einem Blech gleich gegen Sonnenlicht abschirmen.

Alternativ Spiegelkabinett..

Just a thought

Sigo

StEndres
26.04.2006, 07:00
Genial wäre es natürlich, wenn man Längen mit Winkelmessung kombiniert. Dann bräuchte man nur einen Sender und hätte eine genaue Position. Ich denke aber, dass des mit der Winkelmessung auf größere Entfernungen (so 3-5m) schon zemlich ungenau wird, außer du drehst dich in 0,1° Schritten. Dies würde dann aber nur langsam gehen. Aber Prinzipiell wäre es ein coole Möglichkeit.
Bei derm Problem mit der Anordnung der DIoden würde ich dann wohl auf Doppeldioden setzten. Bei 30ct pro Stück net so tragisch. 7€ sind schon noch drinnen. Eine Diode würde net langen. Man braucht ja auch ein Endsignal. Außer, man teilt die Scheibe in vier Teile. Des würde gehen. Nur ob Plexiglas dafür geeignet ist...?

Stefan

ManniMammut
26.04.2006, 19:56
Hallo Sigo!
Sorry, dass ich erst jetzt antworte, aber ich musste erst noch ein paar Sachen mit meinen JuFo-Kollegen klären ;-)
Wenn Du willst, kann ich dir ja mal die 15seitige "Dokumentation" bzw. Projektbeschreibung zu unserem Projekt schicken.

Manni

sigo
27.04.2006, 22:06
Hallo Sigo!
Sorry, dass ich erst jetzt antworte, aber ich musste erst noch ein paar Sachen mit meinen JuFo-Kollegen klären ;-)
Wenn Du willst, kann ich dir ja mal die 15seitige "Dokumentation" bzw. Projektbeschreibung zu unserem Projekt schicken.

Manni

Sehr gern Manni: silbergold @ surfeu.de (ohne spaces)
Danke

sigo
27.04.2006, 22:26
Genial wäre es natürlich, wenn man Längen mit Winkelmessung kombiniert. Dann bräuchte man nur einen Sender und hätte eine genaue Position. Ich denke aber, dass des mit der Winkelmessung auf größere Entfernungen (so 3-5m) schon zemlich ungenau wird, außer du drehst dich in 0,1° Schritten. Dies würde dann aber nur langsam gehen. Aber Prinzipiell wäre es ein coole Möglichkeit.
Bei derm Problem mit der Anordnung der DIoden würde ich dann wohl auf Doppeldioden setzten. Bei 30ct pro Stück net so tragisch. 7€ sind schon noch drinnen. Eine Diode würde net langen. Man braucht ja auch ein Endsignal. Außer, man teilt die Scheibe in vier Teile. Des würde gehen. Nur ob Plexiglas dafür geeignet ist...?

Stefan

Die Idee mit den im Kreis angeordneten Sensoren (Sensorpaaren) gefällt mir zunehmend. Den Abstand müsste man ziemlich genau und auch recht schnell verfolgen können. Auch die Richtung aus der der Strahl auf den Bot trifft, sollte sich sehr genau ermitteln lassen und so Infos zur Orientierung liefern. Wahrscheinlich kann man damit auch sehr gut z.B. bestimmte Strecken abfahren, wie z.B. eine bestimmte gerade Stecke usw.

Der Bot weiß also wie weit der Sender weg ist.
In Welcher Richtung der Sender sich bez. auf die Fahrtrichtung des Bots befindet.
Mit diesen Infos kann der Bot z.B. wahrscheinlich eine gerade Bahn fahren (Tangente oder Sekante) durch den Kreis, den der Sender übersteicht. Oder auch eine gespeicherte Bahn fahren, wenn man ihn zuvor auf den Start setzt.

Nur weiß der Bot nicht, in welchem Winkel vom Sender aus, er sich befindet, also in welche Richtung er fährt. Hierfür müsste er entweder zeitlich synchtonisiert sein, die codierte Winkelposition gesendet bekommen oder einen 2. Sender haben. Oder aber einen Kompass Sensor. Bei einem definierten Startplatz und Winkel für den Rasenmäher müsste das Verfahren aber auch ohne Kompass funktionieren.


Mit der Übertragung des Winkels könnte man eine Absolutposition bestimmen. Die Kombination mit den kreisförmigen Sensoren hätte den Vorteil, dass man dann mit 1 Sender auskäme und da man ja eine Länge misst, tatsächlich ohne externe Infos die Absolutposition bestimmen kann. Bei einen Winkelmessungen muss man ja die Länge aus einem eigenen Wegsensor oder einer Map holen..

Interessantes Thema

Gruß Sigo


I

StEndres
28.04.2006, 12:13
Hi Sigo. So langsam kann ich mir echt vorstellen, dass daraus was wird. Des müssen wir unbedingt mal aufbauen.
Wenn man nur einen Sender hat oder will ist es das geschickteste den Sendewinkel und die Frequenz zu übertragen. Vielleicht 4 Bytes insgesamt. Ich denke, dass man eh über eine Lichtschranke und eine Streifenfolie die Geschwindigkeit des Motors vor dem Getriebe messen muss, um die Frequenz zu bestimmen. Dann muss man am Sender nur noch einen Startwinkel mit 0° eichen man hat zwei Probleme aufeinmal gelöst. Dann sollte auch die Winkelauflösung kein Problem sein. Der Empfänger bildet sich halt dann einen Mittelwert vom ersten und letzten empfangenen Winkel. Dann noch die Längernmessung und fertig ist ein System zur absoluten Positionsmessung. Wenn wir unseren Sender mit 10 Hz laufen lassen und etwa 50µs für einen Sendeblock brauchen, dann können wir immerhin auf 0,18° auflösen. Auf 5m Entfernung wäe damit sicherlich eine Abweichung <5cm drinnen, sowohl in der Läöngen- als auch in der Winkelmessung. Und mehr als 10 Messwerte brauchst du ehr net. Dann muss der Bot halt mal langsamer fahren.
Oder du baust auf den Sender gleich noch eine Diode drauf, die in die andere Richtung strahlt wie die erste und eigens angesteuert wird. Dadurch könnte man die Frequenz beibehalten, erhält aber doppelt soviele Messwerte, falls dein Bot extrem Zeitkritisch arbeitet.

Stefan

Ich hab etz keine Ahnung, ob des alles so klappt, wie wir uns des denken.