Cinématique inverse pour robots hexapodes
20 tarjetasMaî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
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 ().
- Il est souvent plus simple de visualiser les angles en degrés dans le code.
- Conversion : radians ou degrés.
Les Trois Types de Calculs Nécessaires
-
Angle d'une seule ligne (Arc Tan) :
- Sivous connaissez les valeurs X et Y, l'angle a est donné par .
-
Angles d'un triangle rectangle :
- Si vous connaissez les longueurs A et B, la longueur L est .
- Les angles peuvent être calculés avec , ou .
-
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 : .
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 à . Ils peuvent pivoter de 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 :
- 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.
- 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
- Calculer l'angle du triangle formé par les liaisons cuisse et pied et la ligne L.
- Calculer l'angle entre la ligne L et l'axe Y.
- L'angle du servo du genou est .
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" () (ex: ).
- Soustraire 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 .
- 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)`
- Convertir les coordonnées : De laposition relative au centre du robot à la position relative à l'ancrage de la patte (servo de la hanche).
- Calculer la rotation de la hanche :
- Déterminer la nouvelle position du genou :
- Calculer la position du pied par rapport au servo du genou.
- Calculer les angles du genou et du pied :
- 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