Le déplacement à l'aide d'une manette


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.


L'installation de la manette sous ROS


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 :

 sudo apt-get install ros-indigo-joy 

"Indigo" à remplacer en cas où vous utilisez une autre version d'Ubuntu ! *

On connecte la manette et on lance la commande suivante pour vérifier si la manette est bien détectée par la machine.

 ls /dev/input/ 

la liste des entrées de la machine sont affichées ensuite:

la manette est référencée par jsX, dans notre cas l'entrée js0 correspond à notre manette.

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) :

 sudo jstest /dev/input/jsX 

On remarque que si on appuyer sur les boutons de la manette les sorties de la manette change sur l'écran :

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):

 ls -l /dev/input/jsX 

Si la manette est accessible sous ROS nous verrons sur l’écran le message suivant :

Sinon la commande suivante est nécessaire (X à changer en fonction du numéro de l'entrée occupée par la manette) :

 sudo chmod a+rw /dev/input/jsX 

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" !):

rosrun joy joy_node 

Pour afficher les sorties de la manette, on lance la commande suivante :

 rostopic echo joy 

Le tableau "axes" contient l'état (0 , 1 ou -1) des boutons de directions de la manette.

Le tableau "Buttons" contient l'état (0 ou 1) des autres boutons de la manette.


Le déplacement


On utilisera le topic /cmd_vel du paquet naoqi_driver

le type de message de ce topic est geometry_msgs/Twist. Il a la forme suivante :

"linear:
  x: 0.0
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 0.0" 

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 :

"linear:
  x: 0.0   --> Translation suivant l'axe x 
  y: 0.0   --> Translation suivant l'axe y
angular:
  x: 0.0"  --> rotation par rapport à l'axe z

  • Les rotations :

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

Pour les rotations on utilisera un bouton et les deux flèches droite et gauche (pour tourner à gauche et à droite).

On généralise le message à envoyer en fonction de la flèche appuyée et si le bouton permettant la rotation est appuyé :

vit.angular.z = vitesse_de_rotation*msg.axes[0]  
  • les translations :

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).

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é :

vit.linear.x= vitesse_de_translation*msg.axes[3]    
vit.linear.y= vitesse_de_translation*msg.axes[0] 

pepper_manette.png

joy_input.png

joy_ROS.png

joy_affichage.png

pepper_manette.png

joy_test.png