5.4.1. Configuration des exécutables

5.4.1.1. Python

Lors de la création d’un package un fichier setup.py est automatiquement créé. Ce fichier permet de paramétrer les executable. Cette étape est importante afin d’exécuter vos scripts.

Vous devez rajouter la ligne suivante dans la liste “console_scripts” à la fin du fichier :

'my_script = my_package.my_script:main'

Ce qui signifie :

nom_de_l_executable = nom_du_package.nom_du_script:main

Attention a bien suivre la structure du nœud présenté ci-dessus.

Vous pouvez en ajouter plusieurs tel que :

from setuptools import setup

package_name = 'my_package'

setup(
    name=package_name,
    version='0.0.0',
    packages=[package_name],
    data_files=[
        ('share/ament_index/resource_index/packages',
            ['resource/' + package_name]),
        ('share/' + package_name, ['package.xml']),
    ],
    install_requires=['setuptools'],
    zip_safe=True,
    maintainer='ubuntu',
    maintainer_email='ubuntu@todo.todo',
    description='TODO: Package description',
    license='TODO: License declaration',
    tests_require=['pytest'],
    entry_points={
        'console_scripts': [
                'exec_1 = my_package.script_1:main',
                'exec_2 = my_package.script_2:main'
        ],
    },
)

Ici nous avons ajouté les exécutables exec_1 et exec_2 qui appellent les fonctions main de script_1 et script_2.

5.4.1.2. C++

na

5.4.2. Configuration des Launch

Avant de créer vos fichiers launch vous devez créer un dossier spécifique dans votre package si ce dernier n’existe pas.

mkdir launch

5.4.2.1. Python

Voici maintenant un exemple de fichier launch. Ici ce dernier lance 3 executables. Beaucoup de paramètres peuvent être ajoutés.

from launch import LaunchDescription
from launch_ros.actions import Node

def generate_launch_description():
    return LaunchDescription([
        Node(
            package='nom_du_package_de_lexecutable',
            executable='nom_de_lexecutable_a_lancer',
            name='nom_pour_vous_y_retrouver_vous_pouvez_remettre_le_nom_de_lexecutable'
        ),
        Node(
            package='turtlesim',
            executable='turtlesim_node',
            name='sim'
        ),
        Node(
            package='turtlesim',
            executable='mimic',
            name='mimic',
            remappings=[
                ('/input/pose', '/turtlesim1/turtle1/pose'),
                ('/output/cmd_vel', '/turtlesim2/turtle1/cmd_vel'),
            ]
        )
    ])

Un launch file peut lancer des exécutables present dans un autre package que celui où se trouve votre launch file.