Absender: Timo Sandmann
Datum: So, 03.06.2007 17:18:12
In-reply-to:
<000201c79bd5$a09e80b0$fe78a8c0@mexpnew>
References:
<000201c79bd5$a09e80b0$fe78a8c0@mexpnew>
Hallo, Am 21.05.2007 um 20:26 schrieb Frank Menzel:
...Dem bin ich nachgegangen und habe festgestellt, dass wenn man via Notausdas bot_turn-Verhalten mittendrin abbricht (also noch nichtordnungsgemäß Drehung beendet hat), so behalten die static- Variablen denletzten 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 ausder behaviour-Routine rausgenommen werden und zusätzlich in derBotenroutine mit old_heading=-1; initialisiert werden (so wie eigentlichauch direkt vor return_from_behaviour).
ich habe gerade mal die vorhandenen Verhalten auf das von Frank beschriebene Problem hin untersucht, die folgenden Verhalten sind davon betroffen und sollten geändert werden:
bot_drive_square bot_follow_line bot_goto bot_gotoxy bot_olympic::bot_explore bot_olympic::bot_do_slalom bot_simple bot_solve_maze bot_solve_maze::bot_check_wall bot_solve_maze::bot_measure_angle bot_turnAußerdem ist mir bei bot_goto() noch etwas sehr seltsames aufgefallen, als Initialisierung passiert dort:
/* Encoder zuruecksetzen */ sensEncL=0; sensEncR=0;Das ist IMHO aber gar nicht gut, weil dadurch u.a. die Positionsberechnung nicht mehr stimmen dürfte. Vielleicht sollten wir bot_goto() komplett löschen und stattdessen nur noch bot_gotoxy() verwenden?
Viele Grüße, Timo