Intégration des fichiers de lancement dans les packages ROS 2

Objectif : Ajouter un fichier de lancement à un package ROS 2

Niveau du didacticiel : Intermédiaire

Durée : 10 minutes

Conditions préalables

Vous devriez avoir suivi le didacticiel sur la façon de créer un package ROS 2.

Comme toujours, n’oubliez pas de sourcer ROS 2 dans chaque nouveau terminal que vous ouvrez.

Arrière-plan

Dans le tutoriel précédent, nous avons vu comment écrire un fichier de lancement autonome. Ce didacticiel montrera comment ajouter un fichier de lancement à un package existant et les conventions généralement utilisées.

Tâches

1 Créer un package

Créez un espace de travail dans lequel le package doit résider :

mkdir -p launch_ws/src
cd launch_ws/src
ros2 pkg create py_launch_example --build-type ament_python

2 Création de la structure pour contenir les fichiers de lancement

Par convention, tous les fichiers de lancement d’un paquet sont stockés dans le répertoire launch à l’intérieur du paquet. Assurez-vous de créer un répertoire launch au niveau supérieur du paquet que vous avez créé ci-dessus.

Pour les packages Python, le répertoire contenant votre package devrait ressembler à ceci :

src/
  py_launch_example/
    package.xml
    py_launch_example/
    resource/
    setup.py
    setup.cfg
    test/

Pour que colcon trouve les fichiers de lancement, nous devons informer les outils de configuration de Python de nos fichiers de lancement en utilisant le paramètre data_files de setup.

Dans notre fichier setup.py :

import os
from glob import glob
from setuptools import setup

package_name = 'py_launch_example'

setup(
    # Other parameters ...
    data_files=[
        # ... Other data files
        # Include all launch files.
        (os.path.join('share', package_name), glob('launch/*launch.[pxy][yma]*'))
    ]
)

3 Ecriture du fichier de lancement

Dans votre répertoire launch, créez un nouveau fichier de lancement appelé my_script_launch.py. _launch.py est recommandé, mais pas obligatoire, comme suffixe de fichier pour les fichiers de lancement Python. Cependant, le nom du fichier de lancement doit se terminer par launch.py pour être reconnu et complété automatiquement par ros2 launch.

Votre fichier de lancement doit définir la fonction generate_launch_description() qui renvoie un launch.LaunchDescription() à utiliser par le verbe ros2 launch.

import launch
import launch_ros.actions

def generate_launch_description():
    return launch.LaunchDescription([
        launch_ros.actions.Node(
            package='demo_nodes_cpp',
            executable='talker',
            name='talker'),
  ])

4 Construire et exécuter le fichier de lancement

Accédez au niveau supérieur de l’espace de travail et créez-le :

colcon build

Une fois que le colcon build a réussi et que vous avez créé l’espace de travail, vous devriez pouvoir exécuter le fichier de lancement comme suit :

ros2 launch py_launch_example my_script_launch.py

Documentation

La documentation de lancement fournit plus de détails sur les concepts qui sont également utilisés dans launch_ros.

De la documentation/des exemples supplémentaires de capacités de lancement sont à venir. Voir le code source (https://github.com/ros2/launch et https://github.com/ros2/launch_ros) en attendant.