Bon, on a fait des essais. La patte qu'on utilise est composée de deux modules d'articulation brushless sur le modèle Open Dynamic Robot Initiative (ODRI) - une jambe bipède
Le module du genou est allongé
Le module de la cuisse est "replié"
A la différence de ce qui est fait dans ODRI, nous avons inséré le module de contrôle (un Tinymovr) directement dans la patte.
On a monté le tout sur glissière verticale afin de tester amortissement, trajectoire et saut.
Autant le module du genou, où les trois poulies crantées sont alignées, fonctionne plutôt bien, autant le module de la cuisse, avec les trois poulies en triangle, "glisse". Une des courroies n'est pas assez tendue. Il y a donc une correction mécanique à faire.
Après, l'articulation de la cuisse, quand le pied est à l'aplomb de la hanche ne fournit pas beaucoup d'efforts. On en a profité pour faire un peu de cinématique avec une telle patte.
On a adopté un pilotage un peu particulier sachant que le moteur du genou, dans ce cas, n'est pas précis, il ne suit pas la consigne de position (pas de gain intégrale) mais c'est à dessein.
On donne donc une consigne de longueur de patte (entre le centre du bout de la patte en silicone et la hanche).
De cette longueur de consigne, on calcule l'angle du genou en utilisant la formule d'Al-Kashi On envoi cet angle au contrôleur Tinymovr.
Comme une sorte de suspension, la longueur réelle de la patte n'est pas celle qui est commandée. Ainsi, en mesurant l'angle du genou, on en déduit la longueur effective de la patte et donc l'erreur de commande. Cette erreur de commande avec la mesure de l'intensité du moteur nous donne la force de contact au sol.
Enfin, toujours en utilisant la formule d'Al-Kashi, on calcule l'angle de la cuisse de façon à compenser le pli du genou et pour avoir le bout de patte à l'aplomb de l'épaule.
A l'avenir, je me demande si il vaut mieux piloter la patte en angle par rapport au corps, ou en décalage par rapport à l'aplomb de la cuisse au sol (en mètres).
Ma méthode est la suivante :
1) Dans un repère propre au robot (origine au centre de gravité, X vers l'avant, Y vers la gauche, Z vers le haut), je calcule la position des pieds (X,Y,Z) en fonction de toutes les consignes :
- vitesses longitudinale et transversale
- attitude (angles pitch, roll, yaw)
- position (x,y,z)
2) Pour chaque pied, je transpose (X,Y,Z) dans un repère propre à la jambe (origine au niveau de l'épaule, X vers l'avant, Y transversal, Z vers le haut) pour obtenir les coordonées des pieds (X',Y',Z') dans ce nouveau repère :
- une rotation et une translation, fixes et propres au dimensions du robots
3) Avec une fonction de type IK, je détermine les angles de chaque articulation en fonction des coordonnées du pied,
- angles (shoulder, hip, knee)
4) Pour chaque jambe, je déduis la position de chaque servo, en fonction de leur position au neutre, de le ratio, et de leur débattement max, à partir des angles (shoulder.hip,knee).
Le fait de travail d'abord dans le repère global au robot permet de mieux gérer les virages (application du rayon de courbure du virage à la trajectoire des pieds) et les changements d'attitude.
Tu peux appliquer la fonction de cinématique directe à partir du feedback des articulations pour en déduire l'attitude et la position réelle du robot. Tu dois avoir le feedback en courant pour savoir si tu touches le sol, et le niveau d'effort, en effet.
Dans le design du robot open source, il manque des tendeurs coté poulie moteur. C'est là que ca saute ?
Tu nous fais une photo de votre installation ?
Ca saute à combien de mètres actuellement ? :-)