c't

c't-Projekte - Mailinglisten


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

AW: [ct-bot] Erweiterung Pfadplanung

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