Hallo ihr :)
Ich habe eine etwas spezielle Frage:
Mein Ziel ist es, zwei Roboter so auszustatten, dass einer dem anderen
folgen kann (dabei ist einer immer der Verfolger und einer immer der
"Voranläufer"). Später soll der "Voranläufer" auch durch einen Menschen
ersetzt werden.
Ich brauche also eine Möglichkeit, die relative Position von einem
Roboter zum anderen herauszufinden (das System kann ruhig auf beide
Roboter verteilt werden, es kann also z.B. ein Empfänger, Tag oder
ähnliches am Voranläufer angebracht sein. Die Haupteinheit sollte aber
auf dem Verfolger installiert werden können.
Die Reichweite soll bis zu 2 Meter betragen können, eine Genauigkeit von
10 - 30 cm sollte reichen. Das System sollte überall anwendbar sein (es
dürfen keine fixen Sender irgendwo installiert werden).
Ich habe mir schon verschiedene Verfahren angeschaut und viel im Forum
hier gelesen, hier meine bisherigen Ergebnisse:
Für mich am sinnvollsten erscheint es, zwei Abstandsmessungen
vorzunehmen und durch Triangulation die Position zu berechnen.
(1) GPS/DGPS: Ersteres ist zu ungenau, das zweite ebenfalls (bzw. bei
angemessener Genauigkeit weit außerhalb des Budgets).
(2) IR/Ultraschall: Schwer umzusetzen. Genauigkeit reicht, aber man
bräuchte eine sehr umfangreiche Einheit auf dem voranlaufenden Roboter,
was wiederum nicht geht.
(3) RFID: Ebenfalls teuer, außerdem habe ich das Verfahren zur
Abstandsmessung nicht ganz verstanden.
(4) Mechanische Abstandsmessung: Scheidet aus praktischen Gründen aus.
(5) Rotierende Abstandsmessung: Ein optischer Abstandsmesser dreht sich
z.B. 10 Mal in der Sekunde um sich selbst und zeichnet bei jeder
Umdrehung ausreichend viele Abstände auf. Zuerst wird dem Verfolger
gezeigt, was er verfolgen soll, und aus dem Abstandsbild wird dann nach
jeder Umdrehung die neue relative Position ermittelt. Eher umständlich
und nicht leicht umzusetzen, aber theoretisch machbar.
Vielleicht kennt ihr noch andere Verfahren / Möglichkeiten, die schon
genannten Verfahren besser umzusetzen? Würde mich über alle Anregungen
freuen.
RTK GPS mit ublox m8t sollte für einstellige centimeter genauigkeit
reichen.
Ansonsten hatte hier im forum jemand schonmal die decawave dw1000
vorgestellt, die vielleicht auch eine interessante möglichkeit wären
(aber base stations wären wohl nötig).
> IR ... aber man bräuchte eine sehr umfangreiche Einheit auf dem> voranlaufenden Roboter
Wieso kannst du da keine Retroreflektoren nehmen. Wie einen
Radarreflektor oder so eine Art Warnweste, die IR reflektiert?
Vielleicht Nutzung der Hardware aus einem Wii-Controller?
Diese "Sensorbar" in klein nachbauen (besteht nur aus ein paar IR-LEDs)
und am Voranläufer befestigen. Im Verfolger dann die Elektronik aus dem
Controller. Wobei ich nicht weiß, ob der auch den Abstand kennt oder nur
Ausrichtung und Position in Quer- und Hochrichtung.
Wie wäre es optisch?
Am entfernten Roboter wird ein eindeutiges Muster aus mehreren
Referenzpunkten angebracht, das wird mit einer Kamera erfasst und aus
dem Abstand der Referenzpunkte untereinander kann die Distanz berechnet
werden.
Um Achsenprobleme (nichtrechtwinklige Betrachtung) auszuschließen,
könnte das Referenzpunktmuster aus in gleichmäßigem Abstand angebrachten
Markierungen auf einem ringförmigen Träger bestehen. Der Ring umschließt
den Roboter und ist in Kamerahöhe angebracht.
Somit ist, egal aus welcher Richtung auf den Roboter geblickt wird,
immer ein Muster wie dieses zu sehen:
1
# # # # # # # # # # # #
Der größte Abstand zweier nebeneinanderliegenden Markierungen
kennzeichnet die Stelle, die dem messenden Roboter am nächsten zugewandt
ist.
Mit etwas Trigonometrie ist daraus der Abstand zum messenden Roboter
bestimmt.
Um sicherzustellen, daß auch wirklich die richtigen Markierungen erfasst
werden, können diese --ausreichende Auflösung des Kamerasystems
vorausgesetzt-- z.B. um vertikal angeordnete Barcodes mit fortlaufender
Numerierung ergänzt werden.
Damit wäre auch geklärt, aus welchem Winkel auf den Roboter geblickt
wird.
Erstmal vielen Dank für die schnellen Antworten, auch noch in der Nacht
;)
> Wieso kannst du da keine Retroreflektoren nehmen. Wie einen> Radarreflektor oder so eine Art Warnweste, die IR reflektiert?
Die einzige Möglichkeit wäre ja, am Verfolger zwei IR-Emitter und
Sensoren anzubringen, die zum gleichen Punkt am Voranläufer den Abstand
messen, um dann nicht nur den Abstand, sondern auch die Richtung
ermitteln zu können.
Da sich der Voranläufer aber unvorhergesehen bewegen kann messen die
IR-Elemente dann nur nutzlose Werte, weil ihnen der Punkt ja abhanden
gekommen ist.
Ich müsste ja wenn dann in der Lage sein, die IR-Emitter auf einen immer
gleichen Punkt auszurichten, um die Position zu erhalten. Dann hätte ich
aber ja schon eine Positionsbestimmung und bräuchte die IR-Elemente
nicht mehr.
Oder habe ich einen Denkfehler?
> Vielleicht Nutzung der Hardware aus einem Wii-Controller?
Ich fürchte, die arbeiten nur mit Beschleunigungssensoren und
wahrscheinlich noch einem Gyroskop, und übermitteln die Daten dann an
die Konsole.. Kann mir kaum vorstellen, dass die Bewegungen relativ zur
Konsole gemessen werden...
> Wie wäre es optisch? [...]
Für kurze Zeit habe ich daran auch gedacht, habe es aber direkt als zu
aufwändig abgetan. Die Idee mit Markierungen (evtl. Barcodes) ist zwar
machbar, mit der Anwendung in der Zukunft aber eigentlich nicht zu
vereinbaren.
Ich bin bei etwas Recherche auf OpenCV gestoßen, das wohl auch andere
Muster erkennen kann (wenn man es trainiert vielleicht auch Roboter /
Menschen?). Damit könnte man dann (wenn es funktioniert) auch optisch so
eine "Ortung" sehr gut durchführen.
Hat damit jemand Erfahrung, oder kennt vielleicht noch andere ähnliche
open source Projekte?
Hans Müller schrieb:> Ich fürchte, die arbeiten nur mit Beschleunigungssensoren und> wahrscheinlich noch einem Gyroskop, und übermitteln die Daten dann an> die Konsole.. Kann mir kaum vorstellen, dass die Bewegungen relativ zur> Konsole gemessen werden...
Nö, tun sie nicht.
In der WiiMote steckt eine Kamera, die die Position der IR-LEDs im
WiiBar (?) erkennt, auswertet und so dann die Zeiger-Position auf dem
Fernseher steuert.
Dazu gibt es schon diverse Projekte im Internet zu finden.
Deine Aufgabenstellung hatten mal eine Projektgruppe an unserer FH.
Die konnten auf einen SICK-Sensor zurückgreifen.
Der wie deine Lösung (5) funktioniert.
Hans Müller schrieb:> (5) Rotierende Abstandsmessung: Ein optischer Abstandsmesser dreht sich> z.B. 10 Mal in der Sekunde um sich selbst und zeichnet bei jeder> Umdrehung ausreichend viele Abstände auf. Zuerst wird dem Verfolger> gezeigt, was er verfolgen soll, und aus dem Abstandsbild wird dann nach> jeder Umdrehung die neue relative Position ermittelt. Eher umständlich> und nicht leicht umzusetzen, aber theoretisch machbar.
Allerdings arbeitet der Sensor nur in einem Kreissegment.
Hans Müller schrieb:>> Vielleicht Nutzung der Hardware aus einem Wii-Controller?>> Ich fürchte, die arbeiten nur mit Beschleunigungssensoren und> wahrscheinlich noch einem Gyroskop, und übermitteln die Daten dann an> die Konsole.. Kann mir kaum vorstellen, dass die Bewegungen relativ zur> Konsole gemessen werden...
Beides. Der Wii-Controller (Wiimote) enthält eine kleine IR-Kamera, die
die IR-LEDs in der "Sensorbar" (ein etwas irreführender Name, da dort
kein Sensor enthalten ist) erkennt.
Hier sieht mam z.B., wie man die Wiimote für 3D-Headtracking benutzen
kann: https://www.youtube.com/watch?v=Jd3-eiid-UwRufus Τ. F. schrieb:> Wie wäre es optisch?>> Am entfernten Roboter wird ein eindeutiges Muster aus mehreren> Referenzpunkten angebracht, das wird mit einer Kamera erfasst und aus> dem Abstand der Referenzpunkte untereinander kann die Distanz berechnet> werden.
So funktioniert im Prinzip die Wiimote. Billiger als da dürfte man sowas
nicht bekommen.