Nœuds de lancement

Objectif : utiliser un outil de ligne de commande pour lancer plusieurs nœuds à la fois.

Niveau du didacticiel : Débutant

Durée : 5 minutes

Arrière-plan

Dans la plupart des didacticiels d’introduction, vous avez ouvert de nouveaux terminaux pour chaque nouveau nœud que vous exécutez. Au fur et à mesure que vous créez des systèmes plus complexes avec de plus en plus de nœuds fonctionnant simultanément, l’ouverture de terminaux et la ressaisie des détails de configuration deviennent fastidieuses.

Les fichiers de lancement vous permettent de démarrer et de configurer simultanément plusieurs exécutables contenant des nœuds ROS 2.

L’exécution d’un seul fichier de lancement avec la commande ros2 launch démarrera tout votre système - tous les nœuds et leurs configurations - en une seule fois.

Conditions préalables

Avant de commencer ces didacticiels, installez ROS 2 en suivant les instructions de la page ROS 2 Installation.

Les commandes utilisées dans ce didacticiel supposent que vous avez suivi le guide d’installation des packages binaires pour votre système d’exploitation (packages Debian pour Linux). Vous pouvez toujours suivre si vous avez construit à partir de la source, mais le chemin d’accès à vos fichiers d’installation sera probablement différent. Vous ne pourrez pas non plus utiliser la commande sudo apt install ros-<distro>-<package> (utilisée fréquemment dans les didacticiels de niveau débutant) si vous installez à partir des sources.

Si vous utilisez Linux et que vous n’êtes pas déjà familiarisé avec le shell, ce tutoriel vous aidera.

Tâches

Exécution d’un fichier de lancement

Ouvrez un nouveau terminal et exécutez :

ros2 launch turtlesim multisim.launch.py

Cette commande exécutera le fichier de lancement suivant :

# turtlesim/launch/multisim.launch.py

from launch import LaunchDescription
import launch_ros.actions

def generate_launch_description():
    return LaunchDescription([
        launch_ros.actions.Node(
            namespace= "turtlesim1", package='turtlesim', executable='turtlesim_node', output='screen'),
        launch_ros.actions.Node(
            namespace= "turtlesim2", package='turtlesim', executable='turtlesim_node', output='screen'),
    ])

Note

Le fichier de lancement ci-dessus est écrit en Python, mais vous pouvez également utiliser XML et YAML pour créer des fichiers de lancement. Vous pouvez voir une comparaison de ces différents formats de lancement de ROS 2 dans Utilisation de Python, XML et YAML pour les fichiers de lancement ROS 2.

Cela exécutera deux nœuds turtlesim :

../../../_images/turtlesim_multisim.png

Pour l’instant, ne vous inquiétez pas du contenu de ce fichier de lancement. Vous pouvez trouver plus d’informations sur le lancement de ROS 2 dans les Tutoriels de lancement de ROS 2.

(Facultatif) Contrôlez les nœuds Turtlesim

Maintenant que ces nœuds fonctionnent, vous pouvez les contrôler comme n’importe quel autre nœud ROS 2. Par exemple, vous pouvez faire rouler les tortues dans des directions opposées en ouvrant deux terminaux supplémentaires et en exécutant les commandes suivantes :

Dans la seconde borne :

ros2 topic pub  /turtlesim1/turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"

Dans le troisième terminal :

ros2 topic pub  /turtlesim2/turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: -1.8}}"

Après avoir exécuté ces commandes, vous devriez voir quelque chose comme ceci :

../../../_images/turtlesim_multisim_spin.png

Résumé

L’importance de ce que vous avez fait jusqu’à présent est que vous avez exécuté deux nœuds turtlesim avec une seule commande. Une fois que vous aurez appris à écrire vos propres fichiers de lancement, vous pourrez exécuter plusieurs nœuds - et configurer leur configuration - de la même manière, avec la commande ros2 launch.

Pour plus de didacticiels sur les fichiers de lancement de ROS 2, consultez la page principale du didacticiel sur le fichier de lancement.

Prochaines étapes

Dans le prochain didacticiel, Enregistrement et lecture de données, vous découvrirez un autre outil utile, ros2bag.