c't Projekte - c't-Bot und c't-Sim - Mailinglisten
Absender: Timo Sandmann
Datum: Mi, 03.06.2009 17:19:57
In-reply-to:
<B6710E63-8CAE-4156-AA99-F888FE91CB34@xxxxxxxxxxxxxxx>
References:
<000601c9e154$c42129e0$0200a8c0@mexpnew> <B6710E63-8CAE-4156-AA99-F888FE91CB34@xxxxxxxxxxxxxxx>
Hallo,kurz zur Information: Mit dem aktualisierten Bot-Code sollte sich der Bot jetzt in jedem Simulationslauf identisch verhalten, wenn die EEPROM-Emulation (EEPROM_EMU_AVAILABLE) AUSgeschaltet ist. Sobald man die EEPROM-Emulation aktiviert, hängen die Fahrverhalten immer von den Werten ab, die in der EEPROM-Datei stehen und verhalten sich somit nicht jedes Mal gleich.
Falls jemand in diesem Fall trotzdem noch Unterschiede feststellt, bitte melden.
Grüße, Timo Am 01.06.2009 um 15:44 schrieb Timo Sandmann:
Hi Frank, Am 30.05.2009 um 20:30 schrieb Frank Menzel:Hi Timo, sind nicht immer dieselben Strecken, die er in gleicher Reihenfolgegenauso abfährt wie im Lauf zuvor. Aber ist das nicht normal? Ich dachte schon. Erklärt habe ich's mir dadurch, dass er manchmal nah an eine Wandfährt und der Punkt daneben eben manchmal noch als anfahrbar gilt undmanchmal nicht, je nachdem wie er die Hindernisse gesehen und in die Map eingetragen hat. Und bei bot_turn richtet er sich zum Ausrichten auf denZielpunkt ja wohl gewollt auch nie ganz genau mit diesem Winkel aus(habe ich jedenfalls noch so aus einer Mail von Dir aus vergangener Zeitin Erinnerung). Und ist ein Punkt der anzufahrenden Strecke nichtanfahrbar aber der andere, dann fährt er eben zuerst die Strecke von deranderen Seite an.da hast du aus Sicht des Verhaltens völlig Recht und genau so wird es auch auf dem echten Bot ablaufen. Aus Sicht des Simulators ist es aber ein wenig anders. Der Sim bekommt in jedem Zeitschritt die Eingangsdaten vom Bot (z.B. wie schnell die beiden Motoren drehen) und berechnet daraus alle Sensordaten, die er an den Bot schickt. Diese Sensordaten sind nicht 100%ig exakt, aber die Berechnung ist immer dieselbe, also ist auch der (systembedingte) Fehler immer gleich. Jeder Bot mit derselben Vergangenheit bekommt also auch dieselben Sensordaten vom Sim, egal wann dieser Durchlauf stattfindet. Wenn das Verhalten auf dem Bot jetzt keine zufälligen Teile enthält, wird es aus den Sensordaten auch immer dieselben Fahrbefehle ermitteln. Und daher müsste auch drive_area() im Sim immer dieselben Bahnen abfahren. Da das aber offensichtlich nicht der Fall ist, scheint mir hier im Sim oder Bot- Framework ein Bug zu sein, der eine Abhängigkeit von irgendwelchen externen Umständen erzeugt.Gruß, Timo