Pour appliquer une trajectoire, il y a quelques prérequis en termes de programmation à connaitre :
- savoir cadencer une boucle d'exécution avec un intervalle de temps constant (par exemple 20ms voire moins),
- invoquer une fonction de calcul qui retourne la position du pied dans un repère cartésien XYZ en fonction du temps qui passe
- invoquer une fonction de calcul de cinématique inverse, qui permet de convertir la position XYZ du pied en la position des servos de la jambe
- appliquer la position aux servo de la jambe (PWM ou autre).
La cadence de ta boucle est liée à la cadence de commande des servos. Si les servos sont standards, ce sera entre 50Hz et 333Hz. S'ils sont intelligents, faut voir en fonction de leur caractéristiques.
A chaque itération (Tick à 20ms ou moins), tu vas devoir dérouler les calculs pour les 4 pattes en parallèle. A chaque itération, invoquer 4 fois le calcul de trajectoire, et 4 fois le calcul de cinématique inverse et enfin commander les 8 ou 12 servos. Tu devras t'assurer que le temps des calculs tient dans l'intervalle de temps choisi.
Ensuite, tu devras fixer quelques paramètres (constantes ou contrôlables à distance) :
- la période d'un cycle complet du pied (exemple P=1s ou moins)
- la position du pied au repos (z0)
- la hauteur de swing (h)
- la vitesse du robot (V)
Pour une démarche de type trot, il faudra appliquer un déphasage entre les pattes de 180° (ou une demie période) pour faire simple :
- Avant gauche et Arrière droit avec un déphasage nul
- Avant droit et Arrière gauche avec un déphasage de 180°
Chaque jambe alterne les phases de stance et de swing. Tu vas donc avoir deux fonctions de calcul de la position du pied, l'une pour la phase de stance (au contact) et une autre pour la phase de swing (en l'air). Tu passes de l'une à l'autre en fonction du temps qui passe, chacune travaillant pendant une demie période P, alternativement.
Enfin, pour la trajectoire basique :
- en phase de stance (au contact) = la trajectoire du pied est imposée par la trajectoire du robot. Si le robot avance à une vitesse linéaire V, les pieds reculent à la même vitesse, à plat.
- en phase de swing (en l'air) = le pied avance à la vitesse V. La hauteur peut etre une formule simple de type "z0+h.sin(x)" avec z0 la hauteur au repose, h une constante de hauteur de swing et x variant de 0 à pi durant la phase de swing, proportionnellement au temps qui passe durant cette demi période.
Pour commencer, tu peux faire en sorte que le pied passe autant de temps en avant de l'épaule qu'en arrière, aussi bien en phase de swing que de stance.
Bon courage.