c't Projekte - c't-Bot und c't-Sim - Mailinglisten
Absender: Timo Sandmann
Datum: Fr, 27.03.2009 20:13:11
In-reply-to:
<000001c9aed7$0c43ee70$0200a8c0@mexpnew>
References:
<000001c9aed7$0c43ee70$0200a8c0@mexpnew>
-----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 aufbereits befahrenem Gebiet zu planen. Ebenfalls habe ich dieses erweitertum 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/MLAttachments/Pfadplanung_debug_1.jpgso 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/MLAttachments/Pfadplanung_debug_1.txt2.) 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/MLAttachments/Pfadplanung_debug_2.jpg Die Log-Ausgabe hierzu: http://www.heise.de/ct/projekte/machmit/ctbot/attachment/wiki/MLAttachments/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-----