c't

c't-Projekte - Mailinglisten


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

Re: [ct-bot] neues Verhalten bot_drive_line_shortest_way...

Absender: Timo Sandmann
Datum: Mi, 14.01.2009 20:34:06
In-reply-to: <000001c97676$154cc120$0200a8c0@mexpnew>
References: <000001c97676$154cc120$0200a8c0@mexpnew>


Hi Frank,

Am 14.01.2009 um 19:29 schrieb Frank Menzel:
Hallo Timo,
habe gerade mal ausgecheckt und wunderbar!

sehr gut :-)

Was war denn eigentlich nun das Problem, weshalb es bei Dir nicht ging?

In der Funktion timer_ms_passed() war ein Bug, so dass sie teilweise False geliefert hat, obwohl sie hätte True liefern müssen. Dadurch wurden Richtungsänderungen beim Linienfolger nicht nur für 150 ms blockiert, sondern deutlich länger (die 150 ms waren längst um, aber timer_ms_passed() hat immer noch false geliefert) und daher ist der Bot zu weit von der Linie weg gefahren. Die spannende (und unbeantwortete) Frage ist nun aber, warum das Problem bei dir nicht dazu geführt hat, dass der Bot so weit von der Linie weg fuhr, dass er umgedreht hat. Da ich aber genau dasselbe Verhalten hatte, wenn ich nicht nur den einen, sondern auch noch vier weitere Bots in die Simulation gesteckt habe, gibt es hier IMHO einen Bug im Sim, denn dasselbe Verhalten (es war ja sogar dasselbe Bot- Binary) darf sich in derselben Welt nicht anders verhalten bzw. andere Sensordaten bekommen, je nachdem, wie viele Bots im Sim aktiv sind. Ebenso darf es auf einem anderen Rechner nicht andere Daten bekommen. Woran genau das liegt, weiß ich nicht, der Verdacht, das Simulationsschritte übersprungen werden, wenn zu viele Bots aktiv sind, hat sich auf jeden Fall als falsch erwiesen. Der Bot bekommt auch dann, wenn der Sim-Bug zuschlägt, alle Datenpakete mit der richtigen Zeit (immer eine um 10 ms größere Simulationszeit). Scheinbar bekommt er aber andere Sensordaten, denn sonst würde sich der Linienfolger ja nicht anders verhalten. Da ist IMHO also immer noch ein (ziemlich tiefgreifender) Bug im Sim, vermutlich bekommt das Verhalten bei dir auch jetzt noch andere Sensordaten als bei mir. Da es aber recht robust ist (auf dem echten Bot messen die Liniensensoren natürlich auch nicht immer dasselbe), fällt das so nicht weiter auf. Und wenn es wirklich so ist, wie ich gerade vermutet habe, dann kann das Problem jederzeit an anderer Stelle wieder auftreten und so unerklärliche Unterschiede liefern. Bei mir hat es als Workaround geholfen, TR hoch zu stellen, damit verschwand das Problem dann, aber bei dir gab es damit ja keinen Unterschied.
Wie gesagt, die Ursache für das Ganze ist mir noch völlig unklar :-/

Grüße,
Timo