Projet

Général

Profil

Le déplacement à l'aide d'une manette » Historique » Version 1

Anonyme, 30/03/2021 15:20

1 1 Anonyme
h1. Le déplacement à l'aide d'une manette
2
3
****
4
5
le déplacement du robot Pepper à l'aide d'une manette sous ROS a un plusieurs avantage, faire des tests pour relever les données nécessaires pour la réalisation du projet et aussi  d'éviter des accidents lors des déplacement automatique en passant à l'aide de la manette au déplacement manuelle. 
6
7
!https://forge.clermont-universite.fr/attachments/download/12189/pepper_manette.png!
8
9
10
***
11
12
h2. L'installation de la manette sous ROS
13
14
***
15
16
Pour Pouvoir utiliser la manette, il est nécessaire de l’installer sur la machine. On installera donc le paquet joy à l'aide de la commande suivante : 
17
18
<pre> sudo apt-get install ros-indigo-joy </pre> 
19
20
"Indigo" à remplacer en cas où vous utilisez une autre version d'Ubuntu ! *
21
22
On connecte la manette et on lance la commande suivante pour vérifier si la manette est bien détectée par la machine. 
23
24
<pre> ls /dev/input/ </pre> 
25
26
la liste des entrées de la machine sont affichées ensuite: 
27
28
!https://forge.clermont-universite.fr/attachments/download/12111/joy_input.png!
29
30
la manette est référencée par jsX, dans notre cas l'entrée js0 correspond à notre manette. 
31
32
Nous allons donc tester si la manette fonctionne correctement à l'aide de la commande suivante (X à changer en fonction du numéro de l'entrée occupée par la manette) :  
33
34
<pre> sudo jstest /dev/input/jsX </pre> 
35
36
On remarque que si on appuyer sur les boutons de la manette les sorties de la manette change sur l'écran :
37
38
!https://forge.clermont-universite.fr/attachments/download/12191/joy_test.png!
39
40
Ensuite on rend la manette accessible sous ROS à l'aide de cette commande (X à changer en fonction du numéro de l'entrée occupée par la manette): 
41
42
<pre> ls -l /dev/input/jsX </pre> 
43
44
Si la manette est accessible sous ROS nous verrons sur l’écran le message suivant : 
45
46
!https://forge.clermont-universite.fr/attachments/download/12113/joy_ROS.png!
47
48
Sinon la commande suivante est nécessaire (X à changer en fonction du numéro de l'entrée occupée par la manette) :
49
 
50
<pre> sudo chmod a+rw /dev/input/jsX </pre> 
51
52
Maintenant on peut utiliser la manette, on lance donc le nœud joy_node à l'aide de cette commande (Après avoir lancer la commande "roscore" !):
53
54
<pre>rosrun joy joy_node </pre> 
55
56
Pour afficher les sorties de la manette, on lance la commande suivante : 
57
58
<pre> rostopic echo joy </pre> 
59
60
!https://forge.clermont-universite.fr/attachments/download/12114/joy_affichage.png!
61
62
Le tableau "axes" contient l'état (0 , 1 ou -1) des boutons de directions de la manette. 
63
64
Le tableau "Buttons" contient l'état (0 ou 1) des autres boutons de la manette.
65
66
***
67
68
h2. Le déplacement 
69
70
***
71
72
On utilisera le topic /cmd_vel du paquet "naoqi_driver":https://forge.clermont-universite.fr/projects/p18a04/wiki/Les_paquets 
73
74
le type de message de ce topic est geometry_msgs/Twist. Il a la forme suivante :
75
76
<pre>
77
"linear:
78
  x: 0.0
79
  y: 0.0
80
  z: 0.0
81
angular:
82
  x: 0.0
83
  y: 0.0
84
  z: 0.0"
85
</pre>
86
87
Le robot Pepper est holonome et il effectue seulement des translations suivant les axes x et y et des rotations par rapport à l'axe z. Donc on s’intéressera seulement à la partie :
88
<pre>
89
"linear:
90
  x: 0.0   --> Translation suivant l'axe x 
91
  y: 0.0   --> Translation suivant l'axe y
92
angular:
93
  x: 0.0"  --> rotation par rapport à l'axe z
94
</pre>
95
96
* Les rotations :
97
98
Pour tourner Pepper, il suffit d'envoyer le message "vit.angular.z = vitesse de rotation" (dans le cas de la programmation en python) sur le topic /cmd_vel
99
100
Pour les rotations on utilisera un bouton et les deux flèches droite et gauche (pour tourner à gauche et à droite).
101
 
102
On généralise le message à envoyer en fonction de la flèche appuyée et si le bouton permettant la rotation est appuyé :
103
  
104
<pre>vit.angular.z = vitesse_de_rotation*msg.axes[0]  </pre>
105
106
* les translations : 
107
108
Pour les translations on utilisera un autre bouton et tous les boutons de deriction (flèche haute pour avancer, flèche basse pour reculer, flèche droite pour se déplacer à droite et flèche gauche pour se déplacer à gauche).
109
110
On généralise le message à envoyer pour chaque axe de translation en fonction de la flèche appuyée et si le bouton permettant la translation est appuyé :
111
112
<pre>vit.linear.x= vitesse_de_translation*msg.axes[3]    
113
vit.linear.y= vitesse_de_translation*msg.axes[0] </pre>
114
115
****
116
117
"pepper_manette.png":https://forge.clermont-universite.fr/attachments/download/12110/pepper_manette.png
118
119
"joy_input.png":https://forge.clermont-universite.fr/attachments/download/12111/joy_input.png 
120
121
"joy_ROS.png":https://forge.clermont-universite.fr/attachments/download/12113/joy_ROS.png 
122
123
"joy_affichage.png":https://forge.clermont-universite.fr/attachments/download/12114/joy_affichage.png 
124
125
"pepper_manette.png":https://forge.clermont-universite.fr/attachments/download/12189/pepper_manette.png 
126
127
"joy_test.png":https://forge.clermont-universite.fr/attachments/download/12191/joy_test.png