Utiliser turtlesim et rqt

Objectif : Installez et utilisez le package turtlesim et les outils rqt pour vous préparer aux prochains didacticiels.

Niveau du tutoriel : Débutant

Durée : 15 minutes

Arrière-plan

Turtlesim est un simulateur léger pour apprendre ROS 2. Il illustre ce que fait ROS 2 au niveau le plus élémentaire, pour vous donner une idée de ce que vous ferez plus tard avec un vrai robot ou une simulation de robot.

rqt est un outil graphique pour ROS 2. Tout ce qui est fait dans rqt peut être fait sur la ligne de commande, mais il offre un moyen plus simple et plus convivial de manipuler les éléments ROS 2.

Ce didacticiel aborde les concepts de base de ROS 2, comme la séparation des nœuds, des sujets et des services. Tous ces concepts seront développés dans des tutoriels ultérieurs ; pour l’instant, vous allez simplement configurer les outils et vous en faire une idée.

Conditions préalables

Le didacticiel précédent, Configuration de l’environnement, vous montrera comment configurer votre environnement.

Tâches

1 Installer tortuesim

Comme toujours, commencez par rechercher vos fichiers d’installation dans un nouveau terminal, comme décrit dans le tutoriel précédent.

Installez le package turtlesim pour votre distribution ROS 2 :

sudo apt update

sudo apt install ros-rolling-turtlesim

Vérifiez que le package installé :

ros2 pkg executables turtlesim

La commande ci-dessus devrait renvoyer une liste des exécutables de turtlesim :

turtlesim draw_square
turtlesim mimic
turtlesim turtle_teleop_key
turtlesim turtlesim_node

2 Démarrer tortuesim

Pour démarrer turtlesim, saisissez la commande suivante dans votre terminal :

ros2 run turtlesim turtlesim_node

La fenêtre du simulateur devrait apparaître, avec une tortue aléatoire au centre.

../../../_images/turtlesim.png

Dans le terminal sous la commande, vous verrez les messages du nœud :

[INFO] [turtlesim]: Starting turtlesim with node name /turtlesim

[INFO] [turtlesim]: Spawning turtle [turtle1] at x=[5.544445], y=[5.544445], theta=[0.000000]

Ici, vous pouvez voir que le nom de votre tortue par défaut est turtle1, et les coordonnées par défaut où elle apparaît.

3 Utiliser tortuesim

Ouvrez un nouveau terminal et sourcez à nouveau ROS 2.

Vous allez maintenant exécuter un nouveau nœud pour contrôler la tortue dans le premier nœud :

ros2 run turtlesim turtle_teleop_key

À ce stade, vous devriez avoir trois fenêtres ouvertes : un terminal exécutant turtlesim_node, un terminal exécutant turtle_teleop_key et la fenêtre turtlesim. Disposez ces fenêtres de manière à voir la fenêtre de turtlesim, mais activez également le terminal exécutant turtle_teleop_key afin que vous puissiez contrôler la tortue dans turtlesim.

Utilisez les touches fléchées de votre clavier pour contrôler la tortue. Il se déplacera sur l’écran, en utilisant son « stylo » attaché pour tracer le chemin qu’il a suivi jusqu’à présent.

Note

Si vous appuyez sur une touche fléchée, la tortue ne se déplacera que sur une courte distance, puis s’arrêtera. En effet, de manière réaliste, vous ne voudriez pas qu’un robot continue à exécuter une instruction si, par exemple, l’opérateur perdait la connexion avec le robot.

Vous pouvez voir les nœuds et leurs services, sujets et actions associés à l’aide de la commande list :

ros2 node list
ros2 topic list
ros2 service list
ros2 action list

Vous en apprendrez plus sur ces concepts dans les prochains tutoriels. Étant donné que le but de ce didacticiel est uniquement d’obtenir un aperçu général de turtlesim, nous utiliserons rqt (une interface utilisateur graphique pour ROS 2) pour examiner les services d’un peu plus près.

h Installer

Ouvrez un nouveau terminal pour installer rqt et ses plugins :

sudo apt update

sudo apt install ~nros-rolling-rqt*

Il fonctionne :

rqt

5 Ils économisent

Après avoir exécuté rqt la première fois, la fenêtre sera vide. Pas de soucis; sélectionnez simplement Plugins > Services > Service Caller dans la barre de menu en haut.

Note

Cela peut prendre un certain temps à rqt pour localiser tous les plugins lui-même. Si vous cliquez sur Plugins, mais ne voyez pas Services ou toute autre option, vous devez fermer rqt, entrez la commande rqt --force-discover dans votre terminal.

../../../_images/rqt.png

Utilisez le bouton d’actualisation à gauche de la liste déroulante Service pour vous assurer que tous les services de votre nœud turtlesim sont disponibles.

Cliquez sur la liste déroulante Service pour voir les services de turtlesim, et sélectionnez le service /spawn.

5.1 Essayez le service de spawn

Utilisons rqt pour appeler le service /spawn. Vous pouvez deviner d’après son nom que /spawn créera une autre tortue dans la fenêtre turtlesim.

Donnez à la nouvelle tortue un nom unique, comme turtle2 en double-cliquant entre les guillemets simples vides dans la colonne Expression. Vous pouvez voir que cette expression correspond à la valeur name et est de type string.

Entrez de nouvelles coordonnées pour que la tortue apparaisse, comme x = 1.0 et y = 1.0.

../../../_images/spawn.png

Note

Si vous essayez de faire apparaître une nouvelle tortue avec le même nom qu’une tortue existante, comme votre turtle1 par défaut, vous obtiendrez un message d’erreur dans le terminal exécutant turtlesim_node :

[ERROR] [turtlesim]: A turtle named [turtle1] already exists

Pour faire apparaître turtle2, vous devez appeler le service en cliquant sur le bouton Appeler en haut à droite de la fenêtre rqt.

Vous verrez une nouvelle tortue (encore une fois avec un design aléatoire) apparaître aux coordonnées que vous avez saisies pour x et y.

Si vous actualisez la liste des services dans rqt, vous verrez également qu’il existe désormais des services liés à la nouvelle tortue, /turtle2/…, en plus de /turtle1/….

5.2 Essayez le service set_pen

Donnons maintenant à turtle1 un stylet unique en utilisant le service /set_pen :

../../../_images/set_pen.png

Les valeurs de r, g et b, entre 0 et 255, définiront la couleur de la plume que la tortue1 dessine, et width définit l’épaisseur de la ligne.

Pour que turtle1 dessine avec une ligne rouge distincte, changez la valeur de r à 255 et la valeur de width à 5. N’oubliez pas d’appeler le service après avoir mis à jour les valeurs.

Si vous revenez au terminal où turtle_teleop_key est en cours d’exécution et appuyez sur les touches fléchées, vous verrez que le stylo de turtle1 a changé.

../../../_images/new_pen.png

Vous avez probablement remarqué qu’il n’y a aucun moyen de déplacer turtle2. Vous pouvez accomplir cela en remappant le sujet cmd_vel de turtle1 sur turtle2.

6 Remappage

Dans un nouveau terminal, sourcez ROS 2 et exécutez :

ros2 run turtlesim turtle_teleop_key --ros-args --remap turtle1/cmd_vel:=turtle2/cmd_vel

Vous pouvez maintenant déplacer la tortue2 lorsque ce terminal est actif, et la tortue1 lorsque l’autre terminal exécutant la turtle_teleop_key est actif.

../../../_images/remap.png

7 Fermer tortuesim

Pour arrêter la simulation, vous pouvez entrer Ctrl + C dans le terminal turtlesim_node, et q dans le terminal teleop.

Résumé

Utiliser turtlesim et rqt est un excellent moyen d’apprendre les concepts de base de ROS 2.

Prochaines étapes

Maintenant que turtlesim et rqt sont opérationnels et que vous avez une idée de leur fonctionnement, plongeons-nous dans le premier concept de base de ROS 2 avec le prochain tutoriel, ../Understanding-ROS2-Nodes/Understanding-ROS2 -Nœuds.