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: Di, 31.03.2009 21:39:42
In-reply-to: <000801c9b227$680868a0$0200a8c0@mexpnew>
References: <000801c9b227$680868a0$0200a8c0@mexpnew>


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Frank,

Am 31.03.2009 um 19:37 schrieb Frank Menzel:
Hi Timo,
da fehlt dann wieder leider die Debugausgabe um abzulesen, nach wie viel
Versuchen und mit welchem Radius er letztendlich den Weg gefunden hat.
Er versucht zuerst mit Radius 30, um bei nicht gefundenem Pfad diesen zu
verringern, um dann einen möglichen Weg zu finden.

ich habe die Debug-Ausgabe mal ergänzt:
http://www.heise.de/ct/projekte/machmit/ctbot/attachment/ticket/185/Pfadplanung-Bug.txt

Geplant hat er richtig, nur die Hindernisse eben nicht richtig mit 1
belegt und daher einen Weg durch die Wand gefunden.

Ja genau und das verstehe ich nicht, weil die entsprechenden Hindernisse in der Karte wirklich sehr deutlich (also sehr wahrscheinlich -> richtig schwarz in der Karte) sind. Dass man irgendwo einen Schwellwert festlegen muss ist klar und wenn das Verhalten dann an einer Stelle, wo die Hinderniswahrscheinlich sehr nah am Schwellwert ist, falsch plant, könnte ich das verstehen, aber hier eben nicht. In dieser Karte muss das Hindernis auf jeden Fall erkannt und berücksichtigt werden, deutlicher kann es ja eigentlich gar nicht mehr in der Karte stehen.

Möglicherweise
müsste man auch das Setzen eines Hindernissumkreises etwas ausweiten im
Onlinescan, so dass die Hindernisse breiter werden.

Ich denke, die sind jetzt eher schon zu groß als zu klein. Im konkreten Beispiel ist das Hindernis ja als durchgehende Linie eingetragen, das muss auf jeden Fall erkannt werden, egal wie groß der Radius beim Eintragen ist.

Andererseits könnte
man auch beim Planen map_way_free einsetzen von Pfadpunkt zu Pfadpunkt, um so einen zu geringen Abstand zu einer Wand auszuschliessen und einen
anderen möglichen Pfadpunkt zu nehmen.

Aber warum, der Planer soll doch in seiner Karte nur Wege finden, die map_way_free() eh als frei melden würde. Wenn die Pfadplanungskarte korrekt ist und überall dort, wo map_way_free() ein Hindernis meldet, eine 1 eingetragen ist, braucht man map_way_free() ja (für diesen Zweck) nicht mehr.

Doch dann würde der Mapzugriff
stark frequentiert sein, wobei dies im Sim andererseits fast egal sein
sollte zumal dies auf dem echten ja wohl doch nicht so funktioniert
oder?

Für die Planungsphase ist das ziemlich egal denke ich, wenn das Planungsverhalten zwei Sekunden braucht, bis es mit planen fertig ist und der Bot losfahren kann, stört das ja nicht wirklich.

Wie konnte man eigentlich diesen .map-Parcour reinladen?

Mit dem Parameter -m DATEINAME, also z.B. Debug-XXX/ct-Bot -m ../ct- Sim-devel/maps/testparcours4-clean.map

Die übergebene Datei wird dann auch für den Export verwendet, falls man die Map vom Bot aus exportiert.

Gruß,
Timo

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Darwin)

iEYEARECAAYFAknScX0ACgkQDH/BX4067fKSaQCgpx0H51IxyCRo061FigmgiKZh
6GYAoLfbWu+lgEwCBPWf+De09uzsMfot
=bR1d
-----END PGP SIGNATURE-----