c't

c't-Projekte - Mailinglisten


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

Re: [ct-bot] Merkwuerdiges verhalten mit Speedcontrol

Absender: Timo Sandmann
Datum: Do, 09.11.2006 02:44:48
In-reply-to: <45522BCF.6060409@xxxxxx>


Am 08.11.2006 20:11 Uhr schrieb "Achim Pankalla":

> hallo,
> mir ist ein merkwuerdiges verhalten beim realen ct-bot mit Regler
> (SPEED_CONTROL_AVAILABLE) aufgefallen. ich denke, das das bei jeden bot
> auftreten muesste und waere dankbar, wenns mal jemand ausprobiert.
> es ist bei mir ganz einfach zu reproduzieren. man fährt einfach mit der
> taste 2 der fb ein stueck vor und laesst ihn dann auf der stelle mit zb.
> 4 oder 9 drehen. beim ersten drehen, wird der bot dann um ein rad
> herumfahren und nicht mit beiden raedern auf der stelle drehen. ersten
> beim zweiten mal drehen macht er dies.
> anders rum. dreht man erst den bot und faehrt dann vorwaerts, so faehrt
> der bot einen leichten bogen und beim zweiten mal gerade aus.
> ich habe etwas im code gewurstelt und denke es liegt an den variablen,
> die sich die letzten encoder impulse merken. ich habe ein patch
> beigefuegt, mit dem dies "fehl"-verhalten korregiert ist. es stellt für
> mich persoenlich keine optimale loesung da, zeigt aber wirkung. rein
> subjektiv ist das fahrverhalten nun genauer und mein getestetes
> solve_maze verhalten arbeitet nun zuverlaessiger.
> 
> allen weiterhin viel spass
>    achim pankalla


Hallo,
ja das ist richtig, der Fall wird im derzeitigen Code nicht abgedeckt.
Die Motorregelung erfährt zurzeit eine komplette Überarbeitung, bei der
neuen Version wird der Fall gar nicht mehr entstehen können.
Für die aktuelle Version korrigiert der Patch den Fehler, wenn ich das
richtig sehe, ist er aber gegen eine alte CVS-Version erstellt.
Ich glaube, es müsste auch schon ausreichen, wenn man einfach im
if(encoderTargetRateL == 0)-Zweig die Encoderstände speichert und eventuell
speed_control() am Ende von motor_set() zusätzlich aufruft.

Viele Grüße,
Timo Sandmann