You're reading the documentation for an older, but still supported, version of ROS 2. For information on the latest version, please have a look at Humble.
Using ROS 2 launch to launch composable nodes
Table of Contents
In the Composition tutorial, you learned about composable nodes and how to use them from the command-line. In the Launch tutorials, you learned about launch files and how to use them to manage multiple nodes.
This guide will combine the above two topics and teach you how to write launch files for composable nodes.
Setup
See the installation instructions for details on installing ROS 2.
If you’ve installed ROS 2 from packages, ensure that you have ros-galactic-image-tools
installed.
If you downloaded the archive or built ROS 2 from source, it will already be part of the installation.
Launch file examples
Below is a launch file that launches composable nodes in Python, XML, and YAML. The launch files all do the following:
Instantiate a cam2image composable node with remappings, custom parameters, and extra arguments
Instantiate a showimage composable node with remappings, custom parameters, and extra arguments
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])
Using the Launch files from the command-line
Any of the launch files above can be run with ros2 launch
.
Copy the data into a local file, and then run:
ros2 launch <path_to_launch_file>
Intra-process communications
All of the above examples use an extra argument to setup intra-process communication between the nodes. For more information on what intra-process communications are, see the intra-process comms tutorial.