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 |