Files
OrbbecSDK_ROS2/source/5_advanced_guide/performance/fastdds_tuning.html
T

467 lines
40 KiB
HTML
Raw Normal View History

2025-09-18 07:40:40 +00:00
<!DOCTYPE html>
<html class="writer-html5" lang="en" data-content_root="../../../">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>5.1.4. Fast DDS Optimization for Orbbec Camera with ROS2 &mdash; OrbbecSDK V2 ROS2 Wrapper documentation</title>
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=b86133f3" />
<link rel="stylesheet" type="text/css" href="../../../_static/css/theme.css?v=e59714d7" />
<link rel="stylesheet" type="text/css" href="../../../_static/custom.css?v=a2eacb60" />
<link rel="shortcut icon" href="../../../_static/orbbec_footerlogo_3d_world.svg"/>
<script src="../../../_static/jquery.js?v=5d32c60e"></script>
<script src="../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../../../_static/documentation_options.js?v=5929fcd5"></script>
<script src="../../../_static/doctools.js?v=9bcbadda"></script>
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="5.2.1. Multi-Camera" href="../multi_camera/multi_camera.html" />
<link rel="prev" title="5.1.3. Efficient intra-process communication:" href="efficient_intra_process_communication.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../../../index.html" class="icon icon-home">
OrbbecSDK V2 ROS2 Wrapper
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../1_overview/overview.html">1. Overview</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../1_overview/introduction.html">1.1. Introduction</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../1_overview/introduction.html#support-hardware-products">1.1.1. Support Hardware Products</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../1_overview/introduction.html#support-platforms">1.1.2. Support Platforms</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../1_overview/orbbecsdk_overview.html">1.2. Orbbec SDK Overview</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../1_overview/orbbecsdk_overview.html#terms">1.2.1. Terms</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../1_overview/orbbecsdk_overview.html#orbbec-sdk-v2-architecture-overview">1.2.2. Orbbec SDK v2 Architecture Overview</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../1_overview/orbbecsdk_overview.html#sdk-concept-overview">1.2.3. SDK Concept Overview</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../1_overview/orbbecsdk_overview.html#sdk-programming-model">1.2.4. SDK Programming Model</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../2_installation/installation.html">2. Installation</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../2_installation/build_the_package.html">2.1. Build from Source</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../2_installation/build_the_package.html#environment">2.1.1. Environment</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../2_installation/build_the_package.html#linux-ros2-wrapper-compilation">2.1.2. Linux ROS2 Wrapper Compilation</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../2_installation/registration_script.html">2.2. Registration script (required)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../3_quickstarts/quickstarts.html">3. Quickstarts</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../3_quickstarts/quickstart.html">3.1. QuickStarts</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../3_quickstarts/quickstart.html#introduction">3.1.1. Introduction</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../3_quickstarts/quickstart.html#build-your-first-camera-application">3.1.2. Build your First Camera Application</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../3_quickstarts/quickstart.html#step-1-source-ros-2-and-workspace">3.1.2.1. Step 1: Source ROS 2 and Workspace</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../3_quickstarts/quickstart.html#step-2-launch-the-camera-node">3.1.2.2. Step 2: Launch the Camera Node</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../3_quickstarts/quickstart.html#step-3-visualize-in-rviz2">3.1.2.3. Step 3: Visualize in RViz2</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../../3_quickstarts/quickstart.html#sample-features">3.1.3. Sample Features</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../3_quickstarts/quickstart.html#list-available-topics-services-parameters">3.1.3.1. List available topics / services/ parameters</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../3_quickstarts/quickstart.html#echo-a-topic">3.1.3.2. Echo a topic</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../3_quickstarts/quickstart.html#call-a-service">3.1.3.3. Call a service</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../3_quickstarts/quickstart.html#record-with-rosbag2">3.1.3.4. Record with rosbag2</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../4_application_guide/application_guide.html">4. Application Guide</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../4_application_guide/launch_parameters.html">4.1. Launch parameters</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../4_application_guide/launch_parameters.html#core-stream-configuration">4.1.1. Core &amp; Stream Configuration</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../4_application_guide/launch_parameters.html#sensor-controls">4.1.2. Sensor Controls</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../4_application_guide/launch_parameters.html#color-stream">4.1.2.1. Color Stream</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../4_application_guide/launch_parameters.html#depth-stream">4.1.2.2. Depth Stream</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../4_application_guide/launch_parameters.html#ir-stream">4.1.2.3. IR Stream</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../4_application_guide/launch_parameters.html#laser-ldp">4.1.2.4. Laser / LDP</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../../4_application_guide/launch_parameters.html#device-sync-advanced-features">4.1.3. Device, Sync &amp; Advanced Features</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../4_application_guide/launch_parameters.html#multi-camera-synchronization">4.1.3.1. Multi-Camera Synchronization</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../4_application_guide/launch_parameters.html#network-cameras">4.1.3.2. Network Cameras</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../4_application_guide/launch_parameters.html#device-specific">4.1.3.3. Device-Specific</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../4_application_guide/launch_parameters.html#disparity">4.1.3.4. Disparity</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../4_application_guide/launch_parameters.html#interleave-ae-mode">4.1.3.5. Interleave AE Mode</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../../4_application_guide/launch_parameters.html#basic-general-parameters">4.1.4. Basic &amp; General Parameters</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../4_application_guide/launch_parameters.html#firmware-backend">4.1.4.1. Firmware &amp; Backend</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../4_application_guide/launch_parameters.html#tf-extrinsics-calibration">4.1.4.2. TF, Extrinsics &amp; Calibration</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../4_application_guide/launch_parameters.html#time-synchronization">4.1.4.3. Time Synchronization</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../4_application_guide/launch_parameters.html#logging-diagnostics">4.1.4.4. Logging &amp; Diagnostics</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../4_application_guide/launch_parameters.html#miscellaneous">4.1.4.5. Miscellaneous</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../../4_application_guide/launch_parameters.html#imu">4.1.5. IMU</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../4_application_guide/launch_parameters.html#depth-filters">4.1.6. Depth Filters</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../4_application_guide/services.html">4.2. All available services for camera control</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../4_application_guide/services.html#stream-control">4.2.1. Stream Control</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../4_application_guide/services.html#color-stream">4.2.1.1. Color Stream</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../4_application_guide/services.html#depth-stream">4.2.1.2. Depth Stream</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../4_application_guide/services.html#ir-stream">4.2.1.3. IR Stream</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../4_application_guide/services.html#all-streams">4.2.1.4. All Streams</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../../4_application_guide/services.html#sensor-emitter-control">4.2.2. Sensor &amp; Emitter Control</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../4_application_guide/services.html#device-information-management">4.2.3. Device Information &amp; Management</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../4_application_guide/services.html#synchronization-triggering">4.2.4. Synchronization &amp; Triggering</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../4_application_guide/services.html#depth-filter-configuration">4.2.5. Depth Filter Configuration</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../4_application_guide/services.html#data-capture-calibration-management">4.2.6. Data Capture &amp; Calibration Management</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../4_application_guide/topics.html">4.3. Available Topics</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../4_application_guide/topics.html#image-streams">4.3.1. Image Streams</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../4_application_guide/topics.html#point-cloud-topics">4.3.2. Point Cloud Topics</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../4_application_guide/topics.html#imu-topics">4.3.3. IMU Topics</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../4_application_guide/topics.html#device-status-diagnostics">4.3.4. Device Status &amp; Diagnostics</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../4_application_guide/coordinate_systems.html">4.4. ROS2(Robot) vs Optical(Camera) Coordination Systems</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../4_application_guide/camera_sensor_structure.html">4.5. Camera sensor structure</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../4_application_guide/tf_transformations.html">4.6. TF from coordinate A to coordinate B:</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../4_application_guide/compressed_image.html">4.7. Compressed Image</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../4_application_guide/point_cloud.html">4.8. Enabling and Visualizing Point Cloud in ROS 2</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../4_application_guide/point_cloud.html#enabling-depth-point-cloud">4.8.1. Enabling Depth Point Cloud</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../4_application_guide/point_cloud.html#command-to-enable-depth-point-cloud">4.8.1.1. Command to Enable Depth Point Cloud</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../4_application_guide/point_cloud.html#visualizing-depth-point-cloud-in-rviz2">4.8.1.2. Visualizing Depth Point Cloud in RViz2</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../../4_application_guide/point_cloud.html#enabling-colored-point-cloud">4.8.2. Enabling Colored Point Cloud</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../4_application_guide/point_cloud.html#command-to-enable-colored-point-cloud">4.8.2.1. Command to Enable Colored Point Cloud</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../4_application_guide/point_cloud.html#visualizing-colored-point-cloud-in-rviz2">4.8.2.2. Visualizing Colored Point Cloud in RViz2</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="../advanced_guide.html">5. Advanced Guide</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="../advanced_guide.html#performance-optimization">5.1. Performance &amp; Optimization</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="benchmark.html">5.1.1. Ob_benchmark tool</a><ul>
<li class="toctree-l4"><a class="reference internal" href="benchmark.html#tool-configuration-start-benchmark-params-json">5.1.1.1. Tool Configuration (start_benchmark_params.json)</a></li>
<li class="toctree-l4"><a class="reference internal" href="benchmark.html#camera-configuration-launch-files">5.1.1.2. Camera configuration (launch files)</a></li>
<li class="toctree-l4"><a class="reference internal" href="benchmark.html#running-the-ob-benchmark-tool">5.1.1.3. Running the ob_benchmark tool</a></li>
<li class="toctree-l4"><a class="reference internal" href="benchmark.html#output-data-files">5.1.1.4. Output Data Files</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="lower_cpu_usage.html">5.1.2. Reducing CPU Usage with Orbbec ROS Package</a><ul>
<li class="toctree-l4"><a class="reference internal" href="lower_cpu_usage.html#recommended-settings-for-lower-cpu-usage">5.1.2.1. Recommended Settings for Lower CPU Usage</a></li>
<li class="toctree-l4"><a class="reference internal" href="lower_cpu_usage.html#launch-files-used-for-testing">5.1.2.2. Launch Files Used for Testing</a></li>
<li class="toctree-l4"><a class="reference internal" href="lower_cpu_usage.html#test-environment">5.1.2.3. Test environment</a></li>
<li class="toctree-l4"><a class="reference internal" href="lower_cpu_usage.html#test-setup">5.1.2.4. Test Setup</a></li>
<li class="toctree-l4"><a class="reference internal" href="lower_cpu_usage.html#test-results">5.1.2.5. Test Results</a></li>
<li class="toctree-l4"><a class="reference internal" href="lower_cpu_usage.html#further-optimizationa">5.1.2.6. Further Optimizationa</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="efficient_intra_process_communication.html">5.1.3. Efficient intra-process communication:</a><ul>
<li class="toctree-l4"><a class="reference internal" href="efficient_intra_process_communication.html#introduction">5.1.3.1. Introduction</a></li>
<li class="toctree-l4"><a class="reference internal" href="efficient_intra_process_communication.html#example">5.1.3.2. Example</a></li>
</ul>
</li>
<li class="toctree-l3 current"><a class="current reference internal" href="#">5.1.4. Fast DDS Optimization for Orbbec Camera with ROS2</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#adjusting-system-parameters">5.1.4.1. Adjusting System Parameters</a></li>
<li class="toctree-l4"><a class="reference internal" href="#fast-dds-configuration">5.1.4.2. Fast DDS Configuration</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../advanced_guide.html#multi-camera">5.2. Multi-Camera</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../multi_camera/multi_camera.html">5.2.1. Multi-Camera</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../multi_camera/multi_camera.html#no-data-stream-from-multiple-cameras">5.2.1.1. No Data Stream from Multiple Cameras</a></li>
<li class="toctree-l4"><a class="reference internal" href="../multi_camera/multi_camera.html#image-topic-frame-rate-too-low-from-multiple-cameras">5.2.1.2. Image topic frame rate too low from Multiple Cameras</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../multi_camera/multi_camera_synced.html">5.2.2. Multi_camera synced Instructions</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../multi_camera/multi_camera_synced.html#setup-instructions">5.2.2.1. Setup instructions</a></li>
<li class="toctree-l4"><a class="reference internal" href="../multi_camera/multi_camera_synced.html#checking-camera-port-with-orbbecsdk-ros2">5.2.2.2. Checking camera port with OrbbecSDK_ROS2</a></li>
<li class="toctree-l4"><a class="reference internal" href="../multi_camera/multi_camera_synced.html#orbbecsdk-ros2-multi-camera-synced-configuration">5.2.2.3. OrbbecSDK_ROS2 multi-camera synced configuration</a></li>
<li class="toctree-l4"><a class="reference internal" href="../multi_camera/multi_camera_synced.html#run-the-following-command-to-start-the-multi-camera-synced">5.2.2.4. Run the following command to start the multi-camera synced</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../multi_camera/multi_camera_synced_verification_tool.html">5.2.3. Multi_camera_synced_verification_tool</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../multi_camera/multi_camera_synced_verification_tool.html#directory-structure">5.2.3.1. Directory Structure</a></li>
<li class="toctree-l4"><a class="reference internal" href="../multi_camera/multi_camera_synced_verification_tool.html#preparation-for-operation">5.2.3.2. Preparation for operation</a></li>
<li class="toctree-l4"><a class="reference internal" href="../multi_camera/multi_camera_synced_verification_tool.html#run-this-example">5.2.3.3. Run this example</a></li>
<li class="toctree-l4"><a class="reference internal" href="../multi_camera/multi_camera_synced_verification_tool.html#files-that-need-to-be-changed">5.2.3.4. Files that need to be changed</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../multi_camera/gmsl_camera.html">5.2.4. GMSL_camera</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../multi_camera/gmsl_camera.html#single-gmsl-camera">5.2.4.1. Single GMSL camera</a></li>
<li class="toctree-l4"><a class="reference internal" href="../multi_camera/gmsl_camera.html#multi-gmsl-camera">5.2.4.2. Multi GMSL camera</a></li>
<li class="toctree-l4"><a class="reference internal" href="../multi_camera/gmsl_camera.html#multi-gmsl-camera-synced">5.2.4.3. Multi GMSL camera synced</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../advanced_guide.html#configuration-modes">5.3. Configuration &amp; Modes</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../configuration/align_depth_color.html">5.3.1. Aligning Depth to Color in ROS 2</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../configuration/align_depth_color.html#commands-to-align-and-view-depth-and-color-images">5.3.1.1. Commands to Align and View Depth and Color Images</a></li>
<li class="toctree-l4"><a class="reference internal" href="../configuration/align_depth_color.html#selecting-topics-in-rviz2">5.3.1.2. Selecting Topics in RViz2</a></li>
<li class="toctree-l4"><a class="reference internal" href="../configuration/align_depth_color.html#example-of-depth-to-color-overlay">5.3.1.3. Example of Depth to Color Overlay</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../configuration/configuration_of_depth_NFOV_and_WFOV_modes.html">5.3.2. Configuration of depth NFOV and WFOV modes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../configuration/depth_work_mode_switch.html">5.3.3. Depth work mode switch</a></li>
<li class="toctree-l3"><a class="reference internal" href="../configuration/disparity_search_offset.html">5.3.4. Disparity_search_offset</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../configuration/disparity_search_offset.html#function-introduction">5.3.4.1. Function Introduction</a></li>
<li class="toctree-l4"><a class="reference internal" href="../configuration/disparity_search_offset.html#parameter-introduction">5.3.4.2. Parameter Introduction</a></li>
<li class="toctree-l4"><a class="reference internal" href="../configuration/disparity_search_offset.html#run-the-launch">5.3.4.3. Run the launch</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../configuration/interleave_ae_mode.html">5.3.5. Using interleave_ae with Gemini330 series cameras</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../configuration/interleave_ae_mode.html#parameter-introduction">5.3.5.1. Parameter Introduction</a></li>
<li class="toctree-l4"><a class="reference internal" href="../configuration/interleave_ae_mode.html#run-the-launch">5.3.5.2. Run the launch</a></li>
<li class="toctree-l4"><a class="reference internal" href="../configuration/interleave_ae_mode.html#multi-camera-synced-interleave-ae">5.3.5.3. Multi_camera_synced + Interleave_ae</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../configuration/predefined_presets.html">5.3.6. Predefined presets</a></li>
<li class="toctree-l3"><a class="reference internal" href="../configuration/net_camera.html">5.3.7. Net_camera</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../configuration/net_camera.html#femto-mega-gemini-435le">5.3.7.1. Femto Mega &amp; Gemini 435Le</a></li>
<li class="toctree-l4"><a class="reference internal" href="../configuration/net_camera.html#gemini-335le">5.3.7.2. Gemini 335Le</a></li>
<li class="toctree-l4"><a class="reference internal" href="../configuration/net_camera.html#multi-net-camera">5.3.7.3. Multi Net camera</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../6_developer_guide/developer_guide.html">6. Developer Guide</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../6_developer_guide/building_a_Debian_Package.html">6.1. Building a Debian Package</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../6_developer_guide/building_a_Debian_Package.html#preparing-the-environment">6.1.1. Preparing the Environment</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../6_developer_guide/building_a_Debian_Package.html#configuring-ros-dependencies">6.1.2. Configuring ROS Dependencies</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../6_developer_guide/building_a_Debian_Package.html#building-the-package">6.1.3. Building the Package</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../7_FAQ/FAQ.html">7. Frequently Asked Questions</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../7_FAQ/FAQ.html#unexpected-crash">7.1. Unexpected Crash</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../7_FAQ/FAQ.html#no-data-stream-from-multiple-cameras">7.2. No Data Stream from Multiple Cameras</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../7_FAQ/FAQ.html#additional-troubleshooting">7.3. Additional Troubleshooting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../7_FAQ/FAQ.html#why-are-there-so-many-launch-files">7.4. Why Are There So Many Launch Files?</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../../index.html">OrbbecSDK V2 ROS2 Wrapper</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="../advanced_guide.html"><span class="section-number">5. </span>Advanced Guide</a></li>
<li class="breadcrumb-item active"><span class="section-number">5.1.4. </span>Fast DDS Optimization for Orbbec Camera with ROS2</li>
<li class="wy-breadcrumbs-aside">
<a href="../../../_sources/source/5_advanced_guide/performance/fastdds_tuning.md.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="fast-dds-optimization-for-orbbec-camera-with-ros2">
<h1><span class="section-number">5.1.4. </span>Fast DDS Optimization for Orbbec Camera with ROS2<a class="headerlink" href="#fast-dds-optimization-for-orbbec-camera-with-ros2" title="Link to this heading"></a></h1>
<p>When operating with the default configuration, Fast DDS exhibits suboptimal transmission efficiency, resulting in
significant image transmission delays when used with the Orbbec camera in ROS2. This document provides guidance on
optimizing Fast DDS to enhance image transfer efficiency.</p>
<section id="adjusting-system-parameters">
<h2><span class="section-number">5.1.4.1. </span>Adjusting System Parameters<a class="headerlink" href="#adjusting-system-parameters" title="Link to this heading"></a></h2>
<p><strong>IP Fragmentation Time</strong></p>
<ul>
<li><p><strong>Path</strong>: <code class="docutils literal notranslate"><span class="pre">/proc/sys/net/ipv4/ipfrag_time</span></code> (default: 30 seconds)</p></li>
<li><p><strong>Purpose</strong>: Defines the duration that IP fragments are kept in memory.</p></li>
<li><p><strong>Adjustment</strong>: Decrease this value to reduce the time window where no fragments are received, which can help reduce
delays. Consider the specific needs of your environment as this setting affects all incoming fragments.</p>
<p><strong>Example</strong>: Set to 3 seconds.</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>sudo<span class="w"> </span>sysctl<span class="w"> </span>net.ipv4.ipfrag_time<span class="o">=</span><span class="m">3</span>
</pre></div>
</div>
</li>
</ul>
<p><strong>IP Fragmentation Memory Threshold</strong></p>
<ul>
<li><p><strong>Path</strong>: <code class="docutils literal notranslate"><span class="pre">/proc/sys/net/ipv4/ipfrag_high_thresh</span></code> (default: 262144 bytes)</p></li>
<li><p><strong>Purpose</strong>: Sets the maximum memory used to reassemble IP fragments.</p></li>
<li><p><strong>Adjustment</strong>: Increase this value to allow more memory for fragment reassembly, which can improve handling of larger
data packets.</p>
<p><strong>Example</strong>: Increase to 128 MB.</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>sudo<span class="w"> </span>sysctl<span class="w"> </span>net.ipv4.ipfrag_high_thresh<span class="o">=</span><span class="m">134217728</span>
</pre></div>
</div>
</li>
</ul>
<p><strong>Maximum Buffer Sizes</strong></p>
<ul>
<li><p><strong>Purpose</strong>: Configures the maximum buffer sizes for receiving and sending data, which is critical for high-throughput
data transmission.</p></li>
<li><p><strong>Adjustment</strong>: Set the maximum buffer sizes for both receiving and sending operations.</p>
<p><strong>Commands</strong>:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>sudo<span class="w"> </span>sysctl<span class="w"> </span>-w<span class="w"> </span>net.core.rmem_max<span class="o">=</span><span class="m">2147483647</span>
sudo<span class="w"> </span>sysctl<span class="w"> </span>-w<span class="w"> </span>net.core.rmem_default<span class="o">=</span><span class="m">2147483647</span>
sudo<span class="w"> </span>sysctl<span class="w"> </span>-w<span class="w"> </span>net.core.wmem_max<span class="o">=</span><span class="m">2147483647</span>
sudo<span class="w"> </span>sysctl<span class="w"> </span>-w<span class="w"> </span>net.core.wmem_default<span class="o">=</span><span class="m">2147483647</span>
</pre></div>
</div>
</li>
</ul>
<p>Alternatively, make these settings permanent by adding them to the <code class="docutils literal notranslate"><span class="pre">/etc/sysctl.d/10-fastrtps-max.conf</span></code> file.</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>sudo<span class="w"> </span>gedit<span class="w"> </span>/etc/sysctl.d/10-fastrtps-max.conf
</pre></div>
</div>
<p>add blow lines to the file:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>net.core.rmem_max<span class="o">=</span><span class="m">2147483647</span>
net.core.rmem_default<span class="o">=</span><span class="m">2147483647</span>
net.core.wmem_max<span class="o">=</span><span class="m">2147483647</span>
net.core.wmem_default<span class="o">=</span><span class="m">2147483647</span>
</pre></div>
</div>
<p>then save and exit the file. run <code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">sysctl</span> <span class="pre">-p</span></code> to apply the changes.</p>
<p>For detailed guidance, refer
to <a class="reference external" href="https://docs.ros.org/en/foxy/How-To-Guides/DDS-tuning.html">ROS 2 DDS Tuning Documentation</a>.</p>
</section>
<section id="fast-dds-configuration">
<h2><span class="section-number">5.1.4.2. </span>Fast DDS Configuration<a class="headerlink" href="#fast-dds-configuration" title="Link to this heading"></a></h2>
<p>Below is an example of a Fast DDS configuration file optimized for ROS2 usage with the Orbbec camera. This configuration
enhances the overall data transmission by adjusting buffer sizes and transport settings.</p>
<p><strong>Configuration File:</strong> <code class="docutils literal notranslate"><span class="pre">shm_fastdds.xml</span></code></p>
<p>Place this file in the <code class="docutils literal notranslate"><span class="pre">$HOME</span></code> directory.</p>
<div class="highlight-xml notranslate"><div class="highlight"><pre><span></span><span class="cp">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</span>
<span class="nt">&lt;profiles</span><span class="w"> </span><span class="na">xmlns=</span><span class="s">&quot;http://www.eprosima.com/XMLSchemas/fastRTPS_Profiles&quot;</span><span class="nt">&gt;</span>
<span class="w"> </span><span class="nt">&lt;transport_descriptors&gt;</span>
<span class="w"> </span><span class="nt">&lt;transport_descriptor&gt;</span>
<span class="w"> </span><span class="nt">&lt;transport_id&gt;</span>UDP_transport<span class="nt">&lt;/transport_id&gt;</span>
<span class="w"> </span><span class="nt">&lt;type&gt;</span>UDPv4<span class="nt">&lt;/type&gt;</span>
<span class="w"> </span><span class="nt">&lt;maxInitialPeersRange&gt;</span>10<span class="nt">&lt;/maxInitialPeersRange&gt;</span>
<span class="w"> </span><span class="nt">&lt;maxMessageSize&gt;</span>65000<span class="nt">&lt;/maxMessageSize&gt;</span>
<span class="w"> </span><span class="nt">&lt;sendBufferSize&gt;</span>1048576<span class="nt">&lt;/sendBufferSize&gt;</span>
<span class="w"> </span><span class="nt">&lt;receiveBufferSize&gt;</span>1048576<span class="nt">&lt;/receiveBufferSize&gt;</span>
<span class="w"> </span><span class="nt">&lt;/transport_descriptor&gt;</span>
<span class="w"> </span><span class="nt">&lt;/transport_descriptors&gt;</span>
<span class="w"> </span><span class="nt">&lt;participant</span><span class="w"> </span><span class="na">profile_name=</span><span class="s">&quot;participant_profile_ros2&quot;</span><span class="w"> </span><span class="na">is_default_profile=</span><span class="s">&quot;true&quot;</span><span class="nt">&gt;</span>
<span class="w"> </span><span class="nt">&lt;rtps&gt;</span>
<span class="w"> </span><span class="nt">&lt;name&gt;</span>profile_for_ros2_context<span class="nt">&lt;/name&gt;</span>
<span class="w"> </span><span class="nt">&lt;userTransports&gt;</span>
<span class="w"> </span><span class="nt">&lt;transport_id&gt;</span>UDP_transport<span class="nt">&lt;/transport_id&gt;</span>
<span class="w"> </span><span class="nt">&lt;/userTransports&gt;</span>
<span class="w"> </span><span class="nt">&lt;useBuiltinTransports&gt;</span>false<span class="nt">&lt;/useBuiltinTransports&gt;</span>
<span class="w"> </span><span class="nt">&lt;sendSocketBufferSize&gt;</span>1048576<span class="nt">&lt;/sendSocketBufferSize&gt;</span>
<span class="w"> </span><span class="nt">&lt;listenSocketBufferSize&gt;</span>1048576<span class="nt">&lt;/listenSocketBufferSize&gt;</span>
<span class="w"> </span><span class="nt">&lt;builtin&gt;</span>
<span class="w"> </span><span class="nt">&lt;initialPeersList&gt;</span>
<span class="w"> </span><span class="nt">&lt;locator&gt;</span>
<span class="w"> </span><span class="nt">&lt;udpv4&gt;</span>
<span class="w"> </span><span class="nt">&lt;address&gt;</span>127.0.0.1<span class="nt">&lt;/address&gt;</span>
<span class="w"> </span><span class="nt">&lt;/udpv4&gt;</span>
<span class="w"> </span><span class="nt">&lt;/locator&gt;</span>
<span class="w"> </span><span class="nt">&lt;/initialPeersList&gt;</span>
<span class="w"> </span><span class="nt">&lt;/builtin&gt;</span>
<span class="w"> </span><span class="nt">&lt;/rtps&gt;</span>
<span class="w"> </span><span class="nt">&lt;/participant&gt;</span>
<span class="w"> </span><span class="nt">&lt;data_writer</span><span class="w"> </span><span class="na">profile_name=</span><span class="s">&quot;default publisher profile&quot;</span><span class="w"> </span><span class="na">is_default_profile=</span><span class="s">&quot;true&quot;</span><span class="nt">&gt;</span>
<span class="w"> </span><span class="nt">&lt;qos&gt;</span>
<span class="w"> </span><span class="nt">&lt;publishMode&gt;</span>
<span class="w"> </span><span class="nt">&lt;kind&gt;</span>ASYNCHRONOUS<span class="nt">&lt;/kind&gt;</span>
<span class="w"> </span><span class="nt">&lt;/publishMode&gt;</span>
<span class="w"> </span><span class="nt">&lt;latencyBudget&gt;</span>
<span class="w"> </span><span class="nt">&lt;duration&gt;</span>
<span class="w"> </span><span class="nt">&lt;sec&gt;</span>0<span class="nt">&lt;/sec&gt;</span>
<span class="w"> </span><span class="nt">&lt;nanosec&gt;</span>1000000<span class="nt">&lt;/nanosec&gt;</span>
<span class="w"> </span><span class="nt">&lt;/duration&gt;</span>
<span class="w"> </span><span class="nt">&lt;/latencyBudget&gt;</span>
<span class="w"> </span><span class="nt">&lt;/qos&gt;</span>
<span class="w"> </span><span class="nt">&lt;historyMemoryPolicy&gt;</span>PREALLOCATED_WITH_REALLOC<span class="nt">&lt;/historyMemoryPolicy&gt;</span>
<span class="w"> </span><span class="nt">&lt;/data_writer&gt;</span>
<span class="w"> </span><span class="nt">&lt;data_reader</span><span class="w"> </span><span class="na">profile_name=</span><span class="s">&quot;default subscription profile&quot;</span><span class="w"> </span><span class="na">is_default_profile=</span><span class="s">&quot;true&quot;</span><span class="nt">&gt;</span>
<span class="w"> </span><span class="nt">&lt;qos&gt;</span>
<span class="w"> </span><span class="nt">&lt;data_sharing&gt;</span>
<span class="w"> </span><span class="nt">&lt;kind&gt;</span>AUTOMATIC<span class="nt">&lt;/kind&gt;</span>
<span class="w"> </span><span class="nt">&lt;/data_sharing&gt;</span>
<span class="w"> </span><span class="nt">&lt;latencyBudget&gt;</span>
<span class="w"> </span><span class="nt">&lt;duration&gt;</span>
<span class="w"> </span><span class="nt">&lt;sec&gt;</span>0<span class="nt">&lt;/sec&gt;</span>
<span class="w"> </span><span class="nt">&lt;nanosec&gt;</span>1000000<span class="nt">&lt;/nanosec&gt;</span>
<span class="w"> </span><span class="nt">&lt;/duration&gt;</span>
<span class="w"> </span><span class="nt">&lt;/latencyBudget&gt;</span>
<span class="w"> </span><span class="nt">&lt;/qos&gt;</span>
<span class="w"> </span><span class="nt">&lt;historyMemoryPolicy&gt;</span>PREALLOCATED_WITH_REALLOC<span class="nt">&lt;/historyMemoryPolicy&gt;</span>
<span class="w"> </span><span class="nt">&lt;/data_reader&gt;</span>
<span class="nt">&lt;/profiles&gt;</span>
</pre></div>
</div>
<p><strong>Environment Variables</strong></p>
<p>Set the following environment variables to use the custom Fast DDS profile:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nb">export</span><span class="w"> </span><span class="nv">RMW_IMPLEMENTATION</span><span class="o">=</span>rmw_fastrtps_cpp
<span class="nb">export</span><span class="w"> </span><span class="nv">FASTRTPS_DEFAULT_PROFILES_FILE</span><span class="o">=</span><span class="nv">$HOME</span>/shm_fastdds.xml
<span class="nb">export</span><span class="w"> </span><span class="nv">RMW_FASTRTPS_USE_QOS_FROM_XML</span><span class="o">=</span><span class="m">1</span>
</pre></div>
</div>
<p>This configuration aims to optimize the data flow and reduce transmission delays, improving the responsiveness and
reliability of the Orbbec camera system in a ROS2 environment.</p>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="efficient_intra_process_communication.html" class="btn btn-neutral float-left" title="5.1.3. Efficient intra-process communication:" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="../multi_camera/multi_camera.html" class="btn btn-neutral float-right" title="5.2.1. Multi-Camera" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2025, ORBBEC INC. www.orbbec.com..
<span class="lastupdated">Last updated on 2025-09-18 07:40:35.
</span></p>
</div>
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>