mirror of
https://github.com/orbbec/OrbbecSDK_ROS2.git
synced 2026-10-04 03:57:46 +08:00
778 lines
60 KiB
HTML
778 lines
60 KiB
HTML
|
||||
|
|
|
|||
|
|
<!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>6.4. Performance & Optimization — 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="7. Developer Guide" href="../7_developer_guide/developer_guide.html" />
|
|||
|
|
<link rel="prev" title="6.3. Benchmark Data" href="benchmark_data.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#orbbec-camera-datasheet">1.1.2. Orbbec camera datasheet</a></li>
|
|||
|
|
<li class="toctree-l3"><a class="reference internal" href="../1_overview/introduction.html#support-platforms">1.1.3. 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>
|
|||
|
|
<li class="toctree-l2"><a class="reference internal" href="../3_quickstarts/orbbecviewer.html">3.2. OrbbecViewer tutorial</a><ul>
|
|||
|
|
<li class="toctree-l3"><a class="reference internal" href="../3_quickstarts/orbbecviewer.html#download">3.2.1. Download</a></li>
|
|||
|
|
<li class="toctree-l3"><a class="reference internal" href="../3_quickstarts/orbbecviewer.html#connect-the-device">3.2.2. Connect the device</a></li>
|
|||
|
|
<li class="toctree-l3"><a class="reference internal" href="../3_quickstarts/orbbecviewer.html#camera-control">3.2.3. Camera Control</a></li>
|
|||
|
|
<li class="toctree-l3"><a class="reference internal" href="../3_quickstarts/orbbecviewer.html#device-information-and-firmware-upgrade">3.2.4. Device information and firmware upgrade</a></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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & Management</a></li>
|
|||
|
|
<li class="toctree-l3"><a class="reference internal" href="../4_application_guide/services.html#synchronization-triggering">4.2.4. Synchronization & 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 & 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 & 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"><a class="reference internal" href="../5_advanced_guide/advanced_guide.html">5. Advanced Guide</a><ul>
|
|||
|
|
<li class="toctree-l2"><a class="reference internal" href="../5_advanced_guide/advanced_guide.html#multi-camera">5.1. Multi-Camera</a><ul>
|
|||
|
|
<li class="toctree-l3"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera.html">5.1.1. Multi-Camera</a><ul>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera.html#no-data-stream-from-multiple-cameras">5.1.1.1. No Data Stream from Multiple Cameras</a></li>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera.html#image-topic-frame-rate-too-low-from-multiple-cameras">5.1.1.2. Image topic frame rate too low from Multiple Cameras</a></li>
|
|||
|
|
</ul>
|
|||
|
|
</li>
|
|||
|
|
<li class="toctree-l3"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced.html">5.1.2. Multi_camera synced Instructions</a><ul>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced.html#setup-instructions">5.1.2.1. Setup instructions</a></li>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced.html#checking-camera-port-with-orbbecsdk-ros2">5.1.2.2. Checking camera port with OrbbecSDK_ROS2</a></li>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced.html#orbbecsdk-ros2-multi-camera-synced-configuration">5.1.2.3. OrbbecSDK_ROS2 multi-camera synced configuration</a></li>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced.html#run-the-following-command-to-start-the-multi-camera-synced">5.1.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="../5_advanced_guide/multi_camera/multi_camera_synced_verification_tool.html">5.1.3. Multi_camera_synced_verification_tool</a><ul>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced_verification_tool.html#directory-structure">5.1.3.1. Directory Structure</a></li>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced_verification_tool.html#preparation-for-operation">5.1.3.2. Preparation for operation</a></li>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced_verification_tool.html#run-this-example">5.1.3.3. Run this example</a></li>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced_verification_tool.html#files-that-need-to-be-changed">5.1.3.4. Files that need to be changed</a></li>
|
|||
|
|
</ul>
|
|||
|
|
</li>
|
|||
|
|
<li class="toctree-l3"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html">5.1.4. GMSL_camera</a><ul>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html#single-gmsl-camera">5.1.4.1. Single GMSL camera</a></li>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html#multi-gmsl-camera">5.1.4.2. Multi GMSL camera</a></li>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html#multi-gmsl-camera-synced">5.1.4.3. Multi GMSL camera synced</a></li>
|
|||
|
|
</ul>
|
|||
|
|
</li>
|
|||
|
|
</ul>
|
|||
|
|
</li>
|
|||
|
|
<li class="toctree-l2"><a class="reference internal" href="../5_advanced_guide/advanced_guide.html#configuration-modes">5.2. Configuration & Modes</a><ul>
|
|||
|
|
<li class="toctree-l3"><a class="reference internal" href="../5_advanced_guide/configuration/align_depth_color.html">5.2.1. Aligning Depth to Color in ROS 2</a><ul>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/align_depth_color.html#commands-to-align-and-view-depth-and-color-images">5.2.1.1. Commands to Align and View Depth and Color Images</a></li>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/align_depth_color.html#selecting-topics-in-rviz2">5.2.1.2. Selecting Topics in RViz2</a></li>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/align_depth_color.html#example-of-depth-to-color-overlay">5.2.1.3. Example of Depth to Color Overlay</a></li>
|
|||
|
|
</ul>
|
|||
|
|
</li>
|
|||
|
|
<li class="toctree-l3"><a class="reference internal" href="../5_advanced_guide/configuration/configuration_of_depth_NFOV_and_WFOV_modes.html">5.2.2. Configuration of depth NFOV and WFOV modes</a></li>
|
|||
|
|
<li class="toctree-l3"><a class="reference internal" href="../5_advanced_guide/configuration/depth_work_mode_switch.html">5.2.3. Depth work mode switch</a></li>
|
|||
|
|
<li class="toctree-l3"><a class="reference internal" href="../5_advanced_guide/configuration/disparity_search_offset.html">5.2.4. Disparity_search_offset</a><ul>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/disparity_search_offset.html#function-introduction">5.2.4.1. Function Introduction</a></li>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/disparity_search_offset.html#parameter-introduction">5.2.4.2. Parameter Introduction</a></li>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/disparity_search_offset.html#run-the-launch">5.2.4.3. Run the launch</a></li>
|
|||
|
|
</ul>
|
|||
|
|
</li>
|
|||
|
|
<li class="toctree-l3"><a class="reference internal" href="../5_advanced_guide/configuration/interleave_ae_mode.html">5.2.5. Using interleave_ae with Gemini330 series cameras</a><ul>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/interleave_ae_mode.html#parameter-introduction">5.2.5.1. Parameter Introduction</a></li>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/interleave_ae_mode.html#run-the-launch">5.2.5.2. Run the launch</a></li>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/interleave_ae_mode.html#multi-camera-synced-interleave-ae">5.2.5.3. Multi_camera_synced + Interleave_ae</a></li>
|
|||
|
|
</ul>
|
|||
|
|
</li>
|
|||
|
|
<li class="toctree-l3"><a class="reference internal" href="../5_advanced_guide/configuration/predefined_presets.html">5.2.6. Predefined presets</a></li>
|
|||
|
|
<li class="toctree-l3"><a class="reference internal" href="../5_advanced_guide/configuration/net_camera.html">5.2.7. Net_camera</a><ul>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/net_camera.html#femto-mega-gemini-435le">5.2.7.1. Femto Mega & Gemini 435Le</a></li>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/net_camera.html#gemini-335le">5.2.7.2. Gemini 335Le</a></li>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/net_camera.html#multi-net-camera">5.2.7.3. Multi Net camera</a></li>
|
|||
|
|
</ul>
|
|||
|
|
</li>
|
|||
|
|
</ul>
|
|||
|
|
</li>
|
|||
|
|
</ul>
|
|||
|
|
</li>
|
|||
|
|
<li class="toctree-l1 current"><a class="reference internal" href="benchmark.html">6. Benchmark</a><ul class="current">
|
|||
|
|
<li class="toctree-l2"><a class="reference internal" href="introduction.html">6.1. Introduction</a><ul>
|
|||
|
|
<li class="toctree-l3"><a class="reference internal" href="introduction.html#common-benchmark-node">6.1.1. common benchmark node</a></li>
|
|||
|
|
<li class="toctree-l3"><a class="reference internal" href="introduction.html#service-benchmark-node">6.1.2. service benchmark node</a></li>
|
|||
|
|
</ul>
|
|||
|
|
</li>
|
|||
|
|
<li class="toctree-l2"><a class="reference internal" href="benchmark_usage.html">6.2. Benchmark Usage</a><ul>
|
|||
|
|
<li class="toctree-l3"><a class="reference internal" href="benchmark_usage.html#using-common-benchmark-node">6.2.1. Using common benchmark node</a></li>
|
|||
|
|
<li class="toctree-l3"><a class="reference internal" href="benchmark_usage.html#using-service-benchmark-node">6.2.2. Using service benchmark node</a><ul>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="benchmark_usage.html#ros2-c">6.2.2.1. ROS2 C++</a></li>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="benchmark_usage.html#ros2-python">6.2.2.2. ROS2 Python</a></li>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="benchmark_usage.html#example-yaml-configuration">6.2.2.3. <strong>Example YAML configuration</strong></a></li>
|
|||
|
|
</ul>
|
|||
|
|
</li>
|
|||
|
|
</ul>
|
|||
|
|
</li>
|
|||
|
|
<li class="toctree-l2"><a class="reference internal" href="benchmark_data.html">6.3. Benchmark Data</a></li>
|
|||
|
|
<li class="toctree-l2 current"><a class="current reference internal" href="#">6.4. Performance & Optimization</a><ul>
|
|||
|
|
<li class="toctree-l3"><a class="reference internal" href="#ob-benchmark-tool">6.4.1. Ob_benchmark tool</a><ul>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="#tool-configuration-start-benchmark-params-json">6.4.1.1. Tool Configuration (start_benchmark_params.json)</a></li>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="#camera-configuration-launch-files">6.4.1.2. Camera configuration (launch files)</a></li>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="#running-the-ob-benchmark-tool">6.4.1.3. Running the ob_benchmark tool</a></li>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="#output-data-files">6.4.1.4. Output Data Files</a></li>
|
|||
|
|
</ul>
|
|||
|
|
</li>
|
|||
|
|
<li class="toctree-l3"><a class="reference internal" href="#reducing-cpu-usage-with-orbbec-ros-package">6.4.2. Reducing CPU Usage with Orbbec ROS Package</a><ul>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="#recommended-settings-for-lower-cpu-usage">6.4.2.1. Recommended Settings for Lower CPU Usage</a></li>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="#launch-files-used-for-testing">6.4.2.2. Launch Files Used for Testing</a></li>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="#test-environment">6.4.2.3. Test environment</a></li>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="#test-setup">6.4.2.4. Test Setup</a></li>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="#test-results">6.4.2.5. Test Results</a></li>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="#further-optimizationa">6.4.2.6. Further Optimizationa</a></li>
|
|||
|
|
</ul>
|
|||
|
|
</li>
|
|||
|
|
<li class="toctree-l3"><a class="reference internal" href="#efficient-intra-process-communication">6.4.3. Efficient intra-process communication</a><ul>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="#introduction">6.4.3.1. Introduction</a></li>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="#example">6.4.3.2. Example</a></li>
|
|||
|
|
</ul>
|
|||
|
|
</li>
|
|||
|
|
<li class="toctree-l3"><a class="reference internal" href="#fast-dds-optimization-for-orbbec-camera-with-ros2">6.4.4. Fast DDS Optimization for Orbbec Camera with ROS2</a><ul>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="#adjusting-system-parameters">6.4.4.1. Adjusting System Parameters</a></li>
|
|||
|
|
<li class="toctree-l4"><a class="reference internal" href="#fast-dds-configuration">6.4.4.2. Fast DDS Configuration</a></li>
|
|||
|
|
</ul>
|
|||
|
|
</li>
|
|||
|
|
</ul>
|
|||
|
|
</li>
|
|||
|
|
</ul>
|
|||
|
|
</li>
|
|||
|
|
<li class="toctree-l1"><a class="reference internal" href="../7_developer_guide/developer_guide.html">7. Developer Guide</a><ul>
|
|||
|
|
<li class="toctree-l2"><a class="reference internal" href="../7_developer_guide/building_a_Debian_Package.html">7.1. Building a Debian Package</a><ul>
|
|||
|
|
<li class="toctree-l3"><a class="reference internal" href="../7_developer_guide/building_a_Debian_Package.html#preparing-the-environment">7.1.1. Preparing the Environment</a></li>
|
|||
|
|
<li class="toctree-l3"><a class="reference internal" href="../7_developer_guide/building_a_Debian_Package.html#configuring-ros-dependencies">7.1.2. Configuring ROS Dependencies</a></li>
|
|||
|
|
<li class="toctree-l3"><a class="reference internal" href="../7_developer_guide/building_a_Debian_Package.html#building-the-package">7.1.3. Building the Package</a></li>
|
|||
|
|
</ul>
|
|||
|
|
</li>
|
|||
|
|
</ul>
|
|||
|
|
</li>
|
|||
|
|
<li class="toctree-l1"><a class="reference internal" href="../8_FAQ/FAQ.html">8. Frequently Asked Questions</a><ul>
|
|||
|
|
<li class="toctree-l2"><a class="reference internal" href="../8_FAQ/FAQ.html#unexpected-crash">8.1. Unexpected Crash</a></li>
|
|||
|
|
<li class="toctree-l2"><a class="reference internal" href="../8_FAQ/FAQ.html#no-data-stream-from-multiple-cameras">8.2. No Data Stream from Multiple Cameras</a></li>
|
|||
|
|
<li class="toctree-l2"><a class="reference internal" href="../8_FAQ/FAQ.html#additional-troubleshooting">8.3. Additional Troubleshooting</a></li>
|
|||
|
|
<li class="toctree-l2"><a class="reference internal" href="../8_FAQ/FAQ.html#why-are-there-so-many-launch-files">8.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="benchmark.html"><span class="section-number">6. </span>Benchmark</a></li>
|
|||
|
|
<li class="breadcrumb-item active"><span class="section-number">6.4. </span>Performance & Optimization</li>
|
|||
|
|
<li class="wy-breadcrumbs-aside">
|
|||
|
|
<a href="../../_sources/source/6_benchmark/performance.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="performance-optimization">
|
|||
|
|
<h1><span class="section-number">6.4. </span>Performance & Optimization<a class="headerlink" href="#performance-optimization" title="Link to this heading"></a></h1>
|
|||
|
|
<section id="ob-benchmark-tool">
|
|||
|
|
<h2><span class="section-number">6.4.1. </span>Ob_benchmark tool<a class="headerlink" href="#ob-benchmark-tool" title="Link to this heading"></a></h2>
|
|||
|
|
<blockquote>
|
|||
|
|
<div><p>The goal of this tool is to benchmark the performance of various OrbbecSDK_ROS2 camera configurations. The benchmark results depend on the camera and settings used.(Currently only works with ROS2 Humble)</p>
|
|||
|
|
</div></blockquote>
|
|||
|
|
<p>You can find example usage code in the <a class="reference external" href="https://github.com/orbbec/OrbbecSDK_ROS2/tree/v2-main/orbbec_camera/examples">example</a>.</p>
|
|||
|
|
<section id="tool-configuration-start-benchmark-params-json">
|
|||
|
|
<h3><span class="section-number">6.4.1.1. </span>Tool Configuration (<a class="reference external" href="https://github.com/orbbec/OrbbecSDK_ROS2/blob/v2-main/orbbec_camera/config/tools/startbenchmark/start_benchmark_params.json">start_benchmark_params.json</a>)<a class="headerlink" href="#tool-configuration-start-benchmark-params-json" title="Link to this heading"></a></h3>
|
|||
|
|
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
|
|||
|
|
<span class="w"> </span><span class="nt">"start_benchmark_params"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
|||
|
|
<span class="w"> </span><span class="nt">"camera_name"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
|
|||
|
|
<span class="w"> </span><span class="s2">"camera_01"</span><span class="p">,</span>
|
|||
|
|
<span class="w"> </span><span class="s2">"camera_02"</span><span class="p">,</span>
|
|||
|
|
<span class="w"> </span><span class="s2">"camera_03"</span><span class="p">,</span>
|
|||
|
|
<span class="w"> </span><span class="s2">"camera_04"</span>
|
|||
|
|
<span class="w"> </span><span class="p">],</span>
|
|||
|
|
<span class="w"> </span><span class="nt">"process_name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"component_conta"</span><span class="p">,</span>
|
|||
|
|
<span class="w"> </span><span class="nt">"switch_cycle"</span><span class="p">:</span><span class="w"> </span><span class="mi">300</span><span class="p">,</span>
|
|||
|
|
<span class="w"> </span><span class="nt">"test_cycle"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span>
|
|||
|
|
<span class="w"> </span><span class="nt">"skip_number"</span><span class="p">:</span><span class="w"> </span><span class="mi">30</span>
|
|||
|
|
<span class="w"> </span><span class="p">}</span>
|
|||
|
|
<span class="p">}</span>
|
|||
|
|
</pre></div>
|
|||
|
|
</div>
|
|||
|
|
<ul class="simple">
|
|||
|
|
<li><p><code class="docutils literal notranslate"><span class="pre">camera_name</span></code>: Names of the cameras to be configured. Example: <code class="docutils literal notranslate"><span class="pre">"camera_01"</span></code>, <code class="docutils literal notranslate"><span class="pre">"camera_02"</span></code>, etc.</p></li>
|
|||
|
|
<li><p><code class="docutils literal notranslate"><span class="pre">process_name</span></code>: The name of the process to be monitored. For example, <code class="docutils literal notranslate"><span class="pre">"component_conta"</span></code> will monitor the data of the container process.</p></li>
|
|||
|
|
<li><p><code class="docutils literal notranslate"><span class="pre">switch_cycle</span></code>: The cycle time for switching configurations, in seconds. For example, setting it to <code class="docutils literal notranslate"><span class="pre">300</span></code> means the configuration will switch every 300 seconds.</p></li>
|
|||
|
|
<li><p><code class="docutils literal notranslate"><span class="pre">test_cycle</span></code>: The testing cycle, in seconds. For example, setting it to <code class="docutils literal notranslate"><span class="pre">1</span></code> means the tool will collect data for the monitored process every 1 second.</p></li>
|
|||
|
|
<li><p><code class="docutils literal notranslate"><span class="pre">skip_number</span></code>: The number of data points to skip. For example, setting it to <code class="docutils literal notranslate"><span class="pre">30</span></code> means that the first 30 data points will be ignored.</p></li>
|
|||
|
|
</ul>
|
|||
|
|
</section>
|
|||
|
|
<section id="camera-configuration-launch-files">
|
|||
|
|
<h3><span class="section-number">6.4.1.2. </span>Camera configuration (launch files)<a class="headerlink" href="#camera-configuration-launch-files" title="Link to this heading"></a></h3>
|
|||
|
|
<p>In the launch folder, there are multiple.launch.py files (<code class="docutils literal notranslate"><span class="pre">ob_benchmark_0.launch.py</span></code>, <code class="docutils literal notranslate"><span class="pre">ob_benchmark_1.launch.py</span></code>, …, <code class="docutils literal notranslate"><span class="pre">ob_benchmark_19.launch.py</span></code>). Each file corresponds to a different camera configuration.</p>
|
|||
|
|
</section>
|
|||
|
|
<section id="running-the-ob-benchmark-tool">
|
|||
|
|
<h3><span class="section-number">6.4.1.3. </span>Running the ob_benchmark tool<a class="headerlink" href="#running-the-ob-benchmark-tool" title="Link to this heading"></a></h3>
|
|||
|
|
<p>To run the tool, use the following commands:</p>
|
|||
|
|
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nb">source</span><span class="w"> </span>install/setup.bash
|
|||
|
|
ros2<span class="w"> </span>run<span class="w"> </span>orbbec_camera<span class="w"> </span>ob_benchmark_node
|
|||
|
|
</pre></div>
|
|||
|
|
</div>
|
|||
|
|
</section>
|
|||
|
|
<section id="output-data-files">
|
|||
|
|
<h3><span class="section-number">6.4.1.4. </span>Output Data Files<a class="headerlink" href="#output-data-files" title="Link to this heading"></a></h3>
|
|||
|
|
<p>The output data files will be stored in the ob_benchmark folder with filenames like <code class="docutils literal notranslate"><span class="pre">0.csv</span></code>, <code class="docutils literal notranslate"><span class="pre">1.csv</span></code>, …, 19.csv. For example:</p>
|
|||
|
|
<ul class="simple">
|
|||
|
|
<li><p><code class="docutils literal notranslate"><span class="pre">0.csv</span></code> contains data from the <code class="docutils literal notranslate"><span class="pre">ob_benchmark_0.launch.py</span></code> configuration.</p></li>
|
|||
|
|
<li><p><code class="docutils literal notranslate"><span class="pre">1.csv</span></code> contains data from the <code class="docutils literal notranslate"><span class="pre">ob_benchmark_1.launch.py</span></code> configuration.</p></li>
|
|||
|
|
</ul>
|
|||
|
|
</section>
|
|||
|
|
</section>
|
|||
|
|
<section id="reducing-cpu-usage-with-orbbec-ros-package">
|
|||
|
|
<h2><span class="section-number">6.4.2. </span>Reducing CPU Usage with Orbbec ROS Package<a class="headerlink" href="#reducing-cpu-usage-with-orbbec-ros-package" title="Link to this heading"></a></h2>
|
|||
|
|
<p>You can find example usage code in the <a class="reference external" href="https://github.com/orbbec/OrbbecSDK_ROS2/tree/v2-main/orbbec_camera/examples">example</a>.</p>
|
|||
|
|
<p>This document outlines strategies for minimizing CPU usage in the <strong>OrbbecSDK_ROS2 v2</strong> environment when using <strong>Gemini 330 series cameras</strong>. The firmware version must be <strong>no lower than 1.4.10</strong>, and <code class="docutils literal notranslate"><span class="pre">device</span></code> should be set to <strong>Default</strong>.</p>
|
|||
|
|
<section id="recommended-settings-for-lower-cpu-usage">
|
|||
|
|
<h3><span class="section-number">6.4.2.1. </span>Recommended Settings for Lower CPU Usage<a class="headerlink" href="#recommended-settings-for-lower-cpu-usage" title="Link to this heading"></a></h3>
|
|||
|
|
<p>To achieve the lowest possible CPU usage in OrbbecSDK_ROS2, it is recommended to configure the following parameters.</p>
|
|||
|
|
<table border="1" class="docutils">
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Parameter</th>
|
|||
|
|
<th>Recommendation</th>
|
|||
|
|
<th>Note</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr>
|
|||
|
|
<td><code>uvc_backend</code></td>
|
|||
|
|
<td><code>v4l2</code></td>
|
|||
|
|
<td>Lower CPU usage compared to <code>libuvc</code></td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td><code>color_format</code></td>
|
|||
|
|
<td><code>RGB</code></td>
|
|||
|
|
<td>Lower CPU usage than <code>MJPG</code></td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td><code>filter</code></td>
|
|||
|
|
<td>Only <code>hardware_noise_removal_filter</code></td>
|
|||
|
|
<td>Other filters significantly increase CPU usage</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table></section>
|
|||
|
|
<section id="launch-files-used-for-testing">
|
|||
|
|
<h3><span class="section-number">6.4.2.2. </span>Launch Files Used for Testing<a class="headerlink" href="#launch-files-used-for-testing" title="Link to this heading"></a></h3>
|
|||
|
|
<ul class="simple">
|
|||
|
|
<li><p><code class="docutils literal notranslate"><span class="pre">gemini_330_series_lower_cpu_usage.launch.py</span></code></p></li>
|
|||
|
|
<li><p><code class="docutils literal notranslate"><span class="pre">multi_camera_lower_cpu_usage.launch.py</span></code></p></li>
|
|||
|
|
</ul>
|
|||
|
|
</section>
|
|||
|
|
<section id="test-environment">
|
|||
|
|
<h3><span class="section-number">6.4.2.3. </span>Test environment<a class="headerlink" href="#test-environment" title="Link to this heading"></a></h3>
|
|||
|
|
<p><strong>Hardware Configuration</strong></p>
|
|||
|
|
<ul class="simple">
|
|||
|
|
<li><p><strong>CPU</strong>: Intel i7-8700 @ 3.20GHz</p></li>
|
|||
|
|
<li><p><strong>Memory</strong>: 24 GB</p></li>
|
|||
|
|
<li><p><strong>Storage</strong>: Micron 2200S NVMe 256GB</p></li>
|
|||
|
|
<li><p><strong>GPU</strong>: NVIDIA GeForce GTX 1660Ti</p></li>
|
|||
|
|
<li><p><strong>OS</strong>: Ubuntu22.04</p></li>
|
|||
|
|
</ul>
|
|||
|
|
<p><strong>ROS Configuration</strong></p>
|
|||
|
|
<ul class="simple">
|
|||
|
|
<li><p><strong>ROS Version</strong>: ROS2 Humble</p></li>
|
|||
|
|
<li><p><strong>SDK Version</strong>: OrbbecSDK_ROS2 v2.2.1</p></li>
|
|||
|
|
</ul>
|
|||
|
|
<p><strong>Camera Setup</strong></p>
|
|||
|
|
<ul class="simple">
|
|||
|
|
<li><p>Devices: 2x Gemini 335, 1x Gemini 336, 1x Gemini 336L</p></li>
|
|||
|
|
<li><p>Firmware Version: 1.4.10</p></li>
|
|||
|
|
</ul>
|
|||
|
|
</section>
|
|||
|
|
<section id="test-setup">
|
|||
|
|
<h3><span class="section-number">6.4.2.4. </span>Test Setup<a class="headerlink" href="#test-setup" title="Link to this heading"></a></h3>
|
|||
|
|
<p><strong>Stream Settings:</strong></p>
|
|||
|
|
<ul class="simple">
|
|||
|
|
<li><p>Depth / IR Left / IR Right: 848×480 @ 30fps</p></li>
|
|||
|
|
<li><p>Color: 848×480 @ 30fps</p></li>
|
|||
|
|
</ul>
|
|||
|
|
<p>Note: The following CPU usage data focuses on <code class="docutils literal notranslate"><span class="pre">uvc_backend</span></code>, <code class="docutils literal notranslate"><span class="pre">color_format</span></code> and various filter combinations.</p>
|
|||
|
|
</section>
|
|||
|
|
<section id="test-results">
|
|||
|
|
<h3><span class="section-number">6.4.2.5. </span>Test Results<a class="headerlink" href="#test-results" title="Link to this heading"></a></h3>
|
|||
|
|
<p><strong><code class="docutils literal notranslate"><span class="pre">uvc_backend</span></code> Comparison (RGB format)</strong></p>
|
|||
|
|
<table border="1" class="docutils">
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>libuvc CPU Usage</th>
|
|||
|
|
<th>v4l2 CPU Usage</th>
|
|||
|
|
<th>Absolute Change</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr>
|
|||
|
|
<td>182.8%</td>
|
|||
|
|
<td>118.8%</td>
|
|||
|
|
<td>-64.0%</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table><p>The CPU usage can be significantly reduced with v4l2 backend. In our implementation, v4l2 works without requiring any patches to the Linux kernel, allowing users to easily switch between v4l2 and libuvc and maintaining full compatibility with standard Linux distributions.</p>
|
|||
|
|
<p><strong><code class="docutils literal notranslate"><span class="pre">color_format</span></code> Comparison (MJPG vs RGB)</strong></p>
|
|||
|
|
<table border="1" class="docutils">
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Backend</th>
|
|||
|
|
<th>MJPG CPU Usage</th>
|
|||
|
|
<th>RGB CPU Usage</th>
|
|||
|
|
<th>Absolute Change</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr>
|
|||
|
|
<td>libuvc</td>
|
|||
|
|
<td>347.7%</td>
|
|||
|
|
<td>182.8%</td>
|
|||
|
|
<td>-164.9%</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td>v4l2</td>
|
|||
|
|
<td>170.0%</td>
|
|||
|
|
<td>118.8%</td>
|
|||
|
|
<td>-51.2%</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table><p>The CPU usage can be reduced if the RGB format is selected instead of MJPG, since the decoding of MJPG image will consume the host CPU resource.</p>
|
|||
|
|
<p><strong>Filter Configuration Impact</strong></p>
|
|||
|
|
<table border="1" class="docutils">
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Filters Applied</th>
|
|||
|
|
<th>libuvc CPU Usage</th>
|
|||
|
|
<th>CPU Usage Increase</th>
|
|||
|
|
<th>v4l2 CPU Usage</th>
|
|||
|
|
<th>CPU Usage Increase</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr>
|
|||
|
|
<td>No Filter (benchmark)</td>
|
|||
|
|
<td>182.8%</td>
|
|||
|
|
<td>0.0%(benchmark)</td>
|
|||
|
|
<td>118.8%</td>
|
|||
|
|
<td>0.0%(benchmark)</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td><code>(software)noise_removal_filter</code></td>
|
|||
|
|
<td>218.0%</td>
|
|||
|
|
<td>+35.2%</td>
|
|||
|
|
<td>128.5%</td>
|
|||
|
|
<td>+9.7%</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td><code>(software)noise_removal_filter + spatial_filter</code></td>
|
|||
|
|
<td>469.6%</td>
|
|||
|
|
<td>+286.8%</td>
|
|||
|
|
<td>336.7%</td>
|
|||
|
|
<td>+217.9%</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td><code>hardware_noise_removal_filter</code></td>
|
|||
|
|
<td>186.3%</td>
|
|||
|
|
<td>+3.5%</td>
|
|||
|
|
<td>115.4%</td>
|
|||
|
|
<td>-3.4%</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td><code>hardware_noise_removal_filter + spatial_filter</code></td>
|
|||
|
|
<td>251.3%</td>
|
|||
|
|
<td>+68.5%</td>
|
|||
|
|
<td>152.5%</td>
|
|||
|
|
<td>+33.7%</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table><p>Based on the test results, using only the <code class="docutils literal notranslate"><span class="pre">hardware_noise_removal_filter</span></code> results in a negligible change in CPU usage for both <code class="docutils literal notranslate"><span class="pre">libuvc</span></code> (+3.5%) and <code class="docutils literal notranslate"><span class="pre">v4l2</span></code> (-3.4%) compared to the no-filter benchmark, as this filter runs internally on the camera hardware. In contrast, other filters execute on the host system. Adding the <code class="docutils literal notranslate"><span class="pre">spatial_filter</span></code> to the hardware filter leads to a moderate increase in CPU usage, while applying the software-based <code class="docutils literal notranslate"><span class="pre">noise_removal_filter</span></code> —either alone or combined with <code class="docutils literal notranslate"><span class="pre">spatial_filter</span></code> —significantly increases CPU load. To maintain low CPU usage, it is recommended to avoid software-based filters and rely solely on the <code class="docutils literal notranslate"><span class="pre">hardware_noise_removal_filter</span></code>.</p>
|
|||
|
|
</section>
|
|||
|
|
<section id="further-optimizationa">
|
|||
|
|
<h3><span class="section-number">6.4.2.6. </span>Further Optimizationa<a class="headerlink" href="#further-optimizationa" title="Link to this heading"></a></h3>
|
|||
|
|
<table border="1" class="docutils">
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Parameter</th>
|
|||
|
|
<th>Recommendation</th>
|
|||
|
|
<th>Note</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr>
|
|||
|
|
<td><code>depth_registration</code></td>
|
|||
|
|
<td><code>false</code> or <code>true</code> with <code>align_mode=HW</code></td>
|
|||
|
|
<td>Software alignment consumes more CPU</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td><code>enable_point_cloud</code></td>
|
|||
|
|
<td><code>false</code></td>
|
|||
|
|
<td>Disabling point cloud reduces CPU usage</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td><code>enable_colored_point_cloud</code></td>
|
|||
|
|
<td><code>false</code></td>
|
|||
|
|
<td>Disabling colored point cloud reduces CPU usage</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table></section>
|
|||
|
|
</section>
|
|||
|
|
<section id="efficient-intra-process-communication">
|
|||
|
|
<h2><span class="section-number">6.4.3. </span>Efficient intra-process communication<a class="headerlink" href="#efficient-intra-process-communication" title="Link to this heading"></a></h2>
|
|||
|
|
<section id="introduction">
|
|||
|
|
<h3><span class="section-number">6.4.3.1. </span>Introduction<a class="headerlink" href="#introduction" title="Link to this heading"></a></h3>
|
|||
|
|
<p>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.</p>
|
|||
|
|
<p>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 <a class="reference external" href="https://docs.ros.org/en/rolling/Tutorials/Composition.html">here</a>.</p>
|
|||
|
|
<p>Further details on efficient intra-process communication can be found <a class="reference external" href="https://docs.ros.org/en/humble/Tutorials/Intra-Process-Communication.html#efficient-intra-process-communication">here</a>.</p>
|
|||
|
|
</section>
|
|||
|
|
<section id="example">
|
|||
|
|
<h3><span class="section-number">6.4.3.2. </span>Example<a class="headerlink" href="#example" title="Link to this heading"></a></h3>
|
|||
|
|
<p><strong>Manually loading multiple components into the same process</strong></p>
|
|||
|
|
<ul>
|
|||
|
|
<li><p>Start the component:</p>
|
|||
|
|
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>run<span class="w"> </span>rclcpp_components<span class="w"> </span>component_container
|
|||
|
|
</pre></div>
|
|||
|
|
</div>
|
|||
|
|
</li>
|
|||
|
|
<li><p>Add the wrapper:</p>
|
|||
|
|
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>component<span class="w"> </span>load<span class="w"> </span>/ComponentManager<span class="w"> </span>orbbec_camera<span class="w"> </span>orbbec_camera::OBCameraNodeDriver<span class="w"> </span>-e<span class="w"> </span>use_intra_process_comms:<span class="o">=</span><span class="nb">true</span>
|
|||
|
|
</pre></div>
|
|||
|
|
</div>
|
|||
|
|
<p>Load other component nodes (consumers of the wrapper topics) in the same way.</p>
|
|||
|
|
</li>
|
|||
|
|
</ul>
|
|||
|
|
<p><strong>Using a launch file</strong></p>
|
|||
|
|
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>launch<span class="w"> </span>orbbec_camera<span class="w"> </span>gemini_intra_process_demo_launch.py
|
|||
|
|
</pre></div>
|
|||
|
|
</div>
|
|||
|
|
<p><strong>Limitations</strong></p>
|
|||
|
|
<ul class="simple">
|
|||
|
|
<li><p>Node components are currently not supported on RCLPY</p></li>
|
|||
|
|
<li><p>Compressed images using <code class="docutils literal notranslate"><span class="pre">image_transport</span></code> will be disabled as this isn’t supported with intra-process communication</p></li>
|
|||
|
|
</ul>
|
|||
|
|
</section>
|
|||
|
|
</section>
|
|||
|
|
<section id="fast-dds-optimization-for-orbbec-camera-with-ros2">
|
|||
|
|
<h2><span class="section-number">6.4.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></h2>
|
|||
|
|
<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">
|
|||
|
|
<h3><span class="section-number">6.4.4.1. </span>Adjusting System Parameters<a class="headerlink" href="#adjusting-system-parameters" title="Link to this heading"></a></h3>
|
|||
|
|
<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">
|
|||
|
|
<h3><span class="section-number">6.4.4.2. </span>Fast DDS Configuration<a class="headerlink" href="#fast-dds-configuration" title="Link to this heading"></a></h3>
|
|||
|
|
<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"><?xml version="1.0" encoding="UTF-8"?></span>
|
|||
|
|
<span class="nt"><profiles</span><span class="w"> </span><span class="na">xmlns=</span><span class="s">"http://www.eprosima.com/XMLSchemas/fastRTPS_Profiles"</span><span class="nt">></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><transport_descriptors></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><transport_descriptor></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><transport_id></span>UDP_transport<span class="nt"></transport_id></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><type></span>UDPv4<span class="nt"></type></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><maxInitialPeersRange></span>10<span class="nt"></maxInitialPeersRange></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><maxMessageSize></span>65000<span class="nt"></maxMessageSize></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><sendBufferSize></span>1048576<span class="nt"></sendBufferSize></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><receiveBufferSize></span>1048576<span class="nt"></receiveBufferSize></span>
|
|||
|
|
<span class="w"> </span><span class="nt"></transport_descriptor></span>
|
|||
|
|
<span class="w"> </span><span class="nt"></transport_descriptors></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><participant</span><span class="w"> </span><span class="na">profile_name=</span><span class="s">"participant_profile_ros2"</span><span class="w"> </span><span class="na">is_default_profile=</span><span class="s">"true"</span><span class="nt">></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><rtps></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><name></span>profile_for_ros2_context<span class="nt"></name></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><userTransports></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><transport_id></span>UDP_transport<span class="nt"></transport_id></span>
|
|||
|
|
<span class="w"> </span><span class="nt"></userTransports></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><useBuiltinTransports></span>false<span class="nt"></useBuiltinTransports></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><sendSocketBufferSize></span>1048576<span class="nt"></sendSocketBufferSize></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><listenSocketBufferSize></span>1048576<span class="nt"></listenSocketBufferSize></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><builtin></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><initialPeersList></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><locator></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><udpv4></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><address></span>127.0.0.1<span class="nt"></address></span>
|
|||
|
|
<span class="w"> </span><span class="nt"></udpv4></span>
|
|||
|
|
<span class="w"> </span><span class="nt"></locator></span>
|
|||
|
|
<span class="w"> </span><span class="nt"></initialPeersList></span>
|
|||
|
|
<span class="w"> </span><span class="nt"></builtin></span>
|
|||
|
|
<span class="w"> </span><span class="nt"></rtps></span>
|
|||
|
|
<span class="w"> </span><span class="nt"></participant></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><data_writer</span><span class="w"> </span><span class="na">profile_name=</span><span class="s">"default publisher profile"</span><span class="w"> </span><span class="na">is_default_profile=</span><span class="s">"true"</span><span class="nt">></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><qos></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><publishMode></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><kind></span>ASYNCHRONOUS<span class="nt"></kind></span>
|
|||
|
|
<span class="w"> </span><span class="nt"></publishMode></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><latencyBudget></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><duration></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><sec></span>0<span class="nt"></sec></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><nanosec></span>1000000<span class="nt"></nanosec></span>
|
|||
|
|
<span class="w"> </span><span class="nt"></duration></span>
|
|||
|
|
<span class="w"> </span><span class="nt"></latencyBudget></span>
|
|||
|
|
<span class="w"> </span><span class="nt"></qos></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><historyMemoryPolicy></span>PREALLOCATED_WITH_REALLOC<span class="nt"></historyMemoryPolicy></span>
|
|||
|
|
<span class="w"> </span><span class="nt"></data_writer></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><data_reader</span><span class="w"> </span><span class="na">profile_name=</span><span class="s">"default subscription profile"</span><span class="w"> </span><span class="na">is_default_profile=</span><span class="s">"true"</span><span class="nt">></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><qos></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><data_sharing></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><kind></span>AUTOMATIC<span class="nt"></kind></span>
|
|||
|
|
<span class="w"> </span><span class="nt"></data_sharing></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><latencyBudget></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><duration></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><sec></span>0<span class="nt"></sec></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><nanosec></span>1000000<span class="nt"></nanosec></span>
|
|||
|
|
<span class="w"> </span><span class="nt"></duration></span>
|
|||
|
|
<span class="w"> </span><span class="nt"></latencyBudget></span>
|
|||
|
|
<span class="w"> </span><span class="nt"></qos></span>
|
|||
|
|
<span class="w"> </span><span class="nt"><historyMemoryPolicy></span>PREALLOCATED_WITH_REALLOC<span class="nt"></historyMemoryPolicy></span>
|
|||
|
|
<span class="w"> </span><span class="nt"></data_reader></span>
|
|||
|
|
<span class="nt"></profiles></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>
|
|||
|
|
</section>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
|||
|
|
<a href="benchmark_data.html" class="btn btn-neutral float-left" title="6.3. Benchmark Data" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
|||
|
|
<a href="../7_developer_guide/developer_guide.html" class="btn btn-neutral float-right" title="7. Developer Guide" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<hr/>
|
|||
|
|
|
|||
|
|
<div role="contentinfo">
|
|||
|
|
<p>© Copyright 2025, ORBBEC INC. www.orbbec.com..
|
|||
|
|
<span class="lastupdated">Last updated on 2025-09-25 13:04:17.
|
|||
|
|
</span></p>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
</footer>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</section>
|
|||
|
|
</div>
|
|||
|
|
<script>
|
|||
|
|
jQuery(function () {
|
|||
|
|
SphinxRtdTheme.Navigation.enable(true);
|
|||
|
|
});
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
</body>
|
|||
|
|
</html>
|