c't Projekte - c't-Bot und c't-Sim - Mailinglisten

c't-Bot und c't-Sim


[Voriger (Datum)] [Nächster (Datum)] [Voriger (Thread)] [Nächster (Thread)]
[Nach Datum][Nach Thread]

Re: [ct-bot] Erweiterung Pfadplanung

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#Pfadplanung
beschriebene 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 jeweils
kleinere Wellenwert genommen und dieser weiter rückverfolgt, wobei immer der zuerst gefundene genommen wird-also auch wenn alle anderen identisch
sind. 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 einbringen
koennen, um eben genau diese Zelle zu nehmen. Jedenfalls denke ich, dass
eben dadurch die Richtung, die nicht unbedingt die zum Ziel kürzeste
ist, verfolgt wird, bis ein kleinerer Wellenwert wieder die Richtung zum
Ziel 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 (Taste
4) 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-----