207a
<< <> >>

207

Die Programmiersprache Forth
home
Dieses Programm koordiniert Prozesse, die in gegenseitig verschiedenen Tempi ablaufen: Sie beginnen gleichzeitig, laufen gleichmäßig und sind zur gleichen Zeit fertig.

Roboterarm mit (z.B.) fünf Motoren

Der Vorsitzende der Forth-gebruikersgroep bastelte an einem Roboterarm mit fünf Schrittmotoren (zwei in der Schulter, einer im Ellenbogen und zwei im Handgelenk) und bat mich, mir einen Algorithmus auszudenken, mit dem sich das Ding geschmeidig bewegen lässt.

Aber ich verstehe überhaupt nichts von Hardware.

Du schickst so 'nem Motor eine Zahl. Der geht dann mit einem Ruck in eine Stellung, die dieser Zahl entspricht. Die momentane Stellung des Motors brauchst du also nicht zu kennen. Und den untersten Programmteil mach ich selbst.

Mit solcherart Hardwarekenntnissen bewaffnet, habe ich mir ein Programm überlegt, das tatsächlich zu funktionieren scheint! Nach Anpassung des Wortes >MOTOR natürlich. Bei mir zu Hause, ohne die Hardware, habe ich mir das Ergebnis lediglich auf dem Bildschirm betrachtet (mit .HIER).

Da ich keine speziellen Kenntnisse über den Arm voraussetze, gibt es auch keine Absicherung gegen den Versuch unmöglicher Stellungen. Selbst die Anzahl der Motoren können Sie anders wählen. Das Programm koordiniert Prozesse, die in gegenseitig verschiedenen Tempi verlaufen: Sie beginnen gleichzeitig, laufen gleichmäßig und sind zur gleichen Zeit fertig. Es sind also auch andere Anwendungen denkbar.
Beispielsweise ein Zeichentrickfilm über Achilles und die Schildkröte, oder das Ziehen gerader Linien mit dem fünfdimensionalen Plotter, den Sie schon immer mal bauen wollten.

Das Problem

Angenommen, ich bewege mich vom Zustand <0 0 0 0 0> nach <10 20 13 7 30>. Dann läuft der letzte Schrittmotor über den größten Winkel (30). Dieser größte Winkel (30) wird der Ausgangspunkt des Algorithmus: Ich verteile die Bewegung der einzelnen Motoren über 30 Etappen. Und jeder Motor macht pro Etappe entweder nur einen Schritt (PLOP) oder nichts (PILI).

Der letzte Motor macht in allen Etappen 1 Schritt (30-mal PLOP). Das ist einfach. Nun die anderen Motoren.
>>