Absender: Timo Sandmann
Datum: So, 31.08.2008 23:08:42
In-reply-to:
<000001c90b9c$40ced3f0$0200a8c0@mexpnew>
References:
<000001c90b9c$40ced3f0$0200a8c0@mexpnew>
Hallo, Am 31.08.2008 um 21:03 schrieb Frank Menzel:
Hallo Timo,also die Benutzung der Routine selbst habe ich schon verstanden und dasssie bei map_wa_free Sinn bringt. Aber wie Du beschreibst " alle 20 cm mit map_get_ratio() nachfragt" gibt es ja dieses Ereignis "Bin jetzt 20cm" seit vorhin gefahren gar nicht und müsste selbst berechnet werden in dem Verhalten. Und dieses gibt es ja auch nicht: " und von letzter Abfrage bis 20 cm weiter"
das Verhalten kann ja einfach immer prüfen, wie weit es seit dem letzten Check gefahren ist und wenn das 20 cm sind, map_get_ratio() aufrufen, sobald die Map frei ist. So ähnlich macht das Scan-Verhalten das ja auch.
Denn der Routine kann man ja nur die Koordinaten selbst, neben der Breite und den Werten, übergeben. Wie wäre es mit dem Parameter "x cmvoraus gucken in Richtung des 2. Punktes" ? Also nicht direkt immer dengesamten Korridor bis zum 2. Punkt sondern eben nur die 20cm voraus.
Aber du willst doch die ganze Strecke prüfen und nicht nur einen Punkt.
Dir ist sicherlich der Timer von 700ms ein Dorn im Auge, deswegen wohlder Vorschlag. Ja man könnte sicherlich aller gefahrenen 20cm nur nachnebenan nachsehen aber wie oben erwähnt habe ich nicht dieses Ereignis"bin jetzt 20cm" gefahren. Gut man könnte das Verhalten für 20cm Fahrenaufrufen, dann nebenan die Bahnen checken und wieder 20cm fahren,dadurch wird aber wieder alles sequentiell. Ich fand eben die parallelenObserver so schön...
Nein s.o., einfach immer parallel prüfen, ob die 20 cm schon rum sind.
Mir ist da noch gerade beim Übersetzen eine Warnung in der map.c ins Auge gefallen: ../map.c: In function `map_read': ../map.c:1292: warning: long unsigned int format, size_t arg (arg 2)../map.c:1292: warning: long unsigned int format, unsigned int arg (arg3) An der Stelle:printf("Konnte nur %lu Bytes lesen, Karte ist aber %lu Bytes gross! \n",cnt, (size_t) ((MAP_SIZE * MAP_RESOLUTION) * (MAP_SIZE* MAP_RESOLUTION)));
Oh danke, kommt bei mir nicht, liegt wohl an der Größe von size_t. War etwas unklug, den Typ zu verwenden.
Gruß Timo