c't Projekte - c't-Bot und c't-Sim - Mailinglisten
Absender: Timo Sandmann
Datum: Sa, 28.03.2009 15:56:25
In-reply-to:
<000001c9afa6$d78c5520$0200a8c0@mexpnew>
References:
<000001c9afa6$d78c5520$0200a8c0@mexpnew>
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi Frank, Am 28.03.2009 um 14:12 schrieb Frank Menzel:
Hallo Timo, zu 1.) Die Planung findet ja nicht den kürzesten Weg sondern eben nur einen Weg.
das war mir bisher nicht bewusst, steht das irgendwo? Der unter http://www.heise.de/ct/projekte/machmit/ctbot/wiki/NeueVerhalten#Pfadplanungbeschriebene Algorithmus findet immer einen (es kann allerdings mehrere gleich lange geben) kürzesten Weg zum Ziel, sofern es denn einen gibt. Ich dachte diese Methode wäre auch im Verhalten implementiert?
Die Logausgabe ist da eigentlich nicht viel aussagekräftiger, um diesem auf die Spur zu kommen. Eine Welle geht ja von einer Zelle aus, wobei alle Nachbarzellen den gleichen erhöhten Wellenwert bekommen. So geht’s weiter bis zum Ziel. Wenn dann die Pfadrückverfolgung losgeht, dann wird immer in gleicher Richtung rund um die Zelle der jeweilskleinere Wellenwert genommen und dieser weiter rückverfolgt, wobei immer der zuerst gefundene genommen wird-also auch wenn alle anderen identischsind. So muss diese Zelle nicht unbedingt die in Richtung Ziel naheste sein.
Das ist klar, aber das verlängert den Weg zum Ziel nicht, wenn man den o.g. Algorithmus benutzt. Von jeder Zelle mit gleichem Wert ist das Ziel gleich weit entfernt. Die Werte in den Zellen (mit Ausnahme denen für Hindernisse) geben jeweils die Entfernung (eines befahrbaren Weges) zum Ziel an, das ist ja die Idee hinter dem ganzen Verfahren.
Prinzipiell muesste man auch die Distanzfunktion einbringenkoennen, um eben genau diese Zelle zu nehmen. Jedenfalls denke ich, dasseben dadurch die Richtung, die nicht unbedingt die zum Ziel kürzesteist, verfolgt wird, bis ein kleinerer Wellenwert wieder die Richtung zumZiel weist.
s.o.
Die Verteilung der Wellenwerte auf die niedrigauflösende Planungsmap (Taste 6) sollte da aussagekräftiger sein.
Ah ok, das werde ich noch mal ausprobieren.
Zu 2.) Die rote Linie geht ja oben durch die Mauer. Was ist oberhalb?
Na das sieht man doch in der Sim-Welt, oder was meinst du?
Soll der Weg rechts der 2. Teil des Weges sein? Wo ist das Planungsziel?Mit welcher Taste hast Du geplant, also nur auf befahrenem Gebiet (Taste4) oder 5? Bei 4 sollte eigentlich alles nicht befahrene auf Hindernis stehen und die Planung da nicht langgehen, bei Taste 5 würde man die Welelnwerte direkt sehen...
Ich habe einfach bot_drive_area() aufgerufen. Ich denke drive_area() setzt diesen Zielpunkt, weil der Bot dort noch nicht war (ist aber mitten in der Wand, was das Verhalten ja nicht wissen kann). Nur müsste die Pfadplanung doch feststellen, dass es keinen Weg dorthin gibt, oder? Der vom Planungsverhalten ermittelte Weg (sofern die rote Linie stimmt) kann auf jeden Fall nicht sein, weil er durch ein Hindernis führt. Darum crasht der Bot dort ja auch.
Gruß, Timo -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (Darwin) iEYEARECAAYFAknOOpgACgkQDH/BX4067fK5xACg4tdSjB/RF7rSjEFt+j4Vc/O/ FOIAnjw8X9++dF4DS5IoXUbml3RDvAil =raYS -----END PGP SIGNATURE-----