使用ROS 2launch到launch可组合节点 [待校准@6284]

Composition tutorial, you learned about composable nodes and how to use them from the command-line. In the Launch tutorials 中,您学习了launch文件以及如何使用它们来管理多个节点。 [待校准@6285]

本指南将结合以上两个话题,并教您如何为可组合节点编写launch文件。 [待校准@6286]

设置 [待校准@6287]

有关安装ROS 2的详细信息,请参见 installation instructions[待校准@6288]

如果您已经从包中安装了ROS 2,请确保您已经安装了 ros-foxy-image-tools 。如果您从源文件下载了archive或构建的ROS 2,它将已经是安装的一部分。 [待校准@6289]

Launch文件示例 [待校准@6164]

以下是launch文件launches组合节点Python、XML和YAML。launch文件都执行以下操作: [待校准@6290]

  • 使用重映射、自定义参数和额外参数实例化cam2image可组合节点 [待校准@6291]

  • 使用重映射、自定义参数和额外参数实例化showimage可组合节点 [待校准@6292]

import launch
from launch_ros.actions import ComposableNodeContainer
from launch_ros.descriptions import ComposableNode


def generate_launch_description():
    """Generate launch description with multiple components."""
    container = ComposableNodeContainer(
            name='image_container',
            namespace='',
            package='rclcpp_components',
            executable='component_container',
            composable_node_descriptions=[
                ComposableNode(
                    package='image_tools',
                    plugin='image_tools::Cam2Image',
                    name='cam2image',
                    remappings=[('/image', '/burgerimage')],
                    parameters=[{'width': 320, 'height': 240, 'burger_mode': True, 'history': 'keep_last'}],
                    extra_arguments=[{'use_intra_process_comms': True}]),
                ComposableNode(
                    package='image_tools',
                    plugin='image_tools::ShowImage',
                    name='showimage',
                    remappings=[('/image', '/burgerimage')],
                    parameters=[{'history': 'keep_last'}],
                    extra_arguments=[{'use_intra_process_comms': True}])
            ],
            output='both',
    )

    return launch.LaunchDescription([container])

使用命令行中的Launch文件 [待校准@6293]

上述任何launch文件都可以与 ros2 launch 一起运行。将数据复制到本地文件中,然后运行: [待校准@6294]

ros2 launch <path_to_launch_file>

进程内通讯 [待校准@6295]

以上所有示例都使用额外的参数来设置节点之间的进程内通讯。有关什么是进程内通讯的更多信息,请参见 intra-process comms tutorial[待校准@6296]