Les commandes de Imp semble un peu brusques. pour les rendre plus douces il faut déplacer les servos lentement en augmentant les pas entre deux position. En général
7 correspond au neutre, c'est à dire le repos. Pour robot le mouvement transversal du pied varie de 6 à 8 il faut donc diviser par des disième de pas :
6 6,1 6,2 6,3 6,4 6,5 6,7 6,8 6,9 7 7,1 7,2 etc... On peut utiliser avec PygmyForth le programme d'une primitive Python contenant tout les pas entre deux positions, mais il serait plus souhaitable d'utiliser deux primitives, en modifiant le numéro des broches, et faire les incrémentations et décrémentations en code Forth ( ou plutôt PygmyForth).
( Sur la jambe gauche ) )
: LeftLoopUp 9 FOR I 10 / 7.1 + NEXT ; ( cette boucle dépose un dixième de la valeur de l'index auquel on ajoute 7,1, qui est la valeur de repos, on incrémente )
: LeftServoUp 9 FOR SERVOSOFT18 NEXT ; ( les valeurs sont déposées sur la pile et lues par la primitive SERVOSOFT18 commande le servo en fonction de lavaleur. )
: LeftFootUp LeftLoopUp 7.5 AnkleLeft LeftServoUp 6 AnkleLeft ; ( ici on lance le programme avec un petit mouvement du pied gauche pour favoriser le basculement vers la droite )
: LeftLoopDown 9 FOR I 10 / 8 - -1 * NEXT ; ( pour revenir il faut décrémenter en partant de huit on enlève un dixième de la valeur de l'index, on obtient un nombre négatif qui devient positif en le multipliant par -1 )
: RightServoDown 9 FOR SERVOSOFT18 NEXT ; ( la pile est lue et le servo se met en position )
: LeftFootDown LeftLoopDown 7 AnkleLeft RightServoDown ; ( même chose que pour la montée, une le pied gauche est remis à plat )
: LeftFootUpDown LeftFootUp 2 sec LeftFootDown stop ; ( c'est le code pour lever le pied gauche et le ramener )
Commentaires