Cinématique inverse pour robots hexapodes

20 tarjetas

Maîtriser la cinématique inverse pour animer les robots hexapodes. Ce tutoriel couvre les maths, la logique et l'implémentation du code pour obtenir un mouvement fluide d'un robot à pattes, en utilisant des calculs et un code simples pour un contrôle précis des articulaire des servos.

20 tarjetas

Repasar
La repetición espaciada te muestra cada tarjeta en el momento óptimo para memorizar a largo plazo, con repasos cada vez más espaciados.
Pregunta
Qu'est-ce que la cinématique inverse ?
Respuesta
Calculer les angles des articulations nécessaires pour que l'extrémité d'un membre (le pied) atteigne une position cible donnée.
Pregunta
Qu'est-ce que la cinématique directe ?
Respuesta
Déterminer la position de l'extrémité d'un membre en utilisant les angles connus des articulations et la longueur des liens.
Pregunta
Principal avantage de la cinématique inverse ?
Respuesta
Elle facilite la création de mouvements fluides et complexes, comme marcher ou changer de hauteur, avec peu de code.
Pregunta
Que sont les articulations (joints) d'un robot ?
Respuesta
Les parties mobiles d'un robot qui permettent une rotation, généralement contrôlées par des servomoteurs.
Pregunta
Qu'est-ce que l'angle de décalage (gap angle) ?
Respuesta
Une valeur de correction mesurée manuellement, soustraite pour compenser un petit défaut mécanique dans l'alignement du pied.
Pregunta
Comment l'angle de la hanche est-il calculé ?
Respuesta
En utilisant la vue de dessus et la fonction arc tangente (atan) avec la coordonnée X et la longueur horizontale H.
Pregunta
Que sont les liens (links) d'un robot ?
Respuesta
Les segments rigides qui connectent les articulations entre elles, formant le squelette du robot.
Pregunta
Nommez les trois articulations d'une patte d'hexapode.
Respuesta
L'articulation de la hanche (hip), du genou (knee), et du pied (foot).
Pregunta
Décrivez le système de coordonnées droit.
Respuesta
Un système où l'axe X pointe vers l'avant, l'axe Z vers le haut, et l'axe Y vers la gauche.
Pregunta
Quelle unité d'angle est utilisée nativement par Arduino ?
Respuesta
Les radians. Une rotation complète équivaut à 2π radians.
Pregunta
Quelle est la première longueur à calculer pour les angles du genou et du pied ?
Respuesta
La longueur de la ligne L, qui est la distance 2D entre le genou et le bout du pied, en utilisant Y et Z.
Pregunta
À quoi sert la classe `Servo` dans le code ?
Respuesta
À encapsuler les paramètres d'un servomoteur : largeur d'impulsion, angles, vitesse, et si sa rotation est inversée.
Pregunta
À quoi sert la classe `Leg` dans le code ?
Respuesta
À contenir les objets servo d'une patte et la méthode pour calculer leurs angles respectifs à partir de la position du pied.
Pregunta
Quelle méthode clé exécute la cinématique inverse ?
Respuesta
La méthode `set_foot_position(x, y, z)`, qui calcule tous les angles de servo pour une position de pied donnée.
Pregunta
Comment le programme crée-t-il une animation de marche ?
Respuesta
En utilisant des images-clés (keyframes) qui stockent les positions de chaque pied à des moments successifs du mouvement.
Pregunta
Par rapport à quel point les coordonnées du pied sont-elles fournies ?
Respuesta
Par rapport au centre du robot, et non à la base de la patte, pour simplifier la coordination globale.
Pregunta
Quelle fonction mathématique trouve l'angle d'une ligne ?
Respuesta
La fonction arc tangente (arctan ou `atan`), qui calcule un angle à partir des longueurs x et y d'un triangle.
Pregunta
Pourquoi la rotation de certains servos est-elle inversée ?
Respuesta
Car les pattes gauches et droites sont montées en miroir ; une rotation opposée est donc nécessaire pour un mouvement symétrique.
Pregunta
Quels sont les trois types de calculs mathématiques nécessaires ?
Respuesta
1. Angle d'une ligne. 2. Angles d'un triangle rectangle. 3. Angles d'un triangle quelconque.
Pregunta
Que sont les images-clés (keyframes) ?
Respuesta
Elles contiennent des ensembles de positions pour chaque patte, définissant une pose. Une séquence d'images-clés crée un mouvement.

Cinématique Inverse : Le Guide Ultime pour les Robots Hexapodes

Bienvenue dans le monde de la cinématique inverse, une méthode révolutionnaire pour animer desrobots. Oubliez la programmation fastidieuse de chaque servo ! La cinématique inverse est votre solution pour des mouvements fluides et complexes.

Pourquoi la Cinématique Inverse ?

  • Problème : Animer un robot hexapodeen contrôlant chaque servo individuellement est lent, douloureux et imprécis.
  • Solution : La cinématique inverse permet de spécifier la position finale du pied, et le robot calcule lesangles de chaque articulation.

Les Fondamentaux de la Cinématique Robotique

La cinématique robotique étudie comment les robots se déplacent en utilisant desarticulations et des liaisons.
  • Joints (Articulations) : Parties du robot qui peuvent pivoter (par exemple, hanche, genou, pied).
  • Links (Liaisons) : Parties rigides entre lesarticulations (par exemple, cuisse, pied).

Cinématique Directe (Forward Kinematics)

Sert à déterminer la position de l'extrémité du robot si on connaît les angles de chaque articulation et la longueur desliaisons.

  • Avantages : Facile à implémenter.
  • Inconvénients :
    • Très chronophage pour animer des robots complexes.
    • Inadaptée aux mouvements complexes (ex: changement dynamique de hauteur).

Cinématique Inverse (Inverse Kinematics)

Sert à calculer les angles des articulations pour atteindre une position souhaitée du pied.

  • Avantages :
    • Permet des mouvements complexes et fluides (ex: animation d'attaque).
    • Plus difficile à implémenter initialement, mais très facile à utiliser une fois configuré.

La Mathématique Simplifiée

L'objectif est de garder les calculs mathématiques aussi simples que possible, n'utilisant que des opérations disponibles sur un Arduino.

Système de Coordonnées

  • Système de coordonnées à droite :
    • L'axe X pointe vers l'avant du robot.
    • L'axe Z pointe vers le haut.
    • L'axe Y pointe versla gauche (vu de l'arrière).

Unités d'Angle

  • Les calculs Arduino utilisent des radians (rotation compleˋte=2π6 radians\text{rotation complète} = 2\pi \approx 6 \text{ radians}).
  • Il est souvent plus simple de visualiser les angles en degrés dans le code.
  • Conversion : 180=π180^\circ = \pi radians ou 1 radian=180/π1 \text{ radian} = 180/\pi degrés.

Les Trois Types de Calculs Nécessaires

  1. Angle d'une seule ligne (Arc Tan) :
    • Sivous connaissez les valeurs X et Y, l'angle a est donné par atan2(Y,X)\text{atan2}(Y, X).
  2. Angles d'un triangle rectangle :
    • Si vous connaissez les longueurs A et B, la longueur L est A2+B2\sqrt{A^2 + B^2}.
    • Les angles peuvent être calculés avec acos()\text{acos}(), asin()\text{asin}() ou atan2()\text{atan2}().
  3. Angles den'importe quel triangle (Loi des Cosinus) :
    • Si vous connaissez les longueurs A, B et C, les angles peuvent être calculés avec la loi des cosinus : C2=A2+B22ABcos(θC)C^2 = A^2 + B^2- 2AB \cos(\theta_C).

Application aux Pieds du Robot

Nommer les Pattes

  • Nommer chaque patte (ex: patte avant droite, patte centrale gauche) facilite la référence.

Position des Pieds (Coordonnées)

  • Les positions des pieds sont définies par rapport au centre du robot.
  • La hauteur du centre est définie comme la hauteur de l'articulation du genou pour simplifier le code.

Les Trois Angles à Calculer par Patte

Pour chaque patte, nousdevons calculer l'angle des servos de :

  • Pied (Foot)
  • Genou (Knee)
  • Hanche (Hip)

Position de référence : Quand les servos sont en position "milieu", ils sont à 00^\circ. Ils peuvent pivoter de 9090^\circ dans chaque direction.

Longueurs des Liaisons

  • Liaison cuisse (Thigh link) : 84 mm (exemple)
  • Liaison pied (Foot link) : 127 mm (exemple)

Calcul des Angles Articulaires (Approche 2D)

1. Angle du Servo du Pied

En se concentrant sur un plan 2D (Y, Z) et en supposant que le centre du systèmede coordonnées est le servo du genou :

  1. Calculer la longueur L du segment entre le genou et le pied en utilisant la géométrie simple des triangles avec les coordonnées Y et Z souhaitées.
  2. Maintenant que toutes les longueurs du triangle sont connues, utiliser la loi des cosinus pour calculer l'angle du servo du pied.

2. Angle du Servo du Genou

  1. Calculer l'angle VBVB du triangle formé par les liaisons cuisse et pied et la ligne L.
  2. Calculer l'angle VAVA entre la ligne L et l'axe Y.
  3. L'angle du servo du genou est VBVAVB - VA.

Correction de l'Angle de la Patte ("Gap Angle")

  • En raison d'un léger décalage physique (lepied n'est pas directement sous le servo), il y a une erreur.
  • Mesurer manuellement cet "angle de décalage" (GAGA) (ex: 1414^\circ).
  • Soustraire GAGA des angles calculés pour le servo du pied.

3. Rotation du Servo de la Hanche (Vue de Dessus)

  • La rotation de la hanche est l'angle entre l'axe X et une ligne allantdu centre du servo de la hanche au point P (position souhaitée du pied).
  • Utiliser la cinématique des triangles simple pour calculer cet angle AA.
  • Problème :Les calculs précédents pour le pied et le genou n'ont pas pris en compte l'axe X. La rotation de la hanche allonge la distance réelle (ligne H) par rapport à la ligne L utilisée en 2D.
  • Solution : Utiliser la longueur H (distance horizontale du centre de la hanche au pied) au lieu de Y lors du calcul des angles du genou et du pied.

Gestion de Toutes les Pattes (Complexité Supplémentaire)

Positionde l'Ancrage et Rotation

Les calculs de chaque patte sont effectués par rapport à son propre point d'ancrage sur le corps du robot.

  • Position d'ancrage : Constante àmesurer manuellement pour chaque patte (position du servo de la hanche par rapport au centre du robot).
  • Angle initial : Chaque patte est déjà tournée d'un certain angle par rapport à l'axe X du corps. Cet angle constant doit être intégré dans les calculs de rotationde la hanche.

Décalage de la Position du Genou

  • Le calcul de la position du genou doit prendre en compte le décalage entre le servo de la hanche et le servodu genou.
  • Ce décalage change aussi avec la rotation de la patte.

Orientation des Servos

  • Les servos sur les côtés gauche et droit peuvent nécessiter des sens de rotation opposés pour la même action.
  • Ceci est géré par des paramètres spécifiques à chaque servo et n'affecte pas les calculs mathématiques.

Implémentation du Code (Arduino)

Structure du Code

  • Classe `Servo` : Encapsule les propriétés d'un servo (paramètres physiques, ID, canal, inversion de rotation).
    • Méthode `setAngle()` : Calcule le signal PWM pour le servo.
  • Classe `Leg` : Contient les objets `Servo` pour la hanche, le genou et le pied, ainsi que les constantes d'ancrageet de longueur des liaisons.
    • Méthode `setFootPosition(x, y, z)` : Le cœur de la cinématique inverse.
  • Programme principal (`Hexapod`) : Contrôle l'ensemble du robot,initialise les pattes et appelle `setFootPosition()` pour chaque patte.

Fonctionnement de `setFootPosition(x, y, z)`

  1. Convertir les coordonnées : De laposition relative au centre du robot à la position relative à l'ancrage de la patte (servo de la hanche).
  2. Calculer la rotation de la hanche :
  3. Déterminer la nouvelle position du genou :
  4. Calculer la position du pied par rapport au servo du genou.
  5. Calculer les angles du genou et du pied :
  6. Appliquer les angles aux servos.

Animation Simplifiée (Keyframes)

  • Des keyframes (images clés) définissent les positions des pieds à différents moments.
  • Le programme hexapode parcourt ces keyframes pour créer des cycles de marche, des rotations, etc.

Conclusion

La cinématique inverse, bien que plus complexe à mettre en place initialement, offre une flexibilité et une fluidité inégalées pour le contrôle des mouvements robotiques. Avec une compréhension de base des triangles et des systèmes de coordonnées, il est possible de créer des robots aux mouvements impressionnants.

Empezar cuestionario

Prueba tus conocimientos con preguntas interactivas