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
Contenu
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
# Clone and build the geometry_tutorials repo using the branch that matches your installation
git clone https://github.com/ros/geometry_tutorials.git -b ros2
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.

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.

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.

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

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.