TP 6 axes
Présentation
Dans ce TP, nous allons appliquer nos connaissances sur les transformations homogènes pour contrôler un robot à 6 axes.
Installation
Téléchargez l’archive tp_6axis.zip
Lisez les instructions ci-dessous
Afin d’installer les dépendances, lancez la commande suivante:
pip install "numpy<2" pybullet onshape-to-robot meshcat
Modèle géométrique direct
Testez d’abord que le simulateur fonctionne à l’aide de:
python direct.py
Vous devriez voir un robot à 6 axes dans une fenêtre PyBullet. Vous pouvez alors déplacer les curseurs afin de changer la position des moteurs.
Remarquez qu’un repère fixe est dessiné sur le sol. Il s’aggit de T_world_effector
, la transformation homogène du repère de l’effecteur dans le monde, mais elle n’est pas encore correcte.
En vous aidant du schéma ci-dessous, et des transformations élémentaires (translation et rotations autour des axes \(x\), \(y\) et \(z\)), modifiez direct.py
afin qu’il calcule T_world_effector
correctement. Le repère devrait être positionné sur l’effecteur.
Ajout d’un outil
Si vous lancez:
python direct_tool.py
Vous remarquerez que l’outil ci-dessous a été ajouté au bras robotique.
À l’aide de cette image, déterminez T_effector_tool
En utilisant T_effector_tool
et le code de la partie précédente, modifiez direct_tool.py
afin de calculer T_world_tool
correctement.
Écriture sur un tableau
Le simulateur fournit une fonction set_T_world_effector
qui résoud le problème du modèle géométrique inverse du robot. Cette fonction prend en argument une transformation homogène T_world_effector
et met à jour les positions des moteurs pour que l’effecteur se retrouve à la position désirée.
Vous pouvez la tester à l’aide de:
python control.py
Lancez maintenant board.py
, et lisez son code:
python board.py
La fonction generate_board()
génère un tableau avec une position aléatoire, et retourne T_world_board
sa transformation homogène dans le monde.
L’objectif est de fournir une fonction à set_T_world_effector
qui permet de positionner la pointe de l’outil sur le tableau, et d’y tracer un cercle.
Voici ce que vous devriez obtenir: