Karl heinz Buchegger schrieb:
Hallo,
also getLeftInterval und getRightInterval geben einfach die
Zeitabstände, in Millisekunde, zwischen zwei Signale der jeweiligen
Encoder.
getSpeed gibt mir die Geschwindigkeit zurück, in Schritte pro Sekunde,
die ich dem Roboter gegeben habe.
Die doMotorAction wird in der Hauptschleife aufgerufen.
> Nach weiterem Codestudium glaube ich herausgelesen zu haben, dass das
> Prinzip so aussieht: Nimm die Encoderdifferenz zum letzten gemessenen
> Zeitpunkt her, rechne das in eine Geschwindigkeit um. Aus der Differenz
> zur Sollgeschwindigkeit errechnet sich eine Korrektur der PWM, so dass
> die Geschwindigkeit konstant gehalten wird.
>
> Das würde ich so gar nicht machen. Und zwar aus dem Grund, weil du auf
> diese Art eine nachhängende linke oder rechte Seite zwar wieder auf
> Sollgeschwindigkeit bringst, du gleichst dadurch aber niemals den
> vrolorengegangenen Weg (wegen der kurzfristig zu niedrigen
> Geschwindigkeit) aus.
>
> Da du den aktuellen Zeitpunkt kennst, kennst du auch den Encoderwert,
> der eigentlich vorliegen müsste. Der aktuelle Enocederwert mag geringer
> sein, als er nach dieser Betrachtung eigentlich sein müsste. UNd dann
> wird die PWM demenstprechend erhöht. Dein Nachregeln darf nicht auf den
> Geschwindigkeiten basieren, sondern auf den links und rechts laut
> Encodern zurückgelegten Wegen. die müssen gleich sein und die PWM
> nachgestellt werden wenn sie es nicht sind. Nicht die Geschwindigkeiten.
> Die sind dafür uninteressant.
OK, aber ich versuche gerade das zu machen: sind die Werte von Encoder
nicht wie ich erwarte, dann versuche ich die PWM zu ändern.
Das Problem dabei ist nur, daß ich diese PWM nicht richtig berechnen
kann, bestimmt weil ich die Formel nicht kenne und meine
Mathe-Kenntnisse etwas begrenzt sind.
Was würdest du mir vorschlagen?
Danke
Luca Bertoncello