Absender: Timo Sandmann
Datum: Mo, 13.10.2008 23:42:54
In-reply-to:
<000001c9232b$04ef0930$0200a8c0@mexpnew>
References:
<000001c9232b$04ef0930$0200a8c0@mexpnew>
Hallo,das Pfadplanungsverhalten ist jetzt im SVN. Außerdem hat sich der Positionsstack zum Positionsspeicher gewandelt, im Wesentlichen besteht die Neuerung in einer effizienten FIFO-Implementierung. Im Pfadplanungsverhalten habe ich noch ein paar TODOs eingefügt (siehe Code) zu den Dingen, die mir so beim ersten Durchschauen aufgefallen sind.
Was mir noch nicht so ganz klar geworden ist: Wird jede Zelle auf dem Weg zum Ziel in der FIFO einzeln vermerkt? Wenn z.B. zehn aufeinanderfolgende Zellen auf einer Geraden liegen, bräuchte man ja nur Start- und Zielzelle eintragen, um Speicher zu sparen und außerdem ein flüssiges Fahrverhalten zu erreichen.
Mit Maussensor funktioniert das Verhalten (im Sim) sehr gut (wenn die Umgebung in der Karte eingetragen ist - logisch).
Ein Problem ist allerdings, dass Hindernisse, die nicht in der Karte vermerkt sind, nicht erkannt werden und der Bot dann crasht. Es ist schon klar warum, schön wäre es natürlich, wenn vom Distanzsensor zur Fahrtzeit erkannte Hindernisse auch berücksichtigt würden oder es in diesem Fall eine neue Planung gäbe auf der Grundlage der dann aktuelleren Map. Hier sind wir dann aber schnell wieder beim ungelösten Thema mit den Notfallverhalten bzw. deren Interaktion mit anderen Verhalten.
Grüße, Timo Am 30.09.2008 um 20:33 schrieb Frank Menzel:
Hallo,anbei mal mein Vorschlag für ein Pfadplanungsverhalten, welches hier jaschon grundsätzlich beschrieben wurde: http://www.heise.de/ct/projekte/machmit/ctbot/wiki/NeueVerhalten Das Handling ist folgendes:Man fährt den Bot rum und lässt ihn die Welt entdecken. Auf dem eigenenScreen kann man an beliebiger Stelle die Taste 5 drücken und er sollte dann den Weg zum Startpunkt finden und anfahren. Um einen anderen Zielpunkt auf der Karte zu definieren, kann das Ziel neu festgelegt werden durch die Taste 8 und somit gilt die aktuelle Botposition als anzufahrendes Ziel. Im Sim funktioniert es bei mir recht gut und findet die meisten Pfade. Ach so, hier ist die Stackerweiterung mit bei, die im Mailverkehrbesprochen wurde, nur leider eben noch als Array-Version (was der Sacheerst mal keinen Abbruch tut). Auch gilt hier erst einmal „nur“ die 4er-Nachbarschaft, d.h. er fährt nur gerade Wege und keine Schrägen.Als technischen Hintergrund habe ich in der der behaviour_pathplaning.cfolgendes eingetragen:* @brief Wave-Pfadplanungsverhalten; eine niedrigaufloesende Map wirdueber die hochaufloesende gelegt und * auf dieser folgende Schritte ausgefuehrt: * -Innerhalb des wirklich benutzten Mappenbereiches wird jede Zelle durchlaufen und falls der Durchschnittswert* der Hochaufloesenden Map < 0 ist (Hinderniswert) hier eingetragen mitWert 1 * -anzufahrende Zielposition erhaelt Mapwert 2 * -ausgehend von Zielposition laeuft eine Welle los bis zum Bot-Ausgangspunkt, d.h. von 2 beginnend erhaelt jede Nachbarzelle * den naechst hoeheren Zellenwert * -wird als ein Nachbar die Botposition erreicht, wird der Pfad zurueckverfolgt und immer die Zelle mit kleinerem Wert gewaehlt;* die Zellenkoordinaten werden als Weltkoordinaten auf den Stack gelegtund kann nun abgefahren werden Happy Pfadplanen :-) Gruß, Frank <pathplaning.txt>_______________________________________________ ct-bot-entwickler Mailingliste ct-bot-entwickler@xxxxxxxxxxxxxxxxx http://www.heise.de/bin/newsletter/listinfo/ct-bot-entwickler