Absender: Frank Menzel
Datum: Sa, 28.03.2009 14:12:27
In-reply-to:
<D44EF5BD-7CCD-408E-A31A-E68A6FFD45C4@xxxxxxxxxxxxxxx>
Hallo Timo, zu 1.) Die Planung findet ja nicht den kürzesten Weg sondern eben nur einen Weg. 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. 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. Die Verteilung der Wellenwerte auf die niedrigauflösende Planungsmap (Taste 6) sollte da aussagekräftiger sein. Zu 2.) Die rote Linie geht ja oben durch die Mauer. Was ist oberhalb? 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... Erst mal so weit... Gruß, Frank -----Ursprüngliche Nachricht----- Von: ct-bot-entwickler-bounces@xxxxxxxxxxxxxxxxx [mailto:ct-bot-entwickler-bounces@xxxxxxxxxxxxxxxxx] Im Auftrag von Timo Sandmann Gesendet: Freitag, 27. März 2009 20:13 An: Entwicklung rund um den c't-bot Betreff: Re: [ct-bot] Erweiterung Pfadplanung -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi Frank, Am 27.03.2009 um 13:24 schrieb Frank Menzel: > Hallo, > habe das Pfadplanungsverhalten erweitert um die Möglichkeit, nur auf > bereits befahrenem Gebiet zu planen. Ebenfalls habe ich dieses > erweitert > um die 8er-Nachbarschaft, d.h. der bot kann nun auch schräge Wege > fahren. Ist MAP_2_SIM_AVAILABLE eingeschaltet, wird nun ebenfalls > mittels roter Linien der berechnete Pfadweg in der Map visualisiert. sehr gut, ich habe das auch gerade mal ausprobiert und bin dabei auf zwei Dinge gestoßen: 1.) Warum plant das Verhalten hier: http://www.heise.de/ct/projekte/machmit/ctbot/attachment/wiki/MLAttachme nts/Pfadplanung_debug_1.jpg so einen Umweg? Ich meine die dritte Planung, die in der Karte zu sehen ist, die beiden kurzen Geraden sind ja klar. Die Debug-Ausgabe des Planungsverhaltens sieht bis zu diesem Zeitpunkt so aus: http://www.heise.de/ct/projekte/machmit/ctbot/attachment/wiki/MLAttachme nts/Pfadplanung_debug_1.txt 2.) Wenn der Bot nun weiterfährt, kommt es zu folgender Planung durch eine (bekannte) Wand: http://www.heise.de/ct/projekte/machmit/ctbot/attachment/wiki/MLAttachme nts/Pfadplanung_debug_2.jpg Die Log-Ausgabe hierzu: http://www.heise.de/ct/projekte/machmit/ctbot/attachment/wiki/MLAttachme nts/Pfadplanung_debug_2.txt Da läuft doch irgendwie etwas falsch, oder? Außerdem noch zwei andere Sachen: Im Code des Planungsverhaltens stehen ja noch einige ToDo-Punkte (ich glaube teilweise sind sie von mir), inwieweit sind die eigentlich noch aktuell bzw. überhaupt sinnvoll? Ich habe da nicht mehr so den Überblick. Einiges waren glaube ich nur so Dinge, die mir auffielen, als ich den Code durchgelesen hatte, unter Umständen sind die längst überholt oder von vorn herein unsinnig gewesen? Du hattest (nur zu Debug-Zwecken denke ich) im Planungsverhalten access_field() vom Map-Code benutzt. Es hat aber durchaus seinen Grund, warum diese Funktion eigentlich nicht von außen zugänglich ist: Die Funktion ändert globale Variablen und darf deshalb nicht parallel aufgerufen werden, sonst kann es zu erheblichen Inkonsistenzen in der Map kommen. Auf einem Einprozessorsystem ist das recht unwahrscheinlich, aber möglich und auf einem Mehrprozessorsystem sehr wahrscheinlich. Wenn man mit solchem Debug-Code die eigentlichen Datenstrukturen zerstört, bekommt man durch das Debugging anstatt der gewünschten zusätzlichen ganz schnell falsche Informationen. Wie gesagt, ist inzwischen überholt, weil es jetzt ja die Visualisierung mit den roten Linien gibt (sehr praktisch, dass du das in die Pfadplanung eingebaut hast!), ich wollte nur darauf hinweisen, weil das schnell zu unerklärlichen Bugs führt. Grüße, Timo -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (Darwin) iEYEARECAAYFAknNJUcACgkQDH/BX4067fJt1ACdFqneuimW/7CjFXweaX7zEo6j NlEAoIWgcJeQAZZf2H875/aIpdBWWb4q =qhrM -----END PGP SIGNATURE----- _______________________________________________ ct-bot-entwickler Mailingliste ct-bot-entwickler@xxxxxxxxxxxxxxxxx http://www.heise.de/bin/newsletter/listinfo/ct-bot-entwickler