Absender: Benjamin Benz
Datum: Di, 20.05.2008 13:08:07
In-reply-to:
<48C139945BA47F4DB4DE05DF62CD57AA03B4D1CD8B@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
References:
<48C139945BA47F4DB4DE05DF62CD57AA03B4D1CCC0@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> <483299C9.9030900@xxxxxxxx> <48C139945BA47F4DB4DE05DF62CD57AA03B4D1CD8B@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Hi,
so ganz verstehe ich nicht, wieso die Routinen nicht zugänglich sein sollen. Oder gibt es andere Cache-Äquivalente, die benutzt werden sollten von aussen ?
Hierfür gibt es verschiedene Gründe:1. brauchen Schreibzugriffe die MMC exklusiv ==> Der Cache kümmert sich um das Locking 2. Haben Schreibzugriffe bisher den Bot so ausgebtremst, dass wir sie nun Cachen 3. Wollten wir der übersichtlickkeithalber das Interface auf das absolute Minimum beschränken -- was nicht heißt, dass man es nun einzeln wieder erweitern kann.
In einem Verhalten habe ich ja nur die Bot x/y-Weltkoordinaten. Wenn ich auf Mapebene arbeiten will, muss ich diese umrechnen können in Mapkoordinaten, um z.B. den Abstand zum nächsten Hindernis laut Map berechnen zu können.Unserer Idee nach sollte all sowas außerhalb der Map in Real-Koordinaten eerfolgen, weil das die übersichtlichkeit/Verständlichkeit erhöht.
Hier stellt sich die Frage was für Werte denn in die Karte einzutragen sind und ob die Map der geeignete Ort für solche Daten ist. Wenn es solche gibt wäre der eleganteste Weg die aktualisierung über die Cache-Strukturen vorzunehmen.Will ich einfach nur einen Wert innerhalb der Map auf einen bestimmten Wert setzen, brauche ich auch set_field...
Mein Verständnis der Map war bisher nicht die Umgebungskarte als Schönheit in der hohen Auflösung zu haben, sondern diese eigentlich zu nutzen für intelligente Aufgaben.
Völlig klar.
Und dazu brauche ich nach außen nutzbare Mapfunktionen...
Nun einige (lesende) sind ja nach außen verfügbar: map_get_average() map_get_point() map_way_free()wir hatten noch über eine weitere Funktion nachgedacht: map_get_lowest() -- damit ließe sich prüfen, ob im umkreis mindestens ein Loch vorhanden ist.
Mit diesen vier Routinen sollte sich eigentlich fast alles machen lassen. Wobei zu bedenken ist, dass es sich ja ohnehin um eine stochastische Karte handelt, also eigentlich primär die average-Routine wichtig ist.
Oder was habe ich jetzt nicht verstanden ?
Wenn ich den alten Code und diese Diskussion hier richtig interpteire geht es darum, ob und wie Zusatzinfornationen zur wegplanung etc. in die Karte eingetragen und wieder ausglesen werden können.
Die derzeitige Organisation der Karte eignet sich (leider) kaum, um "Notizen" mit in die Karte zu schreiben.
Gründe dafür:a) Jedes Feld in der karte hat nur 8 Bit, die derzeit wie folgt interpretiert werden: <0: das Feld ist wahrscheinlich nicht frei (Der Betrag istv ein Maß für die Wahrscheinlichkeit) >0: das Feld ist wahrscheinlich frei (Der Betrag istv ein Maß für die Wahrscheinlichkeit)
0: keine Information über das Feld vorhanden -128: Feld ist ein AbgrundBis auf den letzten Fall sind alles wahrscheinlichkeiten, auch die 0 kann als solche interpretiert werden. Bei den Löchern/Abgründen haben wir eine Ausnahme gemacht.
Würde man weitere Sonderfälle über feste Werte abbilden, klappt das Updaten der Karte nicht mehr sinnvoll oder führt zu Flickwerk.
Wenn Metainformationen gewünscht sind, sehe ich folgende Optionen:a) wir erweitern die Karte um ein (oder mehr) zusätzliche Bytes für jedes Feld. Das hätte ein paar unschöne Nebeneffekte auf unser Performance-tuning und würde die Karte erheblich vergrößern/verlangsamen. Dafür könnte man dann sauber Kartendaten und Marker trennen b) Wir reduzieren die Bittiefe der Map, um ein paar Bit für Informationen freizubekommen. Das kostet Information (aber keine Performance) und ermöglicht dennoch probalistische Karten UND eine Trennung von Karte und Metainfo. c) Metainformationen, Marker etc, kommen in eine eigene "Karte", die dann vielleicht auch mit viel niedrigerer Auflösung auskommt
MfG Benjamin Benz -- Benjamin Benz Heise Zeitschriften Verlag Redaktion c't eMail: bbe@xxxxxxxx WWW : http://www.heise.de Heise Zeitschriften Verlag GmbH & Co. KG Registergericht: Amtsgericht Hannover HRA 26709 Persönlich haftende Gesellschafterin: Heise Zeitschriften Verlag Geschäftsführung GmbH Registergericht: Amtsgericht Hannover, HRB 60405 Geschäftsführer: Ansgar Heise, Steven P. Steinkraus, Dr. Alfons Schräder