[isaacsim.ros2.nodes] ROS 2 Nodes#
Version: 1.18.11
Overview#
The isaacsim.ros2.nodes extension provides OmniGraph nodes that enable ROS 2 communication within Isaac Sim. This extension bridges robotics simulation with ROS 2 systems by offering nodes for publishing, subscribing, and handling services that can be connected in Action Graphs. It relies on isaacsim.ros2.core for the underlying ROS 2 functionality and integrates sensor data from camera and physics sensors into the ROS 2 ecosystem.
Functionality#
The extension registers OmniGraph nodes that handle ROS 2 message passing and service calls. These nodes can be placed in Action Graphs to stream sensor data, receive commands, and interact with ROS 2 topics and services. The nodes inherit ROS distribution and core settings from isaacsim.ros2.core, which centralizes all ROS 2 Bridge configuration under /exts/isaacsim.ros2.bridge/*. This allows the nodes to automatically align with the configured ROS 2 environment at runtime without requiring separate configuration.
Integration#
The extension depends on isaacsim.ros2.core for the ROS 2 backend, isaacsim.sensors.camera and isaacsim.sensors.experimental.physics for sensor data access, isaacsim.sensors.physics.nodes for physics sensor OmniGraph nodes, and omni.graph for the OmniGraph framework. It uses isaacsim.core.experimental.utils for stage and prim utilities, isaacsim.core.experimental.objects and isaacsim.core.experimental.prims for scene object creation in tests, and isaacsim.core.rendering_manager and isaacsim.core.simulation_manager for viewport and physics management. C++ publisher implementations for images and point clouds provide optimized data transfer for high-bandwidth sensor streams.
Enable Extension#
The extension can be enabled (if not already) in one of the following ways:
Define the next entry as an application argument from a terminal.
APP_SCRIPT.(sh|bat) --enable isaacsim.ros2.nodes
Define the next entry under [dependencies] in an experience (.kit) file or an extension configuration (extension.toml) file.
[dependencies]
"isaacsim.ros2.nodes" = {}
Open the Window > Extensions menu in a running application instance and search for isaacsim.ros2.nodes.
Then, toggle the enable control button if it is not already active.
Python API#
Internal interface that is automatically called when the extension is loaded so that Omnigraph nodes are registered.
Example
# import isaacsim.ros2.nodes.bindings._ros2_nodes as _ros2_nodes
# Acquire the interface interface = _ros2_nodes.acquire_interface()
# Use the interface # …
# Release the interface _ros2_nodes.release_interface(interface)
- class IRos2Nodes
- acquire_interface(
- plugin_name: str = None,
- library_path: str = None,
- create_camera_info_publisher_capsule(
- topic_name: str,
- frame_id: str,
- node_namespace: str,
- queue_size: int,
- qos_profile: str,
- width: int,
- height: int,
- distortion_model: str,
- k: List[float],
- r: List[float],
- p: List[float],
- d: List[float],
Create a ROS 2 CameraInfo publisher and return a PyCapsule wrapping the C-ABI callback descriptor.
The capsule is named “SrtxFrameCallbackDescriptor” and is intended to be passed to omni.replicator.srtx’s register_frame_callback().
- create_image_publisher_capsule(
- topic_name: str,
- frame_id: str,
- node_namespace: str,
- queue_size: int,
- qos_profile: str = '',
Create a ROS 2 Image publisher and return a PyCapsule wrapping the C-ABI callback descriptor.
The capsule is named “SrtxFrameCallbackDescriptor” and is intended to be passed to omni.replicator.srtx’s register_frame_callback().
- Parameters:
topic_name – ROS 2 topic name to publish on.
frame_id – TF frame_id for the published message header.
node_namespace – ROS 2 node namespace.
queue_size – Publisher queue depth.
qos_profile – JSON-encoded QoS profile (empty string for defaults).
- Returns:
PyCapsule containing the callback descriptor.
- create_laser_scan_publisher_capsule(
- topic_name: str,
- frame_id: str,
- node_namespace: str,
- queue_size: int,
- qos_profile: str = '',
- azimuth_range_start: float = -180.0,
- azimuth_range_end: float = 180.0,
- depth_range_min: float = 0.0,
- depth_range_max: float = 100.0,
- rotation_rate: float = 20.0,
- horizontal_resolution: float = 1.0,
- horizontal_fov: float = 360.0,
Create a ROS 2 LaserScan publisher and return a PyCapsule wrapping the C-ABI callback descriptor.
The capsule is named “SrtxFrameCallbackDescriptor” and is intended to be passed to omni.replicator.srtx’s register_frame_callback().
- Parameters:
topic_name – ROS 2 topic name to publish on.
frame_id – TF frame_id for the published message header.
node_namespace – ROS 2 node namespace.
queue_size – Publisher queue depth.
qos_profile – JSON-encoded QoS profile (empty string for defaults).
azimuth_range_start – Scan start angle in degrees.
azimuth_range_end – Scan end angle in degrees.
depth_range_min – Minimum range in meters.
depth_range_max – Maximum range in meters.
rotation_rate – Scan frequency in Hz.
horizontal_resolution – Angular resolution in degrees.
horizontal_fov – Horizontal field of view in degrees.
- Returns:
PyCapsule containing the callback descriptor.
- create_lidar_publisher_capsule(
- topic_name: str,
- frame_id: str,
- node_namespace: str,
- queue_size: int,
- qos_profile: str = '',
Create a ROS 2 PointCloud2 (lidar) publisher and return a PyCapsule wrapping the C-ABI callback descriptor.
The capsule is named “SrtxFrameCallbackDescriptor” and is intended to be passed to omni.replicator.srtx’s register_frame_callback().
- Parameters:
topic_name – ROS 2 topic name to publish on.
frame_id – TF frame_id for the published message header.
node_namespace – ROS 2 node namespace.
queue_size – Publisher queue depth.
qos_profile – JSON-encoded QoS profile (empty string for defaults).
- Returns:
PyCapsule containing the callback descriptor.
- release_interface(
- arg0: isaacsim.ros2.nodes.bindings._ros2_nodes.IRos2Nodes,
Omnigraph Nodes#
The extension exposes the following Omnigraph nodes:
- ROS2 Camera Helper
- ROS2 Camera Info Helper
- ROS2 Context
- ROS2 Publish AckermannDrive
- ROS2 Publish Bbox2D
- ROS2 Publish Bbox3D
- ROS2 Publish Camera Info
- ROS2 Publish Clock
- ROS2 Publish Compressed Image
- ROS2 Publish Image
- ROS2 Publish Imu
- ROS2 Publish Joint State
- ROS2 Publish Laser Scan
- ROS2 Publish Object Id Map
- ROS2 Publish Odometry
- ROS2 Publish Point Cloud
- ROS2 Publish Raw Transform Tree
- ROS2 Publish Semantic Labels
- ROS2 Publish Transform Tree
- ROS2 Publisher
- ROS2 QoS Profile
- ROS2 RTX Lidar Helper
- ROS2 RTX Lidar Point Cloud Config
- ROS2 RTX Radar Helper
- ROS2 Service Client
- ROS2 Service Prim
- ROS2 Service Server Request
- ROS2 Service Server Response
- ROS2 Subscribe AckermannDrive
- ROS2 Subscribe Clock
- ROS2 Subscribe Joint State
- ROS2 Subscribe Transform Tree
- ROS2 Subscribe Twist
- ROS2 Subscriber