Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
application_de_la_cinematique_inverse_au_robot_poppy_torso [2018/11/01 20:22]
s18kone [Fonctionnement du programme]
application_de_la_cinematique_inverse_au_robot_poppy_torso [2019/04/25 14:08]
127.0.0.1 external edit
Line 91: Line 91:
  sizes_pion = [0.03, 0.03,0.08] # en mètre  sizes_pion = [0.03, 0.03,0.08] # en mètre
  mass_pion = 2 # en kg  mass_pion = 2 # en kg
- precision=[10,10]+ precision=[1000,1000]
  objet.add_cylinder(name_pion,​ pos_pion, sizes_pion, mass_pion,​precision)  objet.add_cylinder(name_pion,​ pos_pion, sizes_pion, mass_pion,​precision)
  
Line 102: Line 102:
  
 ===== Application de la cinématique inverse ===== ===== Application de la cinématique inverse =====
-L'​espace de jeu étant créé, nous sommes passé à l'​élaboration du programme devant piloter le bras droit du robot Poppy Torso pendant le déroulement du jeu de morpion. A ce niveau nous avons utilisé la fonction « poppy.r_arm_chain.goto() » de la cinématique inverse. Elle prend trois (03) paramètres : les coordonnées cartésiennes de la position à atteindre, ​la temps pour atteindre la position souhaitée et la mise en attente ou non de l'​exécution de la suite du programme. Cette fonction calcule et affecte la position et l'​orientation qu'il faut aux sept (07) moteurs [r_elbw_y ; r_arm_z ; r_shoulder_x ; r_shoulder_y ; bust_x ; bust_y ; abs_z] du bras droit de Poppy Torso pour atteindre la position souhaitée. Par défaut seuls les quatre (04) moteurs [r_elbw_y ; r_arm_z ; r_shoulder_x ; r_shoulder_y] sont actifs. \\+L'​espace de jeu étant créé, nous sommes passé à l'​élaboration du programme devant piloter le bras droit du robot Poppy Torso pendant le déroulement du jeu de morpion. A ce niveau nous avons utilisé la fonction « poppy.r_arm_chain.goto() » de la cinématique inverse. Elle prend trois (03) paramètres : les coordonnées cartésiennes de la position à atteindre, ​le temps pour atteindre la position souhaitée et la mise en attente ou non de l'​exécution de la suite du programme. Cette fonction calcule et affecte la position et l'​orientation qu'il faut aux sept (07) moteurs [r_elbw_y ; r_arm_z ; r_shoulder_x ; r_shoulder_y ; bust_x ; bust_y ; abs_z] du bras droit de Poppy Torso pour atteindre la position souhaitée. Par défaut seuls les quatre (04) moteurs [r_elbw_y ; r_arm_z ; r_shoulder_x ; r_shoulder_y] sont actifs. \\
 Dans l'​application de la cinématique inverse par l'​utilisation de la fonction ​ « poppy.r_arm_chain.goto() » nous étions confronté à deux (02) principales difficultés : la première ​ était d'​atteindre la position souhaitée c'​est-à-dire la position du pion, la position de l'une des cases ou la position initiale sans toucher un obstacle de l'​environnement du jeu. La seconde était la forme du mouvement effectué par le bras qui devait être proche de celle d'un humain. \\ Dans l'​application de la cinématique inverse par l'​utilisation de la fonction ​ « poppy.r_arm_chain.goto() » nous étions confronté à deux (02) principales difficultés : la première ​ était d'​atteindre la position souhaitée c'​est-à-dire la position du pion, la position de l'une des cases ou la position initiale sans toucher un obstacle de l'​environnement du jeu. La seconde était la forme du mouvement effectué par le bras qui devait être proche de celle d'un humain. \\
 Comme réponse à la première problématique nous avons défini une trajectoire pour les différents positions à atteindre. Afin que le mouvement se rapproche de celui d'un humain nous avons joué sur le pas et le temps d'​exécution. Comme réponse à la première problématique nous avons défini une trajectoire pour les différents positions à atteindre. Afin que le mouvement se rapproche de celui d'un humain nous avons joué sur le pas et le temps d'​exécution.
Line 124: Line 124:
  Xf = (V1/​g).cos(a).[V1.sin(a) + sqrt( (V1.sin(a))^2 + 2.g.(Zi-Zf) )] + Xi.   Xf = (V1/​g).cos(a).[V1.sin(a) + sqrt( (V1.sin(a))^2 + 2.g.(Zi-Zf) )] + Xi. 
 - Déterminer la valeur de V1 : \\ - Déterminer la valeur de V1 : \\
-A partir de l'​expression de Xf précédent ​nous avons cherché la valeur de V1 (en faisant varier V1) qui donne une valeur de Xf proche de la valeur de Xf à atteindre. \\+A partir de l'​expression de Xf précédente ​nous avons cherché la valeur de V1 (en faisant varier V1) qui donne une valeur de Xf proche de la valeur de Xf à atteindre. \\
 Pour chaque valeur de V1 retenue nous avons vérifié que la hauteur maximale de la main du robot était acceptable en utilisant l'​expression Pour chaque valeur de V1 retenue nous avons vérifié que la hauteur maximale de la main du robot était acceptable en utilisant l'​expression
  Zmax = (0,​5/​g).(V1.sin(a))^2 + Zi  Zmax = (0,​5/​g).(V1.sin(a))^2 + Zi
Line 131: Line 131:
    * De la position initiale à la position du pion     * De la position initiale à la position du pion 
 A ce niveau nous avons fixé la valeur de l'​angle « a » à 2.pi/3 et comme résultats des calculs nous avons obtenu : A ce niveau nous avons fixé la valeur de l'​angle « a » à 2.pi/3 et comme résultats des calculs nous avons obtenu :
- V1 = 1,07 m/s + V1 = 1,23 m/s 
- Zmax = 14,32 cm+ Zmax = 14,77 cm
  
    * De la position du pion à la position d'une case     * De la position du pion à la position d'une case 
 A ce niveau nous avons fixé la valeur de l'​angle « a » à pi/4 et comme résultats des calculs nous avons obtenu : \\ A ce niveau nous avons fixé la valeur de l'​angle « a » à pi/4 et comme résultats des calculs nous avons obtenu : \\
  Pour Xf = -0.10 m   Pour Xf = -0.10 m 
- V1 = 1,24 m/s + V1 = 1,26 m/s 
- Zmax = 13,85cm+ Zmax = 12 cm
  
  Pour Xf = 0.00 m   Pour Xf = 0.00 m 
- V1 = 1,58 m/s + V1 = 1,60 m/s 
- Zmax = 16,25 cm+ Zmax = 14,42 cm
  
  Pour Xf = 0.10 m   Pour Xf = 0.10 m 
- V1 = 1,87 m/s + V1 = 1,88 m/s 
- Zmax = 18,69 cm+ Zmax = 16,88 cm
  
 ==== Trajectoire rectiligne uniforme ==== ==== Trajectoire rectiligne uniforme ====
Line 187: Line 187:
 La démonstration vidéo est accessible à travers ce lien : https://​drive.google.com/​open?​id=1mVeNc0ZrXjJVIdxTz1_dE-Y4mM9CYqyf La démonstration vidéo est accessible à travers ce lien : https://​drive.google.com/​open?​id=1mVeNc0ZrXjJVIdxTz1_dE-Y4mM9CYqyf
 ===== Documents ===== ===== Documents =====
-  * Video https://​drive.google.com/​open?​id=1mVeNc0ZrXjJVIdxTz1_dE-Y4mM9CYqyf+  * Video https://​drive.google.com/​open?​id=1mVeNc0ZrXjJVIdxTz1_dE-Y4mM9CYqyf 
 +  * Rapport : {{:​explication_du_programme.pdf|}}
  
  • application_de_la_cinematique_inverse_au_robot_poppy_torso.txt
  • Last modified: 2019/06/04 12:15
  • by nduminy