5.3. Zero-copy communications

5.3.1. Efficient intra-process communication:

Our ROS2 Wrapper node supports zero-copy communications if loaded in the same process as a subscriber node. This can reduce copy times on ../image/pointcloud topics, especially with big frame resolutions and high FPS.

You will need to launch a component container and launch our node as a component together with other component nodes. Further details on “Composing multiple nodes in a single process” can be found here.

Further details on efficient intra-process communication can be found here.

5.3.2. Zero-copy example

5.3.3. Manually loading multiple components into the same process

  • Start the component:

    ros2 run rclcpp_components component_container
    
  • Add the wrapper:

    ros2 component load /ComponentManager orbbec_camera orbbec_camera::OBCameraNodeDriver -e use_intra_process_comms:=true
    

    Load other component nodes (consumers of the wrapper topics) in the same way.

5.3.4. Using a launch file

ros2 launch orbbec_camera orbbec_camera.launch.py use_intra_process_comms:=true
$ ros2 component list
/camera/camera_container
  1  /camera/camera
  2  /camera/frame_latency

5.3.5. Limitations

  • Node components are currently not supported on RCLPY

  • Compressed images using image_transport will be disabled as this isn’t supported with intra-process communication