PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : In die Ecke fahren



Jasmine
24.03.2006, 09:01
Hallo,

Ich habe das Ziel einen kleinen Roboter in eine Ecke zu fahren (um sich automatisch aufzuladen etc...) Der Gedanke ist, dass der Roboter schräg in die Ecke fährt bis er an die Ecke stößt. Es ist davon auzugehen, dass die Ecke einen 90 Grad Winkel bildet.
Der Roboter besitzt 6 Abstandssensoren im 60 Grad Winkel in alle Richtungen.
Hat jemand eine Idee wie man das am besten macht? Zuerst sich an einer Wand orientieren, entlangfahren bis man an die Ecke kommt, dann 45 Grad reindrehen und nochmal gerade aus?
Oder von der aktuellen Position ein Rundumbild machen und abhängig von dem Bild einen Wegplan entwickeln?

Bin gespannt auf eure Ideen!
Gruß

Der Gärtner
24.03.2006, 10:31
Ich hab da nen ganz anderen Ansatz... Nimm doch eine Bake / leuchtturm ! Also einen IR-Tower mit ~36kHz Frequenz und einen Empfänger am Robo. Auf www.the-starbearer.de ist das beschrieben. Die Ultraschalldinger sind dann halt zum erkennen der mauern gut wenn er nah genug dran ist. der vorteil an dem System ist, dass es von überall im Raum geht, solange sichtkontakt exisitiert. Und der Empfänger braucht auch nur einen Port...

24.03.2006, 10:47
Hm vielleicht sollte ichs etwas genauer erklären. Der Robo weiss schon, dass er in der Gegend einer Ecke ist durch so eine IR Bake.
Ziel ist es jetzt nur aus diesem "Eckgebiet" wo er sich nun befindet sozusagen an die Ecke anzudocken. Und zwar so, dass die linke Robo Seite die linke Wand und die rechte entsprechend die andere berührt. Damit werden dann per Magnet 2 Kontakte verbunden. (Jeder an jeweils einer Wand)
Es ist also wichtig, dass der Robo genau die Ecke findet und drauf lossteuert.
Der Robo hat schon einen IR Empfänger und 6 Abstandssensoren wobei 3 nach vorne und 3 nach hinten strahlen (natürlich versetzt)

Vogon
24.03.2006, 13:00
Mein Tip:
Mach es so wie man es seit über tausen Jahren kennt.
Mit einer Bake bzw Leuchturm.
Der Baken-Sender erstellt zwei Signale.
Das eine Signal ist zB. Kurz mit langer Pause, das ander ist Lang mit kurzer Pause. (..geht auch mit zwei Farben)
Wenn du dann auf den Leuchturm zufährst und das kurze Signal siehst, bist du zuweit links, beim Langen zu weit rechts. Nur wenn du ein Dauersignal sehen kannst bist du auf dem richtigen Kurs.

So ähnlich macht das auch mein Rasenmäher wenn er seine Ladestation sucht.

24.03.2006, 13:27
Hallo Vogon,

Deine Idee hört sich gut an allerdings bin ich mir nicht ganz sicher ob ichs genau verstehe. Die Bake verwendet 2 Leds mit unterschiedlicher Modulation, wobei das eine Signal in die eine, das andere in die andere Richtung strahlt - nur genau in der Mitte überlappen sich diese.
Ich stelle es mir nur etwas problematisch die 2 IR signale richtungsmässig zu gut zu trennen. Aber so ist das Prinzip oder?

Weitere Frage zu deinem Rasenmäher. Dockt dieser direkt mit Kontakten an oder wird da der Strom induziert?

Gruß

Vogon
24.03.2006, 14:55
Ja, du hast es richtig verstanden.
Das ist eine Blinkschaltung, wenn eine LED an geht, geht die andere aus. Beim Sender strahlen beide in die gleiche Richtung aber dazwischen eine Trennwand.

Der Rasenmäher hat eine "Nase" mit Kontakten die er in seine Ladestation steckt.
http://www.automower.de/assets/images/db_images/db_AM_04_Bilder_neu_-_071.jpg

Das Andocken macht der aber mit drei Induktionsschleifen in der Bodenplatte.
Die eine, das F-Signal hat eine Reichweite von ca 5 Meter und soll den Mäher suzusagen anlocken. Die beiden N-Signale steuern dann die Einfahrt und habe nur eine Reichweite von etwa einem Meter und sind in der rechten bzw linken Hälfte der Bodenplatte.
http://img103.imageshack.us/img103/3981/testposition5rq.png

Hier hab ich auch schon mal was dazu geschrieben: https://www.roboternetz.de/phpBB2/viewtopic.php?p=85023#85023
http://www.razyboard.com/system/thread-schleifensignale-corsatimo-923427-2742353.html

SprinterSB
24.03.2006, 16:31
Mit des Abstandssensoren geht so was nicht?

1) Um 45° drehen und ein Rundumbild machen mit Abständen alle 15°
2) Jede Mauer sieht beim Drehen aus wie ein Sekans (http://de.wikipedia.org/wiki/Sekans). Das Minimum ist der Abstand zur jeweiligen Wand.
3) Selbst bei einer Auflösung von nur 15° sollten die beiden Minima in den Messwerten erkennbar sein. Sie sind dadurch ausgezeichnet, daß sie in einem Winkel von 90° +/- 15° zueinander stehen. Man könnte elso erst den kleinsten Abstand bestimmen und dann bei den Werten um +90° und um -90° relativ dazu das zweite Minimum suchen.
4)Sind m1 und m2 die beiden Minima, fährt man in Richtung r(m1)+r(m2). Dabei ist das die Vektorsumme aus den Richtungen zu m1 und m2, die Länge von r(x) ist proportional zum Abstand x.

Jedenfalls käme das mit Bordmitteln aus und sollte auch nicht so schwer zu programmieren sein.

Jasmine
26.03.2006, 11:56
Ich denke SprinterSB deine Lösung ist doch die beste. Die Bakenidee ist zwar nicht schlecht, nur 2 IR Signale so gut getrennt abzustrahlen stell ich mir nicht so ganz einfach vor und man müsste das erstmal aufbauen.
Allerdings ist es vielleicht doch besser ein Rundumbild nur mit einem Sensor zu machen, da man dadurch systematische Fehler der verschiedenen Sensoren schonmal ausschliessen könnte.
Ich kann das alles leider erst morgen testen - Sorge bereitet mir auch wie präzise das drehen abläuft. Es handelt sich um die Roboter Jasmine 3 - zu sehn unter www.swarmrobot.org.
Ich werde morgen berichten ob es tut!

Danke für die Antworten!

SprinterSB
26.03.2006, 22:17
Mein Verfahren ist recht ungenau, weil du damit nicht die Richtungen von m1 bzw m2 findest, sondern noch einen recht großen Fehler drinne hast.
Evtl ist folgendes besser:

1) Drehe den Robbi so hin, daß ein minimaler (möglichst kleiner) Abstand m1 auftritt (Minimum über alle Sensoren bzw, über 360°)

m1 zeigt recht gut auf eine Wand, m2 ist ziemlich genau (bis auf Messfehler) senkrecht dazu. Blöderweise kannst du m2 nicht bestimmen, ohne nocmal zu drehen (oder hast die Werte irgendwo gemerkt).


Das Verfahren kann man ja iterieren, also messen, fahren, messen, ...

Würd mich mal interessieren, ob das geht :-)

Jasmine
28.03.2006, 17:44
Hallo,

Konnte nur ein paar Tests machen - zu viel mehr bin ich leider noch nicht gekommen. Trotzdem hat man gleich mal einiges an Problemen erkannt... Problem Nr. 1 sind die Ungenauigkeiten bei Drehbewegungen - die sind wirklich fürchterlich - da verhält sich jeder Roboter relativ anders. Also um +90, dann -90 Grad drehen endet im Chaos falls man nicht wieder misst wo man ist. Noch dazu fahren die Dinger nicht allzu gut geradeaus und kleinwinklige Drehungen kann man ganz vergessen.

Ich werde morgen mal versuchen mich an einer Wand entlangzuhandeln, denn parallel fahren kann man vergessen. Also immer einen Abstand unterschreiten, drehen&fahren bis wieder ein anderer Überschritten wird usw. - also Zig-Zack Fahrt.
Irgendwann sollte man in der Ecke angekommen sein und müsste dann "nur noch" um 45 Grad drehen...
Falls das nicht klappt werde ich mal versuchen wie/ob man präzise 360° drehen kann (theoretisch ja bis wieder der gleiche Messwert erreicht wurde...)
Wenn das klappt sollte deine Lösung eigentlich fast die einfachste/billigste sein...

Gruß

Jasmine
07.04.2006, 12:49
Hallo SprinterSB,

Ich hab dein Verfahren mal getestet und es ist eigentlich nicht schlecht!
Hier mal ein kleines Video dazu.
http://w3studi.informatik.uni-stuttgart.de/~jebenskf/j01.avi

Wie man besonders im zweiten Versuch sieht gibts noch ziemliche Probleme beim letzten Anfahrschritt - liegt besonders an der sehr ungenauen Drehung der Roboter. Besonders gut geradeaus fahren die leider auch nicht - die Odometrie soll aber besser werden.
Bei der letzten Drehung wird momentan so lange gedreht bis die Entfernungswerte wieder grössen werden, da dann die Ecke theoretisch von rechts nach links abgetastet sein müsste. Leider hat der Hauptstrahl immer noch einen Öffnungswinkel von ca 20 Grad daher passt Theorie und Praxis oft nicht allzu gut zusammen ;-)

Gruß