ROS2: как передать аргументы из одного файла запуска в дочерний файл запуска

У меня есть основной bringup.launch.py файл запуска, дескриптор запуска которого включает child.launch.py в качестве дочернего файла запуска, например:

from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription
from launch.actions import IncludeLaunchDescription
from launch.launch_description_sources import PythonLaunchDescriptionSource

def generate_launch_description():
    package_prefix = get_package_share_directory('child_package')
    argument_for_child = "lala"

    return LaunchDescription([
        # include the child launch file
        IncludeLaunchDescription(
            PythonLaunchDescriptionSource([package_prefix, '/launch/child.launch.py'])
        ),
    ])

Как передать аргумент от bringup.launch.py к child.launch.py?


person Floris Devreese    schedule 28.08.2019    source источник


Ответы (1)


В bringup.launch.py вы должны объявить аргумент запуска и добавить его в карту launch_arguments следующим образом:

from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription
from launch.actions import IncludeLaunchDescription
from launch.launch_description_sources import PythonLaunchDescriptionSource
from launch.actions import DeclareLaunchArgument

def generate_launch_description():
    package_prefix = get_package_share_directory('child_package')
    argument_for_child = "lala"

    return LaunchDescription([
        # Declare the launc parameter
        DeclareLaunchArgument(
            'argument_for_child',
            default_value = argument_for_child,
            description = 'Argument for child launch file'),

        # include the child launch file
        IncludeLaunchDescription(
            PythonLaunchDescriptionSource([package_prefix, '/launch/child.launch.py'])
            launch_arguments = {'argument_for_child': argument_for_child}.items()
        ),
    ])

В child.launch.py вы читаете переданный аргумент следующим образом:

from launch.substitutions import LaunchConfiguration

def generate_launch_description():
    value= LaunchConfiguration('argument_for_child', default='-')

    ...

Примечание: это для ROS2 версии Dashing

person Floris Devreese    schedule 28.08.2019