PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : IR/US-Baken zur exakten Indoor-Positionsbestimung



Felix G
09.08.2009, 21:42
Hallo Leute, ich habe eine Idee...


IR-Baken werden ja allgemein ganz gerne genutzt wenn ein Roboter z.B. eine Ladestation finden soll oder Ähnliches. Leider ist die absolute Positionsbestimmung im Raum mit derartigen Baken recht schwierig, zumindest wenn man eine hohe Genauigkeit erreichen möchte.


Daher mein Vorschlag wie man günstige Baken konstruieren könnte, die eben genau das möglich machen sollen. Prinzipiell müsste man dazu lediglich eine IR-Bake mit einem US-Sender kombinieren und 2 identische Signale absenden, aus dem Laufzeitunterschied kann jeder Roboter der sich in Sicht- und Hörweite befindet direkt seinen Abstand zur Bake bestimmen.

Das Signal selbst sollte so gestaltet sein, daß sich mehrere Baken nicht gegenseitig stören können (was natürlich auf Empfängerseite etwas mehr Aufwand bei der Signalverarbeitung bedeutet), was dieses Problem betrifft kann man sich etwa von UMTS inspirieren lassen. Im Klartext heisst das, man Kombiniert das Originalsignal mit unterschiedlichen Gold- oder OVSF-Codes... tadaa, schon lassen sich die Signale mehrerer Baken vom Empfänger sauber trennen (auch wenn alle gleichzeitig auf der gleichen Frequenz senden).

Was mir an diesem Ansatz gefällt ist, daß der Empfänger garnicht wissen muss aus welcher Richtung die Signale kommen, denn ihn interessiert ja nur die Laufzeit. Man hat also grundsätzlich immer, und vor allem unabhängig von der Orientierung des Roboters, die Abstände zu allen sichtbaren Baken zur Verfügung und muss sich daher zur Positionsbestimmung nicht mit 360° Schwenks oder Ähnlichem aufhalten.


Lasst mal hören, was ihr dazu denkt.

Besserwessi
09.08.2009, 22:02
Die Idee ist nicht ganz neu und sicher machbar. Das unterscheiden der Barken sollte relativ einfach sein, indem die Baken versetzt senden, also immer nur eine zur Zeit. Im IR Signal kann man dann auch gleich die Nr. des Senders mit drinhaben. Bein US Signal sollte man ohnehin besser etwas dazwischen warten, damit eventuelle Echos abgeklungen sind.

Solange man einigermaßen freie Sicht hat, und ein näherungsweise ebenes Glände sollten 2 Sender Ausreichen, bis auf eventuelle Doppeldeutigkeiten. Die werden aber in der Regel weit ausserhalb liegen, wenn die Baken am Rand des interessanten Feldes stehen.

rockin_santa
10.08.2009, 19:06
Genau an so einem System arbeite ich gerade für meinen Bot :-)
Mein Bot spricht jede Bake einzeln mit einem anderen IR-Signal an und wartet auf dessen US-Antwort. Aus der Laufzeit dreier Signale läßt sich der Standort berechnen. Wie hoch die Genauigkeit der Position ist, wird sich zeigen.
Allerdings kennt der Bot dann die eigene Ausrichtung noch nicht, die andersweitig ermittelt werden muss.

Hessibaby
11.08.2009, 09:26
Wenn Du zwei US-Empfänger (Ohren) verwendest kennst Du auch die Ausrichtung im Raum.

Felix G
13.08.2009, 08:28
Ok, also gibt es da eigentlich keine Probleme wenn man sicherstellen kann daß sich die Baken nicht gegenseitig stören.


Ich habe aber noch eine Idee, wie man dieses System erweitern kann...

Wie gehabt senden alle Baken ihre ID synchron per IR und US, soweit so gut. So, und jetzt bekommen die Baken selbst nochmal einen Empfänger (wenn sie nicht sowieso schon einen haben) und unterhalten sich untereinander. Jede Bake soll jetzt den Abstand zu jeder anderen von ihrer Position sichtbaren Bake berechnen, und anstatt sich auf die eigene ID zu beschränken sendet jede Bake eine ganze Liste mit den IDs aller anderen Baken die sie sehen kann (und den Abständen zu diesen Baken), wenn jetzt eine Bake diese Liste empfängt kann sie ihre eigene wiederum um Baken erweitern zu denen sie keinen direkten Sichtkontakt hat usw...

Resultat:
Der Bot erhält nicht nur seinen eigenen Abstand zu den für ihn gerade sichtbaren Baken, sondern zusätzlich dazu so etwas wie eine Karte mit allen Baken und deren Abständen untereinander. Meiner Meinung nach könnte man das dann z.B. für die Routenplanung einsetzen, denn wenn der Bot genau weiss welche Baken sich gegenseitig sehen können, kann er auch einen oder mehrere mögliche Pfade von Bake A zu Bake B berechnen, und sich dann etwa für den kürzesten entscheiden.

rockin_santa
13.08.2009, 14:09
Über die Option der "Bakenunterhaltung" habe ich auch schon nachgedacht. Je nach Anzahl kommt da eine ganze Menge Kommunikation zusammen, was natürlich Arbeit bedeutet, aber kein Problem ist.
Diese Technik ist dann sinnvoll, wenn man plant, mit seinem Bot und einer Hand voll Baken in eine fremde Umgebung zu gehen. Bei gleichbleibenden Standorten der Baken weiß ich nicht, ob nicht der Aufwand der Programmierung gepaart mit der zusätzlichen Technik größer ist, als händisch die Orte der Baken zu vermessen und dem Bot diese dann als Daten mit auf den Weg zu geben.
Da der Bot aber idR. nicht von Bake zu Bake fährt, sondern sich allgemein im Umfeld aufhält, muss er nicht wissen, welche Baken sich "sehen" können.

Generell ist das eine gute Idee die es Wert ist, umzusetzen. Ich nehme mal an, Du planst etwas in der Richtung für Deinen Bot? Würde mich interessieren, wie das läuft.

Besserwessi
13.08.2009, 18:05
Die baken sollten das Senden schon syncronisieren. In der Regel aber wohl so, das zur Zeit immer nur einer Sendet. Die Syncronisation kann man in der Regel wohl auch über das IR Signal machen können. ZU mindest wenn die Baken sich gegenseitig sehen können. Welche Baken man sehen kann wird der Bot schon selber merken. Was man an Info bräuchte wäre der Abstand zu den Baken in der Umgebung.

Die Datenübertragung wird man wohl nur per IR machen, da hat man keine Probleme mit Echos und solltemehr Datenrate hinkriegen.
Die Daten zur Position der Baken müssen ja auch nicht so schnell gesendet werden, schließlich sollten die ja eher ortsfest sein. Da reicht es dann wohl aus, wenn ein Datenpaket aus der Baken ID, einer Zeit und 1-2 Bytes der Positionsdaten besteht. Bei den mit den einfachen IR Empfängern möglichen 2 kBauds, kann man 4 bytes in 20 ms Übertragen. Schneller wird man die US Pulse wohl kaum senden können.

Wenn man als Beispiel 5 Baken hätte, hätte man von jeder Bake aus 4 Abstände. Dafür sollte man mit je 2-3 bytes auskommen. Die Gesamten Daten die eine Bake senden muss wären also nur 8-12 Bytes. Das könnte man dann in etwa 6 Paketen a 2 bytes versenden, einer Zeit im untern Sekundebereich entsprechen sollte. Selbst wenn man dazu noch Winkelinformatione verschickt wäre es recht schnell das der Bot weiss wo die Baken stehen.

Felix G
13.08.2009, 22:16
Da der Bot aber idR. nicht von Bake zu Bake fährt, sondern sich allgemein im Umfeld aufhält, muss er nicht wissen, welche Baken sich "sehen" können.Naja, jein...
Angenommen der Bot hat erstmal überhaupt keine Ahnung von seiner Umgebung, aber die Aufgabe eine bestimmte Bake zu erreichen (z.B. weil sein Akku leer und diese Bake eine Ladestation ist), dann kann er immer einen sehr kurzen Weg zu seinem Ziel berechnen, falls er die Daten für das gesamte "Baken-Netz" kennt.

Man könnte mit diesen Informationen sogar noch weit mehr anstellen...
Nehmen wir die gleiche Situation, ein Bot in einer unbekannten Umgebung und eine Handvoll Baken, die man mehr oder weniger willkürlich verteilt hat. Jetzt hat der Bot erstmal kein vorgegebenes Ziel, sondern er fährt einfach mal in irgendeine Richtung los. Wenn er nun seine Odometriedaten mit den Daten für das Baken-Netz abgleicht, ist er in der Lage die Positionen der Baken in irgendeinem beliebigen Koordinatensystem zu berechnen. Und damit ist es dann auch kein Problem mehr die Baken z.B. in eine Umgebungskarte einzutragen. Das wiederum ermöglicht dem Bot seine eigene Position zu bestimmen, und das völlig ohne Zutun seines Herrchens.

Anders ausgedrückt: setz den Bot irgendwo aus und er wird in kürzester Zeit eine erste einfache Umgebungskarte (größtenteils ohne Wände/Hindernisse, aber das ist erstmal egal) erstellt, und seine eigene Position in dieser Karte berechnet haben. Er muss also nicht erst die ganze Wohnung "scannen", sondern findet den Weg von einem beliebigen Punkt A zu einem beliebigen anderen Punkt B auch so.



Generell ist das eine gute Idee die es Wert ist, umzusetzen. Ich nehme mal an, Du planst etwas in der Richtung für Deinen Bot? Würde mich interessieren, wie das läuft.Momentan habe ich noch keine konkreten Pläne sowas tatsächlich zu bauen. Es ist erstmal nur eine Idee die ich hatte, von der ich dachte sie sei es wert hier diskutiert zu werden ;)