Présentation de tf2

Objectif : Exécutez une démo turtlesim et découvrez la puissance de tf2 dans un exemple multi-robot utilisant turtlesim.

Niveau du didacticiel : Intermédiaire

Durée : 10 minutes

Installation de la démo

Commençons par installer le package de démonstration et ses dépendances.

sudo apt-get install ros-rolling-turtle-tf2-py ros-rolling-tf2-tools ros-rolling-tf-transformations

Lancer la démo

Maintenant que nous avons installé le package de tutoriel turtle_tf2_py, lançons la démo. Tout d’abord, ouvrez un nouveau terminal et sourcez votre installation ROS 2 pour que les commandes ros2 fonctionnent. Exécutez ensuite la commande suivante :

ros2 launch turtle_tf2_py turtle_tf2_demo.launch.py

Vous verrez le turtlesim commencer avec deux tortues.

../../../_images/turtlesim_follow1.png

Dans la deuxième fenêtre du terminal, tapez la commande suivante :

ros2 run turtlesim turtle_teleop_key

Une fois que la simulation de tortue est démarrée, vous pouvez conduire la tortue centrale dans la simulation de tortue à l’aide des touches fléchées du clavier, sélectionnez la deuxième fenêtre de terminal afin que vos frappes soient capturées pour conduire la tortue.

../../../_images/turtlesim_follow2.png

Vous pouvez voir qu’une tortue se déplace continuellement pour suivre la tortue que vous conduisez.

Ce qui se passe?

Cette démo utilise la bibliothèque tf2 pour créer trois cadres de coordonnées : un cadre world, un cadre turtle1 et un cadre turtle2. Ce didacticiel utilise un diffuseur tf2 pour publier les images de coordonnées de la tortue et un écouteur tf2 pour calculer la différence entre les images de la tortue et déplacer une tortue pour qu’elle suive l’autre.

outils tf2

Voyons maintenant comment tf2 est utilisé pour créer cette démo. Nous pouvons utiliser tf2_tools pour voir ce que fait tf2 dans les coulisses.

1 Utilisation de view_frames

view_frames crée un diagramme des trames diffusées par tf2 sur ROS.

ros2 run tf2_tools view_frames

Tu verras:

Listening to tf data during 5 seconds...
Generating graph in frames.pdf file...

Ici, un auditeur tf2 écoute les trames qui sont diffusées sur ROS et dessine un arbre de la façon dont les trames sont connectées. Pour afficher l’arborescence, ouvrez le frames.pdf résultant avec votre visionneuse PDF préférée.

../../../_images/turtlesim_frames.png

Ici, nous pouvons voir trois images diffusées par tf2 : world, turtle1 et turtle2. Le world ici est le parent des cadres turtle1 et turtle2. view_frames rapporte également des informations de diagnostic sur le moment où les transformations de trame les plus anciennes et les plus récentes ont été reçues et à quelle vitesse la trame tf2 est publiée sur tf2 à des fins de débogage.

2 Utilisation de tf2_echo

tf2_echo signale la transformation entre deux trames diffusées sur ROS.

Usage:

ros2 run tf2_ros tf2_echo [reference_frame] [target_frame]

Regardons la transformation du cadre turtle2 par rapport au cadre turtle1 qui équivaut à :

ros2 run tf2_ros tf2_echo turtle2 turtle1

Vous verrez la transformation affichée lorsque l’écouteur tf2_echo reçoit les trames diffusées sur ROS2.

At time 1622031731.625364060
- Translation: [2.796, 1.039, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.202, 0.979]
At time 1622031732.614745114
- Translation: [1.608, 0.250, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.032, 0.999]

Au fur et à mesure que vous conduisez votre tortue, vous verrez la transformation changer à mesure que les deux tortues se déplacent l’une par rapport à l’autre.

rviz et tf2

rviz est un outil de visualisation utile pour examiner les trames tf2. Regardons nos cadres de tortues en utilisant rviz. Commençons rviz avec le fichier de configuration turtle_rviz.rviz en utilisant l’option -d  :

ros2 run rviz2 rviz2 -d $(ros2 pkg prefix --share turtle_tf2_py)/rviz/turtle_rviz.rviz
../../../_images/turtlesim_rviz1.png

Dans la barre latérale vous verrez les trames diffusées par tf2. Au fur et à mesure que vous conduisez la tortue, vous verrez les images se déplacer dans rviz.