Absender: Frank Menzel
Datum: Mo, 21.05.2007 20:27:08
In-reply-to:
<5EBE6A5E-FA0D-4F71-A283-67AB69B9C6D3@xxxxxxxxxxxxxxx>
Hallo, in bot_turn ist ein Fehler drin, der sich folgendermaßen äußert: Standardmäßig ist ja bot_solve_maze eingeschaltet und läuft sofort los. Im Standardlab dreht der bot sich ja dadurch zuerst. Ich habe dies sofort abgebrochen via Notaus-Funktion, den bot dann manuell irgendwohin gefahren und mein Verhalten (map_go_destination) gestartet, welches sich zuerst immer zum Endzielpunkt (sprich Bot-Ausgangsposition) ausrichtet via bot_turn. Doch komischerweise hört oftmals die Drehung schon vorher auf, obwohl der Zielpunkt noch gar nicht angepeilt wird. Dem bin ich nachgegangen und habe festgestellt, dass wenn man via Notaus das bot_turn-Verhalten mittendrin abbricht (also noch nicht ordnungsgemäß Drehung beendet hat), so behalten die static-Variablen den letzten Wert. Ein anderes Verhalten ruft nun bot_turn auf und die Variablen haben weiterhin den alten Wert ohne bei neuem Aufruf neu initialisiert zu werden und die Drehung ist nicht so wie sie sein sollte, d.h. hört vorher auf. Hier muss auf jeden Fall die Deklaration der static-Var old_heading aus der behaviour-Routine rausgenommen werden und zusätzlich in der Botenroutine mit old_heading=-1; initialisiert werden (so wie eigentlich auch direkt vor return_from_behaviour). Eigentlich müsste die Statusvar ebenfalls init. Werden mit turnState=NORMAL_TURN; Gruß, Frank Menzel