207a
<< <> >>

207

De programmeertaal Forth
home
Dit programma coördineert processen die in onderling verschillende tempi verlopen:
ze beginnen tegelijk, lopen gelijkmatig, en zijn tegelijk klaar.

Robot-arm met (bijv.) vijf motoren

De voorzitter van de Forth gebruikersgroep knutselde aan een robot-arm met vijf motoren (twee in de schouder, één in de elleboog en twee in de pols) en vroeg me een algoritme te verzinnen om het ding soepel te laten bewegen.

- Maar ik heb absoluut geen verstand van hardware.

- Je stuurt een getal naar zo'n motor. Die gaat dan met een ruk naar de stand die overeenkomt met dat getal. Je hoeft de actuele stand van de motor dus niet te kennen. En de allerlaagste routine maak ik wel.

Gewapend met deze hardware kennis heb ik een programma bedacht, én, het blijkt te werken! Na aanpassing van het woord >MOTOR natuurlijk. Bij mij thuis, zonder de hardware, heb ik het resultaat alleen maar op het scherm bekeken (met .HIER).

Omdat ik geen specifieke kennis van de arm gebruik, zit er geen beveiliging in tegen opdrachten voor onmogelijke posities. Je kunt zelfs het aantal motoren anders kiezen. Het programma coördineert processen die in onderling verschillende tempi verlopen: ze beginnen tegelijk, lopen gelijkmatig, en zijn tegelijk klaar. Er zijn dus andere toepassingen denkbaar. Bijvoorbeeld een tekenfilm van Achilles en de Schildpad, of rechte lijnen trekken met de vijfdimensionale plotter die je altijd al had willen bouwen.

Het probleem

Stel, ik beweeg van stand <0 0 0 0 0> naar <10 20 13 7 30>. Dan draait de laatste motor over de grootste hoek (30). Die grootste hoek (30) wordt het uitgangspunt voor de algoritme: ik verdeel de beweging van elke motor in 30 etappes. En een motor doet per etappe óf slechts één stap (PLOP) óf niets (PILI).

De laatste motor doet in alle etappes 1 stap (30 keer PLOP). Dat is eenvoudig. Nu de andere motoren.
>>