c't

c't-Projekte - Mailinglisten


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

Re: [ct-bot] Bug in bot_turn...

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 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).

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_turn

Auß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