component-composition

Coordinate multiple ROS 2 components in one process for zero-copy transport.

18|2|Updated Apr 20, 2026
One-click install
npx skills add https://github.com/wimblerobotics/ros2-copilot-skills --skill component-composition-wimblerobotics
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: component-composition
Source: https://github.com/wimblerobotics/ros2-copilot-skills/tree/main/component-composition
Command: npx skills add https://github.com/wimblerobotics/ros2-copilot-skills --skill component-composition-wimblerobotics

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Streamline ROS 2 development by enabling multiple composable nodes to run in a single process, unlocking zero-copy transport to reduce IPC overhead.

Core Features & Use Cases

  • In-process composition of multiple components to form a single execution context.
  • Enable zero-copy intra-process communication to minimize serialization and latency.
  • Supports dynamic loading and container-based execution for Jazzy/Rolling workflows.
  • Use case: Build high-performance perception or data-processing pipelines by co-locating related components.

Quick Start

Start a component container and load your composable nodes to run them in-process.

Frequently Asked Questions about component-composition

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I enable zero-copy intra-process communication in ROS 2?

You can enable zero-copy transport by loading multiple composable nodes into a single component container. This allows them to communicate in-process, bypassing serialization and reducing IPC overhead for low-latency data flows.

What is ROS 2 component composition and when should I use it?

ROS 2 component composition coordinates multiple nodes within a single process to unlock zero-copy transport. You should use it for multi-node pipelines requiring low-latency communication, such as high-performance perception or image processing chains.

How do I load composable nodes into a container in ROS 2?

You load composable nodes by starting a component container and dynamically loading your nodes into it. This process requires your nodes to accept const rclcpp::NodeOptions &options and use the RCLCPP_COMPONENTS_REGISTER_NODE macro.

Does my ROS 2 node need specific macros to support container-based loading?

Yes, to support container-based loading, your ROS 2 node must use the RCLCPP_COMPONENTS_REGISTER_NODE macro and accept const rclcpp::NodeOptions &options in its constructor. This allows the node to be dynamically loaded into a process.

What is the best way to reduce IPC overhead in ROS 2 sensor data pipelines?

The best way to reduce IPC overhead in ROS 2 sensor data pipelines is in-process composition. By co-locating related components in a single process, you enable zero-copy transport to minimize serialization and latency.

Can I use component composition with ROS 2 Jazzy and Rolling distributions?

Yes, component composition supports container-based execution for Jazzy and Rolling workflows. This allows you to dynamically load composable nodes into a single process to achieve zero-copy intra-process communication.