This commit is contained in:
ob-yalian
2026-01-04 01:12:38 +00:00
parent 0771e0b0c9
commit 220b4ea0dd
481 changed files with 21273 additions and 31092 deletions
@@ -0,0 +1,481 @@
<!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>4. Application Guide &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=63de077d" />
<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="4.1. Launch parameters" href="launch_parameters.html" />
<link rel="prev" title="3.2. OrbbecViewer QuickStarts" href="../3_quickstarts/orbbecviewer.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 current"><a class="reference internal" href="../index.html">Camera Devices</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../1_overview/overview.html">1. Overview</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../1_overview/introduction.html">1.1. Introduction</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../1_overview/introduction.html#support-hardware-products">1.1.1. Support Hardware Products</a></li>
<li class="toctree-l4"><a class="reference internal" href="../1_overview/introduction.html#orbbec-camera-datasheet">1.1.2. Orbbec camera datasheet</a></li>
<li class="toctree-l4"><a class="reference internal" href="../1_overview/introduction.html#support-platforms">1.1.3. Support Platforms</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../1_overview/orbbecsdk_overview.html">1.2. Orbbec SDK Overview</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../1_overview/orbbecsdk_overview.html#terms">1.2.1. Terms</a></li>
<li class="toctree-l4"><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-l4"><a class="reference internal" href="../1_overview/orbbecsdk_overview.html#sdk-concept-overview">1.2.3. SDK Concept Overview</a></li>
<li class="toctree-l4"><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-l2"><a class="reference internal" href="../2_installation/installation.html">2. Installation</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../2_installation/build_the_package.html">2.1. Environment configuration</a></li>
<li class="toctree-l3"><a class="reference internal" href="../2_installation/build_the_package.html#linux-binary-package-installation">2.2. Linux Binary Package Installation</a></li>
<li class="toctree-l3"><a class="reference internal" href="../2_installation/build_the_package.html#build-from-source">2.3. Build from Source</a></li>
<li class="toctree-l3"><a class="reference internal" href="../2_installation/registration_script.html">2.4. Registration Script (Required)</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../2_installation/registration_script.html#binary-installation">2.4.1. Binary Installation</a></li>
<li class="toctree-l4"><a class="reference internal" href="../2_installation/registration_script.html#build-from-source">2.4.2. Build from Source</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../3_quickstarts/quickstarts.html">3. Quickstarts</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../3_quickstarts/quickstart.html">3.1. ROS Package QuickStarts</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../3_quickstarts/quickstart.html#introduction">3.1.1. Introduction</a></li>
<li class="toctree-l4"><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-l5"><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-l5"><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-l5"><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-l4"><a class="reference internal" href="../3_quickstarts/quickstart.html#sample-features">3.1.3. Sample Features</a><ul>
<li class="toctree-l5"><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-l5"><a class="reference internal" href="../3_quickstarts/quickstart.html#echo-a-topic">3.1.3.2. Echo a topic</a></li>
<li class="toctree-l5"><a class="reference internal" href="../3_quickstarts/quickstart.html#call-a-service">3.1.3.3. Call a service</a></li>
<li class="toctree-l5"><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-l3"><a class="reference internal" href="../3_quickstarts/orbbecviewer.html">3.2. OrbbecViewer QuickStarts</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../3_quickstarts/orbbecviewer.html#download">3.2.1. Download</a></li>
<li class="toctree-l4"><a class="reference internal" href="../3_quickstarts/orbbecviewer.html#connect-the-device">3.2.2. Connect the device</a></li>
<li class="toctree-l4"><a class="reference internal" href="../3_quickstarts/orbbecviewer.html#camera-control">3.2.3. Camera Control</a></li>
<li class="toctree-l4"><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-l2 current"><a class="current reference internal" href="#">4. Application Guide</a><ul>
<li class="toctree-l3"><a class="reference internal" href="launch_parameters.html">4.1. Launch parameters</a><ul>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#core-stream-configuration">4.1.1. Core &amp; Stream Configuration</a></li>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#sensor-controls">4.1.2. Sensor Controls</a><ul>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#color-stream">4.1.2.1. Color Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#depth-stream">4.1.2.2. Depth Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#ir-stream">4.1.2.3. IR Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#laser-ldp">4.1.2.4. Laser / LDP</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#device-sync-advanced-features">4.1.3. Device, Sync &amp; Advanced Features</a><ul>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#multi-camera-synchronization">4.1.3.1. Multi-Camera Synchronization</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#network-cameras">4.1.3.2. Network Cameras</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#device-specific">4.1.3.3. Device-Specific</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#disparity">4.1.3.4. Disparity</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#interleave-ae-mode">4.1.3.5. Interleave AE Mode</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#intra-camera-synchronization">4.1.3.6. Intra-Camera Synchronization</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#basic-general-parameters">4.1.4. Basic &amp; General Parameters</a><ul>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#firmware-backend">4.1.4.1. Firmware &amp; Backend</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#tf-extrinsics-calibration">4.1.4.2. TF, Extrinsics &amp; Calibration</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#time-synchronization">4.1.4.3. Time Synchronization</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#logging-diagnostics">4.1.4.4. Logging &amp; Diagnostics</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#miscellaneous">4.1.4.5. Miscellaneous</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#imu">4.1.5. IMU</a></li>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#depth-filters">4.1.6. Depth Filters</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="services.html">4.2. All available services for camera control</a><ul>
<li class="toctree-l4"><a class="reference internal" href="services.html#stream-control">4.2.1. Stream Control</a><ul>
<li class="toctree-l5"><a class="reference internal" href="services.html#color-stream">4.2.1.1. Color Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="services.html#depth-stream">4.2.1.2. Depth Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="services.html#ir-stream">4.2.1.3. IR Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="services.html#all-streams">4.2.1.4. All Streams</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="services.html#sensor-emitter-control">4.2.2. Sensor &amp; Emitter Control</a></li>
<li class="toctree-l4"><a class="reference internal" href="services.html#device-information-management">4.2.3. Device Information &amp; Management</a></li>
<li class="toctree-l4"><a class="reference internal" href="services.html#synchronization-triggering">4.2.4. Synchronization &amp; Triggering</a></li>
<li class="toctree-l4"><a class="reference internal" href="services.html#depth-filter-configuration">4.2.5. Depth Filter Configuration</a></li>
<li class="toctree-l4"><a class="reference internal" href="services.html#data-capture-calibration-management">4.2.6. Data Capture &amp; Calibration Management</a></li>
<li class="toctree-l4"><a class="reference internal" href="services.html#point-cloud-decimation">4.2.7. Point cloud decimation</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="topics.html">4.3. Available Topics</a><ul>
<li class="toctree-l4"><a class="reference internal" href="topics.html#image-streams">4.3.1. Image Streams</a></li>
<li class="toctree-l4"><a class="reference internal" href="topics.html#point-cloud-topics">4.3.2. Point Cloud Topics</a></li>
<li class="toctree-l4"><a class="reference internal" href="topics.html#imu-topics">4.3.3. IMU Topics</a></li>
<li class="toctree-l4"><a class="reference internal" href="topics.html#device-status-diagnostics">4.3.4. Device Status &amp; Diagnostics</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="coordinate_and_tf.html">4.4. Coordinate Systems and TF Transforms</a><ul>
<li class="toctree-l4"><a class="reference internal" href="coordinate_and_tf.html#camera-sensor-structure">4.4.1. Camera sensor structure</a></li>
<li class="toctree-l4"><a class="reference internal" href="coordinate_and_tf.html#tf-from-coordinate-a-to-coordinate-b">4.4.2. TF from coordinate A to coordinate B:</a></li>
<li class="toctree-l4"><a class="reference internal" href="coordinate_and_tf.html#ros2-robot-coordinate-system-vs-camera-optical-coordinate-system">4.4.3. ROS2 Robot Coordinate System vs Camera Optical Coordinate System</a></li>
<li class="toctree-l4"><a class="reference internal" href="coordinate_and_tf.html#using-ros2-tf-tools">4.4.4. Using ROS2 TF Tools</a><ul>
<li class="toctree-l5"><a class="reference internal" href="coordinate_and_tf.html#view-tf-tree-structure">4.4.4.1. View TF Tree Structure</a></li>
<li class="toctree-l5"><a class="reference internal" href="coordinate_and_tf.html#visualize-tf-tree-in-rviz2">4.4.4.2. Visualize TF Tree in rviz2</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="coordinate_and_tf.html#camera-tf-calculation-and-publishing-mechanism">4.4.5. Camera TF Calculation and Publishing Mechanism</a><ul>
<li class="toctree-l5"><a class="reference internal" href="coordinate_and_tf.html#core-function-obcameranode-calcandpublishstatictransform">4.4.5.1. Core Function: OBCameraNode::calcAndPublishStaticTransform()</a></li>
<li class="toctree-l5"><a class="reference internal" href="coordinate_and_tf.html#function-breakdown">4.4.5.2. Function Breakdown</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="compressed_image.html">4.5. Compressed Image</a></li>
<li class="toctree-l3"><a class="reference internal" href="point_cloud.html">4.6. Enabling and Visualizing Point Cloud in ROS 2</a><ul>
<li class="toctree-l4"><a class="reference internal" href="point_cloud.html#enabling-depth-point-cloud">4.6.1. Enabling Depth Point Cloud</a><ul>
<li class="toctree-l5"><a class="reference internal" href="point_cloud.html#command-to-enable-depth-point-cloud">4.6.1.1. Command to Enable Depth Point Cloud</a></li>
<li class="toctree-l5"><a class="reference internal" href="point_cloud.html#visualizing-depth-point-cloud-in-rviz2">4.6.1.2. Visualizing Depth Point Cloud in RViz2</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="point_cloud.html#enabling-colored-point-cloud">4.6.2. Enabling Colored Point Cloud</a><ul>
<li class="toctree-l5"><a class="reference internal" href="point_cloud.html#command-to-enable-colored-point-cloud">4.6.2.1. Command to Enable Colored Point Cloud</a></li>
<li class="toctree-l5"><a class="reference internal" href="point_cloud.html#visualizing-colored-point-cloud-in-rviz2">4.6.2.2. Visualizing Colored Point Cloud in RViz2</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../5_advanced_guide/advanced_guide.html">5. Advanced Guide</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../5_advanced_guide/advanced_guide.html#performance-optimization">5.1. Performance &amp; Optimization</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html">5.1.1. Reducing CPU Usage with Orbbec ROS Package</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#recommended-settings-for-lower-cpu-usage">5.1.1.1. Recommended Settings for Lower CPU Usage</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#launch-files-used-for-testing">5.1.1.2. Launch Files Used for Testing</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#test-environment">5.1.1.3. Test environment</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#test-setup">5.1.1.4. Test Setup</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#test-results">5.1.1.5. Test Results</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#further-optimizationa">5.1.1.6. Further Optimizationa</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/performance/efficient_intra_process_communication.html">5.1.2. Efficient intra-process communication:</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/efficient_intra_process_communication.html#introduction">5.1.2.1. Introduction</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/efficient_intra_process_communication.html#example">5.1.2.2. Example</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/performance/fastdds_tuning.html">5.1.3. Fast DDS Optimization for Orbbec Camera with ROS2</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/fastdds_tuning.html#adjusting-system-parameters">5.1.3.1. Adjusting System Parameters</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/fastdds_tuning.html#fast-dds-configuration">5.1.3.2. Fast DDS Configuration</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../5_advanced_guide/advanced_guide.html#multi-camera">5.2. Multi-Camera</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera.html">5.2.1. Multi-Camera</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/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-l5"><a class="reference internal" href="../5_advanced_guide/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-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced.html">5.2.2. Multi_camera synced Instructions</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced.html#setup-instructions">5.2.2.1. Setup instructions</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/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-l5"><a class="reference internal" href="../5_advanced_guide/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-l5"><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.2.2.4. Run the following command to start the multi-camera synced</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced_verification_tool.html">5.2.3. Multi-Camera Synchronization Verification Node</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced_verification_tool.html#usage-guide">5.2.3.1. Usage Guide</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced_verification_tool.html#system-configuration-requirements">5.2.3.2. System Configuration Requirements</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html">5.2.4. GMSL_camera</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html#single-gmsl-camera">5.2.4.1. Single GMSL camera</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html#multi-gmsl-camera">5.2.4.2. Multi GMSL camera</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html#multi-gmsl-camera-synced">5.2.4.3. Multi GMSL camera synced</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html#usage-limitations-of-gmsl-cameras">5.2.4.4. Usage Limitations of GMSL Cameras</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../5_advanced_guide/advanced_guide.html#configuration-modes">5.3. Configuration &amp; Modes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/align_depth_color.html">5.3.1. Aligning Depth to Color in ROS 2</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/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-l5"><a class="reference internal" href="../5_advanced_guide/configuration/align_depth_color.html#selecting-topics-in-rviz2">5.3.1.2. Selecting Topics in RViz2</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/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-l4"><a class="reference internal" href="../5_advanced_guide/configuration/configuration_of_depth_NFOV_and_WFOV_modes.html">5.3.2. Configuration of depth NFOV and WFOV modes</a></li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/depth_work_mode_switch.html">5.3.3. Depth work mode switch</a></li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/disparity_search_offset.html">5.3.4. Disparity_search_offset</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/disparity_search_offset.html#function-introduction">5.3.4.1. Function Introduction</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/disparity_search_offset.html#parameter-introduction">5.3.4.2. Parameter Introduction</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/disparity_search_offset.html#run-the-launch">5.3.4.3. Run the launch</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/interleave_ae_mode.html">5.3.5. Using interleave_ae with Gemini330 series cameras</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/interleave_ae_mode.html#parameter-introduction">5.3.5.1. Parameter Introduction</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/interleave_ae_mode.html#run-the-launch">5.3.5.2. Run the launch</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/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-l4"><a class="reference internal" href="../5_advanced_guide/configuration/predefined_presets.html">5.3.6. Predefined presets</a></li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/net_camera.html">5.3.7. Net_camera</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/net_camera.html#femto-mega-gemini-435le-gemini-335le">5.3.7.1. Femto Mega &amp; Gemini 435Le &amp; Gemini 335Le</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/net_camera.html#set-device-ip-utility">5.3.7.2. set_device_ip Utility</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/net_camera.html#force-ip-function">5.3.7.3. Force IP Function</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../6_benchmark/benchmark.html">6. Benchmark</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../6_benchmark/introduction.html">6.1. Introduction</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/introduction.html#common-benchmark-node">6.1.1. common benchmark node</a></li>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/introduction.html#service-benchmark-node">6.1.2. service benchmark node</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../6_benchmark/benchmark_usage.html">6.2. Benchmark Usage</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/benchmark_usage.html#using-common-benchmark-node">6.2.1. Using common benchmark node</a></li>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/benchmark_usage.html#using-service-benchmark-node">6.2.2. Using service benchmark node</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/benchmark_usage.html#ros2-c">6.2.2.1. ROS2 C++</a></li>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/benchmark_usage.html#ros2-python">6.2.2.2. ROS2 Python</a></li>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/benchmark_usage.html#example-yaml-configuration">6.2.2.3. <strong>Example YAML configuration</strong></a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../6_benchmark/benchmark_data.html">6.3. Benchmark Data</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/benchmark_data.html#common-benckmark-data">6.3.1. Common Benckmark Data</a></li>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/benchmark_data.html#service-benchmark-data">6.3.2. Service Benchmark Data</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../6_benchmark/othertools.html">6.4. Other Tools</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/othertools.html#ob-benchmark-tool">6.4.1. Ob_benchmark tool</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/othertools.html#tool-configuration-start-benchmark-params-json">6.4.1.1. Tool Configuration (start_benchmark_params.json)</a></li>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/othertools.html#camera-configuration-launch-files">6.4.1.2. Camera configuration (launch files)</a></li>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/othertools.html#running-the-ob-benchmark-tool">6.4.1.3. Running the ob_benchmark tool</a></li>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/othertools.html#output-data-files">6.4.1.4. Output Data Files</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../7_developer_guide/developer_guide.html">7. Developer Guide</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../7_developer_guide/migration_guide.html">7.1. Migrating from main to Open-Source v2-main</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/migration_guide.html#introduction">7.1.1. Introduction</a></li>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/migration_guide.html#advantages-of-migrating-from-main-to-v2-main">7.1.2. Advantages of Migrating from main to v2-main</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#comprehensive-device-support">7.1.2.1. <strong>Comprehensive Device Support</strong></a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#transparency-and-extensibility">7.1.2.2. <strong>Transparency and Extensibility</strong></a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#advantages-in-maintenance-and-updates">7.1.2.3. Advantages in Maintenance and Updates</a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#community-and-ecosystem-support">7.1.2.4. <strong>Community and Ecosystem Support</strong></a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/migration_guide.html#comparison-between-main-and-v2-main-branches">7.1.3. Comparison Between main and v2-main Branches</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#launch-file-differences">7.1.3.1. <strong>Launch File Differences</strong></a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#parameter-differences">7.1.3.2. <strong>Parameter Differences</strong></a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#topic-differences">7.1.3.3. <strong>Topic Differences</strong></a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#service-differences">7.1.3.4. <strong>Service Differences</strong></a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../7_developer_guide/building_a_Debian_Package.html">7.2. Building a Debian Package</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/building_a_Debian_Package.html#preparing-the-environment">7.2.1. Preparing the Environment</a></li>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/building_a_Debian_Package.html#configuring-ros-dependencies">7.2.2. Configuring ROS Dependencies</a></li>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/building_a_Debian_Package.html#building-the-package">7.2.3. Building the Package</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../8_FAQ/FAQ.html">8. Frequently Asked Questions</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../8_FAQ/FAQ.html#unexpected-crash">8.1. Unexpected Crash</a></li>
<li class="toctree-l3"><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-l3"><a class="reference internal" href="../8_FAQ/FAQ.html#additional-troubleshooting">8.3. Additional Troubleshooting</a></li>
<li class="toctree-l3"><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>
<li class="toctree-l3"><a class="reference internal" href="../8_FAQ/FAQ.html#how-to-launch-a-specific-camera-when-multiple-cameras-are-connected">8.5. How to Launch a Specific Camera When Multiple Cameras Are Connected</a></li>
<li class="toctree-l3"><a class="reference internal" href="../8_FAQ/FAQ.html#why-is-it-necessary-to-add-delays-when-starting-multiple-cameras-or-switching-streams">8.6. Why Is It Necessary to Add Delays When Starting Multiple Cameras or Switching Streams?</a></li>
<li class="toctree-l3"><a class="reference internal" href="../8_FAQ/FAQ.html#femto-bolt-depth-stream-no-data">8.7. femto bolt depth stream no data</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../lidar_devices/index.html">1. Lidar Devices</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../lidar_devices/lidar.html">1.1. Installation</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#prerequisites">1.1.1. Prerequisites</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#install-deb-dependencies">1.1.2. Install deb Dependencies</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#install-udev-rules">1.1.3. Install udev Rules</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#build-the-package">1.1.4. Build the Package</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#launch-the-lidar-node">1.1.5. Launch the LiDAR Node</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../lidar_devices/lidar.html#usage">1.2. Usage</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#running-the-driver">1.2.1. Running the Driver</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#get-device-information-for-connected-lidars">1.2.2. Get Device Information for Connected LiDARs</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#check-which-configurations-the-lidar-supports">1.2.3. Check Which Configurations the LiDAR Supports</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#parameters-and-configuration">1.2.4. Parameters and Configuration</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../lidar_devices/lidar.html#point-cloud-data-details">1.3. Point Cloud Data Details</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#point-cloud-format">1.3.1. Point Cloud Format</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#point-cloud-aggregation-functionality">1.3.2. Point Cloud Aggregation Functionality</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../lidar_devices/lidar.html#features">1.3.2.1. Features:</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../lidar_devices/lidar.html#usage-examples">1.3.2.2. Usage Examples:</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../lidar_devices/lidar.html#imu-data">1.4. IMU Data</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#imu-topics">1.4.1. IMU Topics</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#using-imu-data">1.4.2. Using IMU Data</a></li>
</ul>
</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="../index.html">Camera Devices</a></li>
<li class="breadcrumb-item active"><span class="section-number">4. </span>Application Guide</li>
<li class="wy-breadcrumbs-aside">
<a href="../../../_sources/source/camera_devices/4_application_guide/application_guide.rst.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">
<div class="lang-switch" style="margin:0 0 1em 0; font-size:0.9em;"><a class="lang-other" href="#">中文</a> | <a class="lang-current" href="#">English</a></div><script>(function(){var p=window.location.pathname;var isEn=p.indexOf('/en/')!==-1 && p.indexOf('/zh/')===-1;if(p.indexOf('/zh/')!==-1) isEn=false;var other = isEn ? p.replace(/\/en\//, '/zh/') : p.replace(/\/zh\//, '/en/');var current=p;var sw=document.querySelector('.lang-switch'); if(!sw) return;var o=sw.querySelector('.lang-other'); var c=sw.querySelector('.lang-current');if(isEn){ o.textContent='中文'; c.textContent='English'; } else { o.textContent='English'; c.textContent='中文'; }o.setAttribute('href', other); c.setAttribute('href', current);})();</script><section id="application-guide">
<h1><span class="section-number">4. </span>Application Guide<a class="headerlink" href="#application-guide" title="Link to this heading"></a></h1>
<p>This chapter introduces application development with the SDK, including launch parameter configuration, ROS2 services, and topics usage.</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="launch_parameters.html">4.1. Launch parameters</a><ul>
<li class="toctree-l2"><a class="reference internal" href="launch_parameters.html#core-stream-configuration">4.1.1. Core &amp; Stream Configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="launch_parameters.html#sensor-controls">4.1.2. Sensor Controls</a></li>
<li class="toctree-l2"><a class="reference internal" href="launch_parameters.html#device-sync-advanced-features">4.1.3. Device, Sync &amp; Advanced Features</a></li>
<li class="toctree-l2"><a class="reference internal" href="launch_parameters.html#basic-general-parameters">4.1.4. Basic &amp; General Parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="launch_parameters.html#imu">4.1.5. IMU</a></li>
<li class="toctree-l2"><a class="reference internal" href="launch_parameters.html#depth-filters">4.1.6. Depth Filters</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="services.html">4.2. All available services for camera control</a><ul>
<li class="toctree-l2"><a class="reference internal" href="services.html#stream-control">4.2.1. Stream Control</a></li>
<li class="toctree-l2"><a class="reference internal" href="services.html#sensor-emitter-control">4.2.2. Sensor &amp; Emitter Control</a></li>
<li class="toctree-l2"><a class="reference internal" href="services.html#device-information-management">4.2.3. Device Information &amp; Management</a></li>
<li class="toctree-l2"><a class="reference internal" href="services.html#synchronization-triggering">4.2.4. Synchronization &amp; Triggering</a></li>
<li class="toctree-l2"><a class="reference internal" href="services.html#depth-filter-configuration">4.2.5. Depth Filter Configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="services.html#data-capture-calibration-management">4.2.6. Data Capture &amp; Calibration Management</a></li>
<li class="toctree-l2"><a class="reference internal" href="services.html#point-cloud-decimation">4.2.7. Point cloud decimation</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="topics.html">4.3. Available Topics</a><ul>
<li class="toctree-l2"><a class="reference internal" href="topics.html#image-streams">4.3.1. Image Streams</a></li>
<li class="toctree-l2"><a class="reference internal" href="topics.html#point-cloud-topics">4.3.2. Point Cloud Topics</a></li>
<li class="toctree-l2"><a class="reference internal" href="topics.html#imu-topics">4.3.3. IMU Topics</a></li>
<li class="toctree-l2"><a class="reference internal" href="topics.html#device-status-diagnostics">4.3.4. Device Status &amp; Diagnostics</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="coordinate_and_tf.html">4.4. Coordinate Systems and TF Transforms</a><ul>
<li class="toctree-l2"><a class="reference internal" href="coordinate_and_tf.html#camera-sensor-structure">4.4.1. Camera sensor structure</a></li>
<li class="toctree-l2"><a class="reference internal" href="coordinate_and_tf.html#tf-from-coordinate-a-to-coordinate-b">4.4.2. TF from coordinate A to coordinate B:</a></li>
<li class="toctree-l2"><a class="reference internal" href="coordinate_and_tf.html#ros2-robot-coordinate-system-vs-camera-optical-coordinate-system">4.4.3. ROS2 Robot Coordinate System vs Camera Optical Coordinate System</a></li>
<li class="toctree-l2"><a class="reference internal" href="coordinate_and_tf.html#using-ros2-tf-tools">4.4.4. Using ROS2 TF Tools</a></li>
<li class="toctree-l2"><a class="reference internal" href="coordinate_and_tf.html#camera-tf-calculation-and-publishing-mechanism">4.4.5. Camera TF Calculation and Publishing Mechanism</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="compressed_image.html">4.5. Compressed Image</a></li>
<li class="toctree-l1"><a class="reference internal" href="point_cloud.html">4.6. Enabling and Visualizing Point Cloud in ROS 2</a><ul>
<li class="toctree-l2"><a class="reference internal" href="point_cloud.html#enabling-depth-point-cloud">4.6.1. Enabling Depth Point Cloud</a></li>
<li class="toctree-l2"><a class="reference internal" href="point_cloud.html#enabling-colored-point-cloud">4.6.2. Enabling Colored Point Cloud</a></li>
</ul>
</li>
</ul>
</div>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="../3_quickstarts/orbbecviewer.html" class="btn btn-neutral float-left" title="3.2. OrbbecViewer QuickStarts" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="launch_parameters.html" class="btn btn-neutral float-right" title="4.1. Launch parameters" 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 2026-01-04 01:12:32.
</span></p>
</div>
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
@@ -0,0 +1,443 @@
<!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>4.5. Compressed Image &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=63de077d" />
<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="4.6. Enabling and Visualizing Point Cloud in ROS 2" href="point_cloud.html" />
<link rel="prev" title="4.4. Coordinate Systems and TF Transforms" href="coordinate_and_tf.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 current"><a class="reference internal" href="../index.html">Camera Devices</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../1_overview/overview.html">1. Overview</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../1_overview/introduction.html">1.1. Introduction</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../1_overview/introduction.html#support-hardware-products">1.1.1. Support Hardware Products</a></li>
<li class="toctree-l4"><a class="reference internal" href="../1_overview/introduction.html#orbbec-camera-datasheet">1.1.2. Orbbec camera datasheet</a></li>
<li class="toctree-l4"><a class="reference internal" href="../1_overview/introduction.html#support-platforms">1.1.3. Support Platforms</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../1_overview/orbbecsdk_overview.html">1.2. Orbbec SDK Overview</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../1_overview/orbbecsdk_overview.html#terms">1.2.1. Terms</a></li>
<li class="toctree-l4"><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-l4"><a class="reference internal" href="../1_overview/orbbecsdk_overview.html#sdk-concept-overview">1.2.3. SDK Concept Overview</a></li>
<li class="toctree-l4"><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-l2"><a class="reference internal" href="../2_installation/installation.html">2. Installation</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../2_installation/build_the_package.html">2.1. Environment configuration</a></li>
<li class="toctree-l3"><a class="reference internal" href="../2_installation/build_the_package.html#linux-binary-package-installation">2.2. Linux Binary Package Installation</a></li>
<li class="toctree-l3"><a class="reference internal" href="../2_installation/build_the_package.html#build-from-source">2.3. Build from Source</a></li>
<li class="toctree-l3"><a class="reference internal" href="../2_installation/registration_script.html">2.4. Registration Script (Required)</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../2_installation/registration_script.html#binary-installation">2.4.1. Binary Installation</a></li>
<li class="toctree-l4"><a class="reference internal" href="../2_installation/registration_script.html#build-from-source">2.4.2. Build from Source</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../3_quickstarts/quickstarts.html">3. Quickstarts</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../3_quickstarts/quickstart.html">3.1. ROS Package QuickStarts</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../3_quickstarts/quickstart.html#introduction">3.1.1. Introduction</a></li>
<li class="toctree-l4"><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-l5"><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-l5"><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-l5"><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-l4"><a class="reference internal" href="../3_quickstarts/quickstart.html#sample-features">3.1.3. Sample Features</a><ul>
<li class="toctree-l5"><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-l5"><a class="reference internal" href="../3_quickstarts/quickstart.html#echo-a-topic">3.1.3.2. Echo a topic</a></li>
<li class="toctree-l5"><a class="reference internal" href="../3_quickstarts/quickstart.html#call-a-service">3.1.3.3. Call a service</a></li>
<li class="toctree-l5"><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-l3"><a class="reference internal" href="../3_quickstarts/orbbecviewer.html">3.2. OrbbecViewer QuickStarts</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../3_quickstarts/orbbecviewer.html#download">3.2.1. Download</a></li>
<li class="toctree-l4"><a class="reference internal" href="../3_quickstarts/orbbecviewer.html#connect-the-device">3.2.2. Connect the device</a></li>
<li class="toctree-l4"><a class="reference internal" href="../3_quickstarts/orbbecviewer.html#camera-control">3.2.3. Camera Control</a></li>
<li class="toctree-l4"><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-l2 current"><a class="reference internal" href="application_guide.html">4. Application Guide</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="launch_parameters.html">4.1. Launch parameters</a><ul>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#core-stream-configuration">4.1.1. Core &amp; Stream Configuration</a></li>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#sensor-controls">4.1.2. Sensor Controls</a><ul>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#color-stream">4.1.2.1. Color Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#depth-stream">4.1.2.2. Depth Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#ir-stream">4.1.2.3. IR Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#laser-ldp">4.1.2.4. Laser / LDP</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#device-sync-advanced-features">4.1.3. Device, Sync &amp; Advanced Features</a><ul>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#multi-camera-synchronization">4.1.3.1. Multi-Camera Synchronization</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#network-cameras">4.1.3.2. Network Cameras</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#device-specific">4.1.3.3. Device-Specific</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#disparity">4.1.3.4. Disparity</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#interleave-ae-mode">4.1.3.5. Interleave AE Mode</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#intra-camera-synchronization">4.1.3.6. Intra-Camera Synchronization</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#basic-general-parameters">4.1.4. Basic &amp; General Parameters</a><ul>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#firmware-backend">4.1.4.1. Firmware &amp; Backend</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#tf-extrinsics-calibration">4.1.4.2. TF, Extrinsics &amp; Calibration</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#time-synchronization">4.1.4.3. Time Synchronization</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#logging-diagnostics">4.1.4.4. Logging &amp; Diagnostics</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#miscellaneous">4.1.4.5. Miscellaneous</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#imu">4.1.5. IMU</a></li>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#depth-filters">4.1.6. Depth Filters</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="services.html">4.2. All available services for camera control</a><ul>
<li class="toctree-l4"><a class="reference internal" href="services.html#stream-control">4.2.1. Stream Control</a><ul>
<li class="toctree-l5"><a class="reference internal" href="services.html#color-stream">4.2.1.1. Color Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="services.html#depth-stream">4.2.1.2. Depth Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="services.html#ir-stream">4.2.1.3. IR Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="services.html#all-streams">4.2.1.4. All Streams</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="services.html#sensor-emitter-control">4.2.2. Sensor &amp; Emitter Control</a></li>
<li class="toctree-l4"><a class="reference internal" href="services.html#device-information-management">4.2.3. Device Information &amp; Management</a></li>
<li class="toctree-l4"><a class="reference internal" href="services.html#synchronization-triggering">4.2.4. Synchronization &amp; Triggering</a></li>
<li class="toctree-l4"><a class="reference internal" href="services.html#depth-filter-configuration">4.2.5. Depth Filter Configuration</a></li>
<li class="toctree-l4"><a class="reference internal" href="services.html#data-capture-calibration-management">4.2.6. Data Capture &amp; Calibration Management</a></li>
<li class="toctree-l4"><a class="reference internal" href="services.html#point-cloud-decimation">4.2.7. Point cloud decimation</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="topics.html">4.3. Available Topics</a><ul>
<li class="toctree-l4"><a class="reference internal" href="topics.html#image-streams">4.3.1. Image Streams</a></li>
<li class="toctree-l4"><a class="reference internal" href="topics.html#point-cloud-topics">4.3.2. Point Cloud Topics</a></li>
<li class="toctree-l4"><a class="reference internal" href="topics.html#imu-topics">4.3.3. IMU Topics</a></li>
<li class="toctree-l4"><a class="reference internal" href="topics.html#device-status-diagnostics">4.3.4. Device Status &amp; Diagnostics</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="coordinate_and_tf.html">4.4. Coordinate Systems and TF Transforms</a><ul>
<li class="toctree-l4"><a class="reference internal" href="coordinate_and_tf.html#camera-sensor-structure">4.4.1. Camera sensor structure</a></li>
<li class="toctree-l4"><a class="reference internal" href="coordinate_and_tf.html#tf-from-coordinate-a-to-coordinate-b">4.4.2. TF from coordinate A to coordinate B:</a></li>
<li class="toctree-l4"><a class="reference internal" href="coordinate_and_tf.html#ros2-robot-coordinate-system-vs-camera-optical-coordinate-system">4.4.3. ROS2 Robot Coordinate System vs Camera Optical Coordinate System</a></li>
<li class="toctree-l4"><a class="reference internal" href="coordinate_and_tf.html#using-ros2-tf-tools">4.4.4. Using ROS2 TF Tools</a><ul>
<li class="toctree-l5"><a class="reference internal" href="coordinate_and_tf.html#view-tf-tree-structure">4.4.4.1. View TF Tree Structure</a></li>
<li class="toctree-l5"><a class="reference internal" href="coordinate_and_tf.html#visualize-tf-tree-in-rviz2">4.4.4.2. Visualize TF Tree in rviz2</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="coordinate_and_tf.html#camera-tf-calculation-and-publishing-mechanism">4.4.5. Camera TF Calculation and Publishing Mechanism</a><ul>
<li class="toctree-l5"><a class="reference internal" href="coordinate_and_tf.html#core-function-obcameranode-calcandpublishstatictransform">4.4.5.1. Core Function: OBCameraNode::calcAndPublishStaticTransform()</a></li>
<li class="toctree-l5"><a class="reference internal" href="coordinate_and_tf.html#function-breakdown">4.4.5.2. Function Breakdown</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3 current"><a class="current reference internal" href="#">4.5. Compressed Image</a></li>
<li class="toctree-l3"><a class="reference internal" href="point_cloud.html">4.6. Enabling and Visualizing Point Cloud in ROS 2</a><ul>
<li class="toctree-l4"><a class="reference internal" href="point_cloud.html#enabling-depth-point-cloud">4.6.1. Enabling Depth Point Cloud</a><ul>
<li class="toctree-l5"><a class="reference internal" href="point_cloud.html#command-to-enable-depth-point-cloud">4.6.1.1. Command to Enable Depth Point Cloud</a></li>
<li class="toctree-l5"><a class="reference internal" href="point_cloud.html#visualizing-depth-point-cloud-in-rviz2">4.6.1.2. Visualizing Depth Point Cloud in RViz2</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="point_cloud.html#enabling-colored-point-cloud">4.6.2. Enabling Colored Point Cloud</a><ul>
<li class="toctree-l5"><a class="reference internal" href="point_cloud.html#command-to-enable-colored-point-cloud">4.6.2.1. Command to Enable Colored Point Cloud</a></li>
<li class="toctree-l5"><a class="reference internal" href="point_cloud.html#visualizing-colored-point-cloud-in-rviz2">4.6.2.2. Visualizing Colored Point Cloud in RViz2</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../5_advanced_guide/advanced_guide.html">5. Advanced Guide</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../5_advanced_guide/advanced_guide.html#performance-optimization">5.1. Performance &amp; Optimization</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html">5.1.1. Reducing CPU Usage with Orbbec ROS Package</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#recommended-settings-for-lower-cpu-usage">5.1.1.1. Recommended Settings for Lower CPU Usage</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#launch-files-used-for-testing">5.1.1.2. Launch Files Used for Testing</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#test-environment">5.1.1.3. Test environment</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#test-setup">5.1.1.4. Test Setup</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#test-results">5.1.1.5. Test Results</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#further-optimizationa">5.1.1.6. Further Optimizationa</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/performance/efficient_intra_process_communication.html">5.1.2. Efficient intra-process communication:</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/efficient_intra_process_communication.html#introduction">5.1.2.1. Introduction</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/efficient_intra_process_communication.html#example">5.1.2.2. Example</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/performance/fastdds_tuning.html">5.1.3. Fast DDS Optimization for Orbbec Camera with ROS2</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/fastdds_tuning.html#adjusting-system-parameters">5.1.3.1. Adjusting System Parameters</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/fastdds_tuning.html#fast-dds-configuration">5.1.3.2. Fast DDS Configuration</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../5_advanced_guide/advanced_guide.html#multi-camera">5.2. Multi-Camera</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera.html">5.2.1. Multi-Camera</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/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-l5"><a class="reference internal" href="../5_advanced_guide/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-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced.html">5.2.2. Multi_camera synced Instructions</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced.html#setup-instructions">5.2.2.1. Setup instructions</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/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-l5"><a class="reference internal" href="../5_advanced_guide/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-l5"><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.2.2.4. Run the following command to start the multi-camera synced</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced_verification_tool.html">5.2.3. Multi-Camera Synchronization Verification Node</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced_verification_tool.html#usage-guide">5.2.3.1. Usage Guide</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced_verification_tool.html#system-configuration-requirements">5.2.3.2. System Configuration Requirements</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html">5.2.4. GMSL_camera</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html#single-gmsl-camera">5.2.4.1. Single GMSL camera</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html#multi-gmsl-camera">5.2.4.2. Multi GMSL camera</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html#multi-gmsl-camera-synced">5.2.4.3. Multi GMSL camera synced</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html#usage-limitations-of-gmsl-cameras">5.2.4.4. Usage Limitations of GMSL Cameras</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../5_advanced_guide/advanced_guide.html#configuration-modes">5.3. Configuration &amp; Modes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/align_depth_color.html">5.3.1. Aligning Depth to Color in ROS 2</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/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-l5"><a class="reference internal" href="../5_advanced_guide/configuration/align_depth_color.html#selecting-topics-in-rviz2">5.3.1.2. Selecting Topics in RViz2</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/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-l4"><a class="reference internal" href="../5_advanced_guide/configuration/configuration_of_depth_NFOV_and_WFOV_modes.html">5.3.2. Configuration of depth NFOV and WFOV modes</a></li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/depth_work_mode_switch.html">5.3.3. Depth work mode switch</a></li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/disparity_search_offset.html">5.3.4. Disparity_search_offset</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/disparity_search_offset.html#function-introduction">5.3.4.1. Function Introduction</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/disparity_search_offset.html#parameter-introduction">5.3.4.2. Parameter Introduction</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/disparity_search_offset.html#run-the-launch">5.3.4.3. Run the launch</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/interleave_ae_mode.html">5.3.5. Using interleave_ae with Gemini330 series cameras</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/interleave_ae_mode.html#parameter-introduction">5.3.5.1. Parameter Introduction</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/interleave_ae_mode.html#run-the-launch">5.3.5.2. Run the launch</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/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-l4"><a class="reference internal" href="../5_advanced_guide/configuration/predefined_presets.html">5.3.6. Predefined presets</a></li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/net_camera.html">5.3.7. Net_camera</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/net_camera.html#femto-mega-gemini-435le-gemini-335le">5.3.7.1. Femto Mega &amp; Gemini 435Le &amp; Gemini 335Le</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/net_camera.html#set-device-ip-utility">5.3.7.2. set_device_ip Utility</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/net_camera.html#force-ip-function">5.3.7.3. Force IP Function</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../6_benchmark/benchmark.html">6. Benchmark</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../6_benchmark/introduction.html">6.1. Introduction</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/introduction.html#common-benchmark-node">6.1.1. common benchmark node</a></li>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/introduction.html#service-benchmark-node">6.1.2. service benchmark node</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../6_benchmark/benchmark_usage.html">6.2. Benchmark Usage</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/benchmark_usage.html#using-common-benchmark-node">6.2.1. Using common benchmark node</a></li>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/benchmark_usage.html#using-service-benchmark-node">6.2.2. Using service benchmark node</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/benchmark_usage.html#ros2-c">6.2.2.1. ROS2 C++</a></li>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/benchmark_usage.html#ros2-python">6.2.2.2. ROS2 Python</a></li>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/benchmark_usage.html#example-yaml-configuration">6.2.2.3. <strong>Example YAML configuration</strong></a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../6_benchmark/benchmark_data.html">6.3. Benchmark Data</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/benchmark_data.html#common-benckmark-data">6.3.1. Common Benckmark Data</a></li>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/benchmark_data.html#service-benchmark-data">6.3.2. Service Benchmark Data</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../6_benchmark/othertools.html">6.4. Other Tools</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/othertools.html#ob-benchmark-tool">6.4.1. Ob_benchmark tool</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/othertools.html#tool-configuration-start-benchmark-params-json">6.4.1.1. Tool Configuration (start_benchmark_params.json)</a></li>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/othertools.html#camera-configuration-launch-files">6.4.1.2. Camera configuration (launch files)</a></li>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/othertools.html#running-the-ob-benchmark-tool">6.4.1.3. Running the ob_benchmark tool</a></li>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/othertools.html#output-data-files">6.4.1.4. Output Data Files</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../7_developer_guide/developer_guide.html">7. Developer Guide</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../7_developer_guide/migration_guide.html">7.1. Migrating from main to Open-Source v2-main</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/migration_guide.html#introduction">7.1.1. Introduction</a></li>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/migration_guide.html#advantages-of-migrating-from-main-to-v2-main">7.1.2. Advantages of Migrating from main to v2-main</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#comprehensive-device-support">7.1.2.1. <strong>Comprehensive Device Support</strong></a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#transparency-and-extensibility">7.1.2.2. <strong>Transparency and Extensibility</strong></a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#advantages-in-maintenance-and-updates">7.1.2.3. Advantages in Maintenance and Updates</a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#community-and-ecosystem-support">7.1.2.4. <strong>Community and Ecosystem Support</strong></a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/migration_guide.html#comparison-between-main-and-v2-main-branches">7.1.3. Comparison Between main and v2-main Branches</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#launch-file-differences">7.1.3.1. <strong>Launch File Differences</strong></a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#parameter-differences">7.1.3.2. <strong>Parameter Differences</strong></a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#topic-differences">7.1.3.3. <strong>Topic Differences</strong></a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#service-differences">7.1.3.4. <strong>Service Differences</strong></a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../7_developer_guide/building_a_Debian_Package.html">7.2. Building a Debian Package</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/building_a_Debian_Package.html#preparing-the-environment">7.2.1. Preparing the Environment</a></li>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/building_a_Debian_Package.html#configuring-ros-dependencies">7.2.2. Configuring ROS Dependencies</a></li>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/building_a_Debian_Package.html#building-the-package">7.2.3. Building the Package</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../8_FAQ/FAQ.html">8. Frequently Asked Questions</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../8_FAQ/FAQ.html#unexpected-crash">8.1. Unexpected Crash</a></li>
<li class="toctree-l3"><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-l3"><a class="reference internal" href="../8_FAQ/FAQ.html#additional-troubleshooting">8.3. Additional Troubleshooting</a></li>
<li class="toctree-l3"><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>
<li class="toctree-l3"><a class="reference internal" href="../8_FAQ/FAQ.html#how-to-launch-a-specific-camera-when-multiple-cameras-are-connected">8.5. How to Launch a Specific Camera When Multiple Cameras Are Connected</a></li>
<li class="toctree-l3"><a class="reference internal" href="../8_FAQ/FAQ.html#why-is-it-necessary-to-add-delays-when-starting-multiple-cameras-or-switching-streams">8.6. Why Is It Necessary to Add Delays When Starting Multiple Cameras or Switching Streams?</a></li>
<li class="toctree-l3"><a class="reference internal" href="../8_FAQ/FAQ.html#femto-bolt-depth-stream-no-data">8.7. femto bolt depth stream no data</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../lidar_devices/index.html">1. Lidar Devices</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../lidar_devices/lidar.html">1.1. Installation</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#prerequisites">1.1.1. Prerequisites</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#install-deb-dependencies">1.1.2. Install deb Dependencies</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#install-udev-rules">1.1.3. Install udev Rules</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#build-the-package">1.1.4. Build the Package</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#launch-the-lidar-node">1.1.5. Launch the LiDAR Node</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../lidar_devices/lidar.html#usage">1.2. Usage</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#running-the-driver">1.2.1. Running the Driver</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#get-device-information-for-connected-lidars">1.2.2. Get Device Information for Connected LiDARs</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#check-which-configurations-the-lidar-supports">1.2.3. Check Which Configurations the LiDAR Supports</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#parameters-and-configuration">1.2.4. Parameters and Configuration</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../lidar_devices/lidar.html#point-cloud-data-details">1.3. Point Cloud Data Details</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#point-cloud-format">1.3.1. Point Cloud Format</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#point-cloud-aggregation-functionality">1.3.2. Point Cloud Aggregation Functionality</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../lidar_devices/lidar.html#features">1.3.2.1. Features:</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../lidar_devices/lidar.html#usage-examples">1.3.2.2. Usage Examples:</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../lidar_devices/lidar.html#imu-data">1.4. IMU Data</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#imu-topics">1.4.1. IMU Topics</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#using-imu-data">1.4.2. Using IMU Data</a></li>
</ul>
</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="../index.html">Camera Devices</a></li>
<li class="breadcrumb-item"><a href="application_guide.html"><span class="section-number">4. </span>Application Guide</a></li>
<li class="breadcrumb-item active"><span class="section-number">4.5. </span>Compressed Image</li>
<li class="wy-breadcrumbs-aside">
<a href="../../../_sources/source/camera_devices/4_application_guide/compressed_image.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">
<div class="lang-switch" style="margin:0 0 1em 0; font-size:0.9em;"><a class="lang-other" href="#">中文</a> | <a class="lang-current" href="#">English</a></div><script>(function(){var p=window.location.pathname;var isEn=p.indexOf('/en/')!==-1 && p.indexOf('/zh/')===-1;if(p.indexOf('/zh/')!==-1) isEn=false;var other = isEn ? p.replace(/\/en\//, '/zh/') : p.replace(/\/zh\//, '/en/');var current=p;var sw=document.querySelector('.lang-switch'); if(!sw) return;var o=sw.querySelector('.lang-other'); var c=sw.querySelector('.lang-current');if(isEn){ o.textContent='中文'; c.textContent='English'; } else { o.textContent='English'; c.textContent='中文'; }o.setAttribute('href', other); c.setAttribute('href', current);})();</script><section id="compressed-image">
<h1><span class="section-number">4.5. </span>Compressed Image<a class="headerlink" href="#compressed-image" title="Link to this heading"></a></h1>
<p>You can use <code class="docutils literal notranslate"><span class="pre">image_transport</span></code> to compress the image using <code class="docutils literal notranslate"><span class="pre">jpeg</span></code>. Below is an example of how to use it:</p>
<p>To access the compressed color image, you can use the following command:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>topic<span class="w"> </span><span class="nb">echo</span><span class="w"> </span>/camera/color/image_raw/compressed<span class="w"> </span>--no-arr
</pre></div>
</div>
<p>This command will allow you to receive the compressed color image from the specified topic.</p>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="coordinate_and_tf.html" class="btn btn-neutral float-left" title="4.4. Coordinate Systems and TF Transforms" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="point_cloud.html" class="btn btn-neutral float-right" title="4.6. Enabling and Visualizing Point Cloud in ROS 2" 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 2026-01-04 01:12:32.
</span></p>
</div>
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
@@ -0,0 +1,770 @@
<!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>4.4. Coordinate Systems and TF Transforms &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=63de077d" />
<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="4.5. Compressed Image" href="compressed_image.html" />
<link rel="prev" title="4.3. Available Topics" href="topics.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 current"><a class="reference internal" href="../index.html">Camera Devices</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../1_overview/overview.html">1. Overview</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../1_overview/introduction.html">1.1. Introduction</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../1_overview/introduction.html#support-hardware-products">1.1.1. Support Hardware Products</a></li>
<li class="toctree-l4"><a class="reference internal" href="../1_overview/introduction.html#orbbec-camera-datasheet">1.1.2. Orbbec camera datasheet</a></li>
<li class="toctree-l4"><a class="reference internal" href="../1_overview/introduction.html#support-platforms">1.1.3. Support Platforms</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../1_overview/orbbecsdk_overview.html">1.2. Orbbec SDK Overview</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../1_overview/orbbecsdk_overview.html#terms">1.2.1. Terms</a></li>
<li class="toctree-l4"><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-l4"><a class="reference internal" href="../1_overview/orbbecsdk_overview.html#sdk-concept-overview">1.2.3. SDK Concept Overview</a></li>
<li class="toctree-l4"><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-l2"><a class="reference internal" href="../2_installation/installation.html">2. Installation</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../2_installation/build_the_package.html">2.1. Environment configuration</a></li>
<li class="toctree-l3"><a class="reference internal" href="../2_installation/build_the_package.html#linux-binary-package-installation">2.2. Linux Binary Package Installation</a></li>
<li class="toctree-l3"><a class="reference internal" href="../2_installation/build_the_package.html#build-from-source">2.3. Build from Source</a></li>
<li class="toctree-l3"><a class="reference internal" href="../2_installation/registration_script.html">2.4. Registration Script (Required)</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../2_installation/registration_script.html#binary-installation">2.4.1. Binary Installation</a></li>
<li class="toctree-l4"><a class="reference internal" href="../2_installation/registration_script.html#build-from-source">2.4.2. Build from Source</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../3_quickstarts/quickstarts.html">3. Quickstarts</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../3_quickstarts/quickstart.html">3.1. ROS Package QuickStarts</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../3_quickstarts/quickstart.html#introduction">3.1.1. Introduction</a></li>
<li class="toctree-l4"><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-l5"><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-l5"><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-l5"><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-l4"><a class="reference internal" href="../3_quickstarts/quickstart.html#sample-features">3.1.3. Sample Features</a><ul>
<li class="toctree-l5"><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-l5"><a class="reference internal" href="../3_quickstarts/quickstart.html#echo-a-topic">3.1.3.2. Echo a topic</a></li>
<li class="toctree-l5"><a class="reference internal" href="../3_quickstarts/quickstart.html#call-a-service">3.1.3.3. Call a service</a></li>
<li class="toctree-l5"><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-l3"><a class="reference internal" href="../3_quickstarts/orbbecviewer.html">3.2. OrbbecViewer QuickStarts</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../3_quickstarts/orbbecviewer.html#download">3.2.1. Download</a></li>
<li class="toctree-l4"><a class="reference internal" href="../3_quickstarts/orbbecviewer.html#connect-the-device">3.2.2. Connect the device</a></li>
<li class="toctree-l4"><a class="reference internal" href="../3_quickstarts/orbbecviewer.html#camera-control">3.2.3. Camera Control</a></li>
<li class="toctree-l4"><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-l2 current"><a class="reference internal" href="application_guide.html">4. Application Guide</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="launch_parameters.html">4.1. Launch parameters</a><ul>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#core-stream-configuration">4.1.1. Core &amp; Stream Configuration</a></li>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#sensor-controls">4.1.2. Sensor Controls</a><ul>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#color-stream">4.1.2.1. Color Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#depth-stream">4.1.2.2. Depth Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#ir-stream">4.1.2.3. IR Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#laser-ldp">4.1.2.4. Laser / LDP</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#device-sync-advanced-features">4.1.3. Device, Sync &amp; Advanced Features</a><ul>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#multi-camera-synchronization">4.1.3.1. Multi-Camera Synchronization</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#network-cameras">4.1.3.2. Network Cameras</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#device-specific">4.1.3.3. Device-Specific</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#disparity">4.1.3.4. Disparity</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#interleave-ae-mode">4.1.3.5. Interleave AE Mode</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#intra-camera-synchronization">4.1.3.6. Intra-Camera Synchronization</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#basic-general-parameters">4.1.4. Basic &amp; General Parameters</a><ul>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#firmware-backend">4.1.4.1. Firmware &amp; Backend</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#tf-extrinsics-calibration">4.1.4.2. TF, Extrinsics &amp; Calibration</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#time-synchronization">4.1.4.3. Time Synchronization</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#logging-diagnostics">4.1.4.4. Logging &amp; Diagnostics</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#miscellaneous">4.1.4.5. Miscellaneous</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#imu">4.1.5. IMU</a></li>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#depth-filters">4.1.6. Depth Filters</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="services.html">4.2. All available services for camera control</a><ul>
<li class="toctree-l4"><a class="reference internal" href="services.html#stream-control">4.2.1. Stream Control</a><ul>
<li class="toctree-l5"><a class="reference internal" href="services.html#color-stream">4.2.1.1. Color Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="services.html#depth-stream">4.2.1.2. Depth Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="services.html#ir-stream">4.2.1.3. IR Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="services.html#all-streams">4.2.1.4. All Streams</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="services.html#sensor-emitter-control">4.2.2. Sensor &amp; Emitter Control</a></li>
<li class="toctree-l4"><a class="reference internal" href="services.html#device-information-management">4.2.3. Device Information &amp; Management</a></li>
<li class="toctree-l4"><a class="reference internal" href="services.html#synchronization-triggering">4.2.4. Synchronization &amp; Triggering</a></li>
<li class="toctree-l4"><a class="reference internal" href="services.html#depth-filter-configuration">4.2.5. Depth Filter Configuration</a></li>
<li class="toctree-l4"><a class="reference internal" href="services.html#data-capture-calibration-management">4.2.6. Data Capture &amp; Calibration Management</a></li>
<li class="toctree-l4"><a class="reference internal" href="services.html#point-cloud-decimation">4.2.7. Point cloud decimation</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="topics.html">4.3. Available Topics</a><ul>
<li class="toctree-l4"><a class="reference internal" href="topics.html#image-streams">4.3.1. Image Streams</a></li>
<li class="toctree-l4"><a class="reference internal" href="topics.html#point-cloud-topics">4.3.2. Point Cloud Topics</a></li>
<li class="toctree-l4"><a class="reference internal" href="topics.html#imu-topics">4.3.3. IMU Topics</a></li>
<li class="toctree-l4"><a class="reference internal" href="topics.html#device-status-diagnostics">4.3.4. Device Status &amp; Diagnostics</a></li>
</ul>
</li>
<li class="toctree-l3 current"><a class="current reference internal" href="#">4.4. Coordinate Systems and TF Transforms</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#camera-sensor-structure">4.4.1. Camera sensor structure</a></li>
<li class="toctree-l4"><a class="reference internal" href="#tf-from-coordinate-a-to-coordinate-b">4.4.2. TF from coordinate A to coordinate B:</a></li>
<li class="toctree-l4"><a class="reference internal" href="#ros2-robot-coordinate-system-vs-camera-optical-coordinate-system">4.4.3. ROS2 Robot Coordinate System vs Camera Optical Coordinate System</a></li>
<li class="toctree-l4"><a class="reference internal" href="#using-ros2-tf-tools">4.4.4. Using ROS2 TF Tools</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#view-tf-tree-structure">4.4.4.1. View TF Tree Structure</a></li>
<li class="toctree-l5"><a class="reference internal" href="#visualize-tf-tree-in-rviz2">4.4.4.2. Visualize TF Tree in rviz2</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#camera-tf-calculation-and-publishing-mechanism">4.4.5. Camera TF Calculation and Publishing Mechanism</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#core-function-obcameranode-calcandpublishstatictransform">4.4.5.1. Core Function: OBCameraNode::calcAndPublishStaticTransform()</a></li>
<li class="toctree-l5"><a class="reference internal" href="#function-breakdown">4.4.5.2. Function Breakdown</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="compressed_image.html">4.5. Compressed Image</a></li>
<li class="toctree-l3"><a class="reference internal" href="point_cloud.html">4.6. Enabling and Visualizing Point Cloud in ROS 2</a><ul>
<li class="toctree-l4"><a class="reference internal" href="point_cloud.html#enabling-depth-point-cloud">4.6.1. Enabling Depth Point Cloud</a><ul>
<li class="toctree-l5"><a class="reference internal" href="point_cloud.html#command-to-enable-depth-point-cloud">4.6.1.1. Command to Enable Depth Point Cloud</a></li>
<li class="toctree-l5"><a class="reference internal" href="point_cloud.html#visualizing-depth-point-cloud-in-rviz2">4.6.1.2. Visualizing Depth Point Cloud in RViz2</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="point_cloud.html#enabling-colored-point-cloud">4.6.2. Enabling Colored Point Cloud</a><ul>
<li class="toctree-l5"><a class="reference internal" href="point_cloud.html#command-to-enable-colored-point-cloud">4.6.2.1. Command to Enable Colored Point Cloud</a></li>
<li class="toctree-l5"><a class="reference internal" href="point_cloud.html#visualizing-colored-point-cloud-in-rviz2">4.6.2.2. Visualizing Colored Point Cloud in RViz2</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../5_advanced_guide/advanced_guide.html">5. Advanced Guide</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../5_advanced_guide/advanced_guide.html#performance-optimization">5.1. Performance &amp; Optimization</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html">5.1.1. Reducing CPU Usage with Orbbec ROS Package</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#recommended-settings-for-lower-cpu-usage">5.1.1.1. Recommended Settings for Lower CPU Usage</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#launch-files-used-for-testing">5.1.1.2. Launch Files Used for Testing</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#test-environment">5.1.1.3. Test environment</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#test-setup">5.1.1.4. Test Setup</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#test-results">5.1.1.5. Test Results</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#further-optimizationa">5.1.1.6. Further Optimizationa</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/performance/efficient_intra_process_communication.html">5.1.2. Efficient intra-process communication:</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/efficient_intra_process_communication.html#introduction">5.1.2.1. Introduction</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/efficient_intra_process_communication.html#example">5.1.2.2. Example</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/performance/fastdds_tuning.html">5.1.3. Fast DDS Optimization for Orbbec Camera with ROS2</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/fastdds_tuning.html#adjusting-system-parameters">5.1.3.1. Adjusting System Parameters</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/fastdds_tuning.html#fast-dds-configuration">5.1.3.2. Fast DDS Configuration</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../5_advanced_guide/advanced_guide.html#multi-camera">5.2. Multi-Camera</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera.html">5.2.1. Multi-Camera</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/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-l5"><a class="reference internal" href="../5_advanced_guide/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-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced.html">5.2.2. Multi_camera synced Instructions</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced.html#setup-instructions">5.2.2.1. Setup instructions</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/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-l5"><a class="reference internal" href="../5_advanced_guide/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-l5"><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.2.2.4. Run the following command to start the multi-camera synced</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced_verification_tool.html">5.2.3. Multi-Camera Synchronization Verification Node</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced_verification_tool.html#usage-guide">5.2.3.1. Usage Guide</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced_verification_tool.html#system-configuration-requirements">5.2.3.2. System Configuration Requirements</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html">5.2.4. GMSL_camera</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html#single-gmsl-camera">5.2.4.1. Single GMSL camera</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html#multi-gmsl-camera">5.2.4.2. Multi GMSL camera</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html#multi-gmsl-camera-synced">5.2.4.3. Multi GMSL camera synced</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html#usage-limitations-of-gmsl-cameras">5.2.4.4. Usage Limitations of GMSL Cameras</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../5_advanced_guide/advanced_guide.html#configuration-modes">5.3. Configuration &amp; Modes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/align_depth_color.html">5.3.1. Aligning Depth to Color in ROS 2</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/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-l5"><a class="reference internal" href="../5_advanced_guide/configuration/align_depth_color.html#selecting-topics-in-rviz2">5.3.1.2. Selecting Topics in RViz2</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/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-l4"><a class="reference internal" href="../5_advanced_guide/configuration/configuration_of_depth_NFOV_and_WFOV_modes.html">5.3.2. Configuration of depth NFOV and WFOV modes</a></li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/depth_work_mode_switch.html">5.3.3. Depth work mode switch</a></li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/disparity_search_offset.html">5.3.4. Disparity_search_offset</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/disparity_search_offset.html#function-introduction">5.3.4.1. Function Introduction</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/disparity_search_offset.html#parameter-introduction">5.3.4.2. Parameter Introduction</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/disparity_search_offset.html#run-the-launch">5.3.4.3. Run the launch</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/interleave_ae_mode.html">5.3.5. Using interleave_ae with Gemini330 series cameras</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/interleave_ae_mode.html#parameter-introduction">5.3.5.1. Parameter Introduction</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/interleave_ae_mode.html#run-the-launch">5.3.5.2. Run the launch</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/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-l4"><a class="reference internal" href="../5_advanced_guide/configuration/predefined_presets.html">5.3.6. Predefined presets</a></li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/net_camera.html">5.3.7. Net_camera</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/net_camera.html#femto-mega-gemini-435le-gemini-335le">5.3.7.1. Femto Mega &amp; Gemini 435Le &amp; Gemini 335Le</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/net_camera.html#set-device-ip-utility">5.3.7.2. set_device_ip Utility</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/net_camera.html#force-ip-function">5.3.7.3. Force IP Function</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../6_benchmark/benchmark.html">6. Benchmark</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../6_benchmark/introduction.html">6.1. Introduction</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/introduction.html#common-benchmark-node">6.1.1. common benchmark node</a></li>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/introduction.html#service-benchmark-node">6.1.2. service benchmark node</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../6_benchmark/benchmark_usage.html">6.2. Benchmark Usage</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/benchmark_usage.html#using-common-benchmark-node">6.2.1. Using common benchmark node</a></li>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/benchmark_usage.html#using-service-benchmark-node">6.2.2. Using service benchmark node</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/benchmark_usage.html#ros2-c">6.2.2.1. ROS2 C++</a></li>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/benchmark_usage.html#ros2-python">6.2.2.2. ROS2 Python</a></li>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/benchmark_usage.html#example-yaml-configuration">6.2.2.3. <strong>Example YAML configuration</strong></a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../6_benchmark/benchmark_data.html">6.3. Benchmark Data</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/benchmark_data.html#common-benckmark-data">6.3.1. Common Benckmark Data</a></li>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/benchmark_data.html#service-benchmark-data">6.3.2. Service Benchmark Data</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../6_benchmark/othertools.html">6.4. Other Tools</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/othertools.html#ob-benchmark-tool">6.4.1. Ob_benchmark tool</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/othertools.html#tool-configuration-start-benchmark-params-json">6.4.1.1. Tool Configuration (start_benchmark_params.json)</a></li>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/othertools.html#camera-configuration-launch-files">6.4.1.2. Camera configuration (launch files)</a></li>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/othertools.html#running-the-ob-benchmark-tool">6.4.1.3. Running the ob_benchmark tool</a></li>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/othertools.html#output-data-files">6.4.1.4. Output Data Files</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../7_developer_guide/developer_guide.html">7. Developer Guide</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../7_developer_guide/migration_guide.html">7.1. Migrating from main to Open-Source v2-main</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/migration_guide.html#introduction">7.1.1. Introduction</a></li>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/migration_guide.html#advantages-of-migrating-from-main-to-v2-main">7.1.2. Advantages of Migrating from main to v2-main</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#comprehensive-device-support">7.1.2.1. <strong>Comprehensive Device Support</strong></a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#transparency-and-extensibility">7.1.2.2. <strong>Transparency and Extensibility</strong></a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#advantages-in-maintenance-and-updates">7.1.2.3. Advantages in Maintenance and Updates</a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#community-and-ecosystem-support">7.1.2.4. <strong>Community and Ecosystem Support</strong></a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/migration_guide.html#comparison-between-main-and-v2-main-branches">7.1.3. Comparison Between main and v2-main Branches</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#launch-file-differences">7.1.3.1. <strong>Launch File Differences</strong></a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#parameter-differences">7.1.3.2. <strong>Parameter Differences</strong></a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#topic-differences">7.1.3.3. <strong>Topic Differences</strong></a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#service-differences">7.1.3.4. <strong>Service Differences</strong></a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../7_developer_guide/building_a_Debian_Package.html">7.2. Building a Debian Package</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/building_a_Debian_Package.html#preparing-the-environment">7.2.1. Preparing the Environment</a></li>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/building_a_Debian_Package.html#configuring-ros-dependencies">7.2.2. Configuring ROS Dependencies</a></li>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/building_a_Debian_Package.html#building-the-package">7.2.3. Building the Package</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../8_FAQ/FAQ.html">8. Frequently Asked Questions</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../8_FAQ/FAQ.html#unexpected-crash">8.1. Unexpected Crash</a></li>
<li class="toctree-l3"><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-l3"><a class="reference internal" href="../8_FAQ/FAQ.html#additional-troubleshooting">8.3. Additional Troubleshooting</a></li>
<li class="toctree-l3"><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>
<li class="toctree-l3"><a class="reference internal" href="../8_FAQ/FAQ.html#how-to-launch-a-specific-camera-when-multiple-cameras-are-connected">8.5. How to Launch a Specific Camera When Multiple Cameras Are Connected</a></li>
<li class="toctree-l3"><a class="reference internal" href="../8_FAQ/FAQ.html#why-is-it-necessary-to-add-delays-when-starting-multiple-cameras-or-switching-streams">8.6. Why Is It Necessary to Add Delays When Starting Multiple Cameras or Switching Streams?</a></li>
<li class="toctree-l3"><a class="reference internal" href="../8_FAQ/FAQ.html#femto-bolt-depth-stream-no-data">8.7. femto bolt depth stream no data</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../lidar_devices/index.html">1. Lidar Devices</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../lidar_devices/lidar.html">1.1. Installation</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#prerequisites">1.1.1. Prerequisites</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#install-deb-dependencies">1.1.2. Install deb Dependencies</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#install-udev-rules">1.1.3. Install udev Rules</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#build-the-package">1.1.4. Build the Package</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#launch-the-lidar-node">1.1.5. Launch the LiDAR Node</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../lidar_devices/lidar.html#usage">1.2. Usage</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#running-the-driver">1.2.1. Running the Driver</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#get-device-information-for-connected-lidars">1.2.2. Get Device Information for Connected LiDARs</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#check-which-configurations-the-lidar-supports">1.2.3. Check Which Configurations the LiDAR Supports</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#parameters-and-configuration">1.2.4. Parameters and Configuration</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../lidar_devices/lidar.html#point-cloud-data-details">1.3. Point Cloud Data Details</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#point-cloud-format">1.3.1. Point Cloud Format</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#point-cloud-aggregation-functionality">1.3.2. Point Cloud Aggregation Functionality</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../lidar_devices/lidar.html#features">1.3.2.1. Features:</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../lidar_devices/lidar.html#usage-examples">1.3.2.2. Usage Examples:</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../lidar_devices/lidar.html#imu-data">1.4. IMU Data</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#imu-topics">1.4.1. IMU Topics</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#using-imu-data">1.4.2. Using IMU Data</a></li>
</ul>
</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="../index.html">Camera Devices</a></li>
<li class="breadcrumb-item"><a href="application_guide.html"><span class="section-number">4. </span>Application Guide</a></li>
<li class="breadcrumb-item active"><span class="section-number">4.4. </span>Coordinate Systems and TF Transforms</li>
<li class="wy-breadcrumbs-aside">
<a href="../../../_sources/source/camera_devices/4_application_guide/coordinate_and_tf.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">
<div class="lang-switch" style="margin:0 0 1em 0; font-size:0.9em;"><a class="lang-other" href="#">中文</a> | <a class="lang-current" href="#">English</a></div><script>(function(){var p=window.location.pathname;var isEn=p.indexOf('/en/')!==-1 && p.indexOf('/zh/')===-1;if(p.indexOf('/zh/')!==-1) isEn=false;var other = isEn ? p.replace(/\/en\//, '/zh/') : p.replace(/\/zh\//, '/en/');var current=p;var sw=document.querySelector('.lang-switch'); if(!sw) return;var o=sw.querySelector('.lang-other'); var c=sw.querySelector('.lang-current');if(isEn){ o.textContent='中文'; c.textContent='English'; } else { o.textContent='English'; c.textContent='中文'; }o.setAttribute('href', other); c.setAttribute('href', current);})();</script><section id="coordinate-systems-and-tf-transforms">
<h1><span class="section-number">4.4. </span>Coordinate Systems and TF Transforms<a class="headerlink" href="#coordinate-systems-and-tf-transforms" title="Link to this heading"></a></h1>
<section id="camera-sensor-structure">
<h2><span class="section-number">4.4.1. </span>Camera sensor structure<a class="headerlink" href="#camera-sensor-structure" title="Link to this heading"></a></h2>
<p><img alt="module in rviz2" src="../../../_images/image3.png" /></p>
<p><img alt="module in rviz2" src="../../../_images/image1.png" /></p>
</section>
<section id="tf-from-coordinate-a-to-coordinate-b">
<h2><span class="section-number">4.4.2. </span>TF from coordinate A to coordinate B:<a class="headerlink" href="#tf-from-coordinate-a-to-coordinate-b" title="Link to this heading"></a></h2>
<p>In Orbbec cameras, the origin point (0,0,0) is taken from the camera_link position.</p>
<p>You can view the camera’s URDF model and coordinate system structure using the following command:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>launch<span class="w"> </span>orbbec_description<span class="w"> </span>view_model.launch.py<span class="w"> </span>model:<span class="o">=</span>gemini_335_336.urdf.xacro
</pre></div>
</div>
<p><img alt="module in rviz2" src="../../../_images/image2.png" /></p>
</section>
<section id="ros2-robot-coordinate-system-vs-camera-optical-coordinate-system">
<h2><span class="section-number">4.4.3. </span>ROS2 Robot Coordinate System vs Camera Optical Coordinate System<a class="headerlink" href="#ros2-robot-coordinate-system-vs-camera-optical-coordinate-system" title="Link to this heading"></a></h2>
<ul class="simple">
<li><p>Point of View:</p>
<ul>
<li><p>Imagine standing behind the camera and looking forward.</p></li>
<li><p>Always use this point of view when discussing coordinates, left vs right IR, sensor positions, etc.</p></li>
</ul>
</li>
</ul>
<p><img alt="ROS2 and Camera Coordinate System" src="../../../_images/image0.png" /></p>
<ul class="simple">
<li><p>ROS2 Coordinate System: (X: Forward, Y: Left, Z: Up)</p></li>
<li><p>Camera Optical Coordinate System: (X: Right, Y: Down, Z: Forward)</p></li>
<li><p>All data published in the wrapper topics is optical data taken directly from the camera sensors.</p></li>
<li><p>Static and dynamic TF topics publish optical and ROS coordinate systems so users can transform between them.</p></li>
</ul>
</section>
<section id="using-ros2-tf-tools">
<h2><span class="section-number">4.4.4. </span>Using ROS2 TF Tools<a class="headerlink" href="#using-ros2-tf-tools" title="Link to this heading"></a></h2>
<section id="view-tf-tree-structure">
<h3><span class="section-number">4.4.4.1. </span>View TF Tree Structure<a class="headerlink" href="#view-tf-tree-structure" title="Link to this heading"></a></h3>
<p>Use the following ROS2 commands to print and visualize the TF tree published by the camera package:</p>
<p><strong>Print all TF relationships:</strong></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>run<span class="w"> </span>tf2_tools<span class="w"> </span>view_frames
</pre></div>
</div>
<p>This command generates a <code class="docutils literal notranslate"><span class="pre">frames.pdf</span></code> file showing the hierarchy between all frames.</p>
<p><img alt="image-20251027111351870" src="../../../_images/image4.png" /></p>
<p><strong>View all currently published TF information:</strong></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>topic<span class="w"> </span><span class="nb">echo</span><span class="w"> </span>/tf_static
</pre></div>
</div>
<p><strong>View the TF transform between two specified frames:</strong></p>
<p>Use the following command to view the transform between two specific frames:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>run<span class="w"> </span>tf2_ros<span class="w"> </span>tf2_echo<span class="w"> </span><span class="o">[</span>source_frame<span class="o">]</span><span class="w"> </span><span class="o">[</span>target_frame<span class="o">]</span>
</pre></div>
</div>
<p>Example, view transform from <code class="docutils literal notranslate"><span class="pre">camera_link</span></code> to <code class="docutils literal notranslate"><span class="pre">camera_depth_optical_frame</span></code>:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>run<span class="w"> </span>tf2_ros<span class="w"> </span>tf2_echo<span class="w"> </span>camera_link<span class="w"> </span>camera_depth_optical_frame
</pre></div>
</div>
<p>The command continuously outputs the real-time transform between the two frames, including:</p>
<ul class="simple">
<li><p>Translation: x, y, z (meters)</p></li>
<li><p>Rotation (Quaternion): x, y, z, w</p></li>
<li><p>Rotation (RPY): roll, pitch, yaw (radians and degrees)</p></li>
<li><p>Transform Matrix: 4×4 matrix with rotation and translation</p></li>
</ul>
<p>Sample output:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">At</span> <span class="n">time</span> <span class="mf">0.0</span>
<span class="o">-</span> <span class="n">Translation</span><span class="p">:</span> <span class="p">[</span><span class="mf">0.000</span><span class="p">,</span> <span class="mf">0.000</span><span class="p">,</span> <span class="mf">0.000</span><span class="p">]</span>
<span class="o">-</span> <span class="n">Rotation</span><span class="p">:</span> <span class="ow">in</span> <span class="n">Quaternion</span> <span class="p">[</span><span class="o">-</span><span class="mf">0.500</span><span class="p">,</span> <span class="mf">0.500</span><span class="p">,</span> <span class="o">-</span><span class="mf">0.500</span><span class="p">,</span> <span class="mf">0.500</span><span class="p">]</span>
<span class="o">-</span> <span class="n">Rotation</span><span class="p">:</span> <span class="ow">in</span> <span class="n">RPY</span> <span class="p">(</span><span class="n">radian</span><span class="p">)</span> <span class="p">[</span><span class="o">-</span><span class="mf">1.571</span><span class="p">,</span> <span class="o">-</span><span class="mf">0.000</span><span class="p">,</span> <span class="o">-</span><span class="mf">1.571</span><span class="p">]</span>
<span class="o">-</span> <span class="n">Rotation</span><span class="p">:</span> <span class="ow">in</span> <span class="n">RPY</span> <span class="p">(</span><span class="n">degree</span><span class="p">)</span> <span class="p">[</span><span class="o">-</span><span class="mf">90.000</span><span class="p">,</span> <span class="o">-</span><span class="mf">0.000</span><span class="p">,</span> <span class="o">-</span><span class="mf">90.000</span><span class="p">]</span>
<span class="o">-</span> <span class="n">Matrix</span><span class="p">:</span>
<span class="mf">0.000</span> <span class="mf">0.000</span> <span class="mf">1.000</span> <span class="mf">0.000</span>
<span class="o">-</span><span class="mf">1.000</span> <span class="mf">0.000</span> <span class="mf">0.000</span> <span class="mf">0.000</span>
<span class="mf">0.000</span> <span class="o">-</span><span class="mf">1.000</span> <span class="mf">0.000</span> <span class="mf">0.000</span>
<span class="mf">0.000</span> <span class="mf">0.000</span> <span class="mf">0.000</span> <span class="mf">1.000</span>
</pre></div>
</div>
</section>
<section id="visualize-tf-tree-in-rviz2">
<h3><span class="section-number">4.4.4.2. </span>Visualize TF Tree in rviz2<a class="headerlink" href="#visualize-tf-tree-in-rviz2" title="Link to this heading"></a></h3>
<p>Use rviz2 to visualize the TF tree and relative frame poses in real time:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>rviz2
</pre></div>
</div>
<p>In rviz2:</p>
<ul class="simple">
<li><p>Add the <code class="docutils literal notranslate"><span class="pre">TF</span></code> display plugin</p></li>
<li><p>Set the Fixed Frame to <code class="docutils literal notranslate"><span class="pre">camera_link</span></code> or <code class="docutils literal notranslate"><span class="pre">camera_depth_optical_frame</span></code></p></li>
<li><p>Select which TF frames to display</p></li>
</ul>
<p><img alt="image-20251027140652727" src="../../../_images/image5.png" /></p>
</section>
</section>
<section id="camera-tf-calculation-and-publishing-mechanism">
<h2><span class="section-number">4.4.5. </span>Camera TF Calculation and Publishing Mechanism<a class="headerlink" href="#camera-tf-calculation-and-publishing-mechanism" title="Link to this heading"></a></h2>
<section id="core-function-obcameranode-calcandpublishstatictransform">
<h3><span class="section-number">4.4.5.1. </span>Core Function: <a class="reference external" href="https://github.com/orbbec/OrbbecSDK_ROS2/blob/166c35b4ea211c60265ca9b38b1b15519d1ea3dd/orbbec_camera/src/ob_camera_node.cpp#L3475">OBCameraNode::calcAndPublishStaticTransform()</a><a class="headerlink" href="#core-function-obcameranode-calcandpublishstatictransform" title="Link to this heading"></a></h3>
<p>The camera node uses this function to calculate and publish all static transforms between sensors.</p>
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="kt">void</span><span class="w"> </span><span class="nf">OBCameraNode::calcAndPublishStaticTransform</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">tf2</span><span class="o">::</span><span class="n">Quaternion</span><span class="w"> </span><span class="n">quaternion_optical</span><span class="p">,</span><span class="w"> </span><span class="n">zero_rot</span><span class="p">;</span>
<span class="w"> </span><span class="n">zero_rot</span><span class="p">.</span><span class="n">setRPY</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span><span class="w"> </span><span class="mf">0.0</span><span class="p">,</span><span class="w"> </span><span class="mf">0.0</span><span class="p">);</span>
<span class="w"> </span><span class="n">quaternion_optical</span><span class="p">.</span><span class="n">setRPY</span><span class="p">(</span><span class="o">-</span><span class="n">M_PI</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mf">0.0</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="n">M_PI</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
<span class="w"> </span><span class="n">tf2</span><span class="o">::</span><span class="n">Vector3</span><span class="w"> </span><span class="n">zero_trans</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">base_stream_profile</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">stream_profile_</span><span class="p">[</span><span class="n">base_stream_</span><span class="p">];</span>
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">device_info</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">device_</span><span class="o">-&gt;</span><span class="n">getDeviceInfo</span><span class="p">();</span>
<span class="w"> </span><span class="n">CHECK_NOTNULL</span><span class="p">(</span><span class="n">device_info</span><span class="p">);</span>
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">pid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">device_info</span><span class="o">-&gt;</span><span class="n">getPid</span><span class="p">();</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">base_stream_profile</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">RCLCPP_ERROR_STREAM</span><span class="p">(</span><span class="n">logger_</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Failed to get base stream profile&quot;</span><span class="p">);</span>
<span class="w"> </span><span class="k">return</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="n">CHECK_NOTNULL</span><span class="p">(</span><span class="n">base_stream_profile</span><span class="p">.</span><span class="n">get</span><span class="p">());</span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="o">&amp;</span><span class="n">item</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="n">stream_profile_</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">stream_index</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">item</span><span class="p">.</span><span class="n">first</span><span class="p">;</span>
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">stream_profile</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">item</span><span class="p">.</span><span class="n">second</span><span class="p">;</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">stream_profile</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">continue</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="n">OBExtrinsic</span><span class="w"> </span><span class="n">ex</span><span class="p">;</span>
<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">stream_profile</span><span class="o">-&gt;</span><span class="n">getExtrinsicTo</span><span class="p">(</span><span class="n">base_stream_profile</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="n">ob</span><span class="o">::</span><span class="n">Error</span><span class="w"> </span><span class="o">&amp;</span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">RCLCPP_ERROR_STREAM</span><span class="p">(</span><span class="n">logger_</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Failed to get &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">stream_name_</span><span class="p">[</span><span class="n">stream_index</span><span class="p">]</span>
<span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot; extrinsic: &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="n">getMessage</span><span class="p">());</span>
<span class="w"> </span><span class="n">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">OBExtrinsic</span><span class="p">({{</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">},</span><span class="w"> </span><span class="p">{</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">}});</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">Q</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rotationMatrixToQuaternion</span><span class="p">(</span><span class="n">ex</span><span class="p">.</span><span class="n">rot</span><span class="p">);</span>
<span class="w"> </span><span class="n">Q</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">quaternion_optical</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">Q</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">quaternion_optical</span><span class="p">.</span><span class="n">inverse</span><span class="p">();</span>
<span class="w"> </span><span class="n">tf2</span><span class="o">::</span><span class="n">Vector3</span><span class="w"> </span><span class="n">trans</span><span class="p">(</span><span class="n">ex</span><span class="p">.</span><span class="n">trans</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="w"> </span><span class="n">ex</span><span class="p">.</span><span class="n">trans</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="w"> </span><span class="n">ex</span><span class="p">.</span><span class="n">trans</span><span class="p">[</span><span class="mi">2</span><span class="p">]);</span>
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">timestamp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">node_</span><span class="o">-&gt;</span><span class="n">now</span><span class="p">();</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">stream_index</span><span class="p">.</span><span class="n">first</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">base_stream_</span><span class="p">.</span><span class="n">first</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">stream_index</span><span class="p">.</span><span class="n">first</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">OB_STREAM_IR_RIGHT</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">base_stream_</span><span class="p">.</span><span class="n">first</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">OB_STREAM_DEPTH</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">trans</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">abs</span><span class="p">(</span><span class="n">trans</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span><span class="w"> </span><span class="c1">// because left and right ir calibration is error</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="n">publishStaticTF</span><span class="p">(</span><span class="n">timestamp</span><span class="p">,</span><span class="w"> </span><span class="n">trans</span><span class="p">,</span><span class="w"> </span><span class="n">Q</span><span class="p">,</span><span class="w"> </span><span class="n">frame_id_</span><span class="p">[</span><span class="n">base_stream_</span><span class="p">],</span><span class="w"> </span><span class="n">frame_id_</span><span class="p">[</span><span class="n">stream_index</span><span class="p">]);</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="n">publishStaticTF</span><span class="p">(</span><span class="n">timestamp</span><span class="p">,</span><span class="w"> </span><span class="n">zero_trans</span><span class="p">,</span><span class="w"> </span><span class="n">quaternion_optical</span><span class="p">,</span><span class="w"> </span><span class="n">frame_id_</span><span class="p">[</span><span class="n">stream_index</span><span class="p">],</span>
<span class="w"> </span><span class="n">optical_frame_id_</span><span class="p">[</span><span class="n">stream_index</span><span class="p">]);</span>
<span class="w"> </span><span class="n">RCLCPP_INFO_STREAM</span><span class="p">(</span><span class="n">logger_</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Publishing static transform from &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">stream_name_</span><span class="p">[</span><span class="n">stream_index</span><span class="p">]</span>
<span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot; to &quot;</span>
<span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">stream_name_</span><span class="p">[</span><span class="n">base_stream_</span><span class="p">]);</span>
<span class="w"> </span><span class="n">RCLCPP_INFO_STREAM</span><span class="p">(</span><span class="n">logger_</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Translation &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">trans</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;, &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">trans</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;, &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">trans</span><span class="p">[</span><span class="mi">2</span><span class="p">]);</span>
<span class="w"> </span><span class="n">RCLCPP_INFO_STREAM</span><span class="p">(</span><span class="n">logger_</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Rotation &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">Q</span><span class="p">.</span><span class="n">getX</span><span class="p">()</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;, &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">Q</span><span class="p">.</span><span class="n">getY</span><span class="p">()</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;, &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">Q</span><span class="p">.</span><span class="n">getZ</span><span class="p">()</span>
<span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;, &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">Q</span><span class="p">.</span><span class="n">getW</span><span class="p">());</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">((</span><span class="n">pid</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">FEMTO_BOLT_PID</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">pid</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">FEMTO_MEGA_PID</span><span class="p">)</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">enable_stream_</span><span class="p">[</span><span class="n">DEPTH</span><span class="p">]</span><span class="w"> </span><span class="o">&amp;&amp;</span>
<span class="w"> </span><span class="n">enable_stream_</span><span class="p">[</span><span class="n">COLOR</span><span class="p">]</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">enable_publish_extrinsic_</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="c1">// calc depth to color</span>
<span class="w"> </span><span class="n">CHECK_NOTNULL</span><span class="p">(</span><span class="n">stream_profile_</span><span class="p">[</span><span class="n">COLOR</span><span class="p">]);</span>
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">depth_to_color_extrinsics</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">base_stream_profile</span><span class="o">-&gt;</span><span class="n">getExtrinsicTo</span><span class="p">(</span><span class="n">stream_profile_</span><span class="p">[</span><span class="n">COLOR</span><span class="p">]);</span>
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">Q</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rotationMatrixToQuaternion</span><span class="p">(</span><span class="n">depth_to_color_extrinsics</span><span class="p">.</span><span class="n">rot</span><span class="p">);</span>
<span class="w"> </span><span class="n">Q</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">quaternion_optical</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">Q</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">quaternion_optical</span><span class="p">.</span><span class="n">inverse</span><span class="p">();</span>
<span class="w"> </span><span class="n">publishStaticTF</span><span class="p">(</span><span class="n">node_</span><span class="o">-&gt;</span><span class="n">now</span><span class="p">(),</span><span class="w"> </span><span class="n">zero_trans</span><span class="p">,</span><span class="w"> </span><span class="n">Q</span><span class="p">,</span><span class="w"> </span><span class="n">camera_link_frame_id_</span><span class="p">,</span><span class="w"> </span><span class="n">frame_id_</span><span class="p">[</span><span class="n">base_stream_</span><span class="p">]);</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">publishStaticTF</span><span class="p">(</span><span class="n">node_</span><span class="o">-&gt;</span><span class="n">now</span><span class="p">(),</span><span class="w"> </span><span class="n">zero_trans</span><span class="p">,</span><span class="w"> </span><span class="n">zero_rot</span><span class="p">,</span><span class="w"> </span><span class="n">camera_link_frame_id_</span><span class="p">,</span>
<span class="w"> </span><span class="n">frame_id_</span><span class="p">[</span><span class="n">base_stream_</span><span class="p">]);</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">enable_stream_</span><span class="p">[</span><span class="n">DEPTH</span><span class="p">]</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">enable_stream_</span><span class="p">[</span><span class="n">COLOR</span><span class="p">]</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">enable_publish_extrinsic_</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">frame_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;depth_to_color_extrinsics&quot;</span><span class="p">;</span>
<span class="w"> </span><span class="n">OBExtrinsic</span><span class="w"> </span><span class="n">ex</span><span class="p">;</span>
<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">base_stream_profile</span><span class="o">-&gt;</span><span class="n">getExtrinsicTo</span><span class="p">(</span><span class="n">stream_profile_</span><span class="p">[</span><span class="n">COLOR</span><span class="p">]);</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="n">ob</span><span class="o">::</span><span class="n">Error</span><span class="w"> </span><span class="o">&amp;</span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">RCLCPP_ERROR_STREAM</span><span class="p">(</span><span class="n">logger_</span><span class="p">,</span>
<span class="w"> </span><span class="s">&quot;Failed to get &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">frame_id</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot; extrinsic: &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="n">getMessage</span><span class="p">());</span>
<span class="w"> </span><span class="n">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">OBExtrinsic</span><span class="p">({{</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">},</span><span class="w"> </span><span class="p">{</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">}});</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="n">depth_to_other_extrinsics_</span><span class="p">[</span><span class="n">COLOR</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ex</span><span class="p">;</span>
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">ex_msg</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">obExtrinsicsToMsg</span><span class="p">(</span><span class="n">ex</span><span class="p">,</span><span class="w"> </span><span class="n">frame_id</span><span class="p">);</span>
<span class="w"> </span><span class="n">CHECK_NOTNULL</span><span class="p">(</span><span class="n">depth_to_other_extrinsics_publishers_</span><span class="p">[</span><span class="n">COLOR</span><span class="p">]);</span>
<span class="w"> </span><span class="n">depth_to_other_extrinsics_publishers_</span><span class="p">[</span><span class="n">COLOR</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">publish</span><span class="p">(</span><span class="n">ex_msg</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">enable_stream_</span><span class="p">[</span><span class="n">DEPTH</span><span class="p">]</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">enable_stream_</span><span class="p">[</span><span class="n">INFRA0</span><span class="p">]</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">enable_publish_extrinsic_</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">frame_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;depth_to_ir_extrinsics&quot;</span><span class="p">;</span>
<span class="w"> </span><span class="n">OBExtrinsic</span><span class="w"> </span><span class="n">ex</span><span class="p">;</span>
<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">base_stream_profile</span><span class="o">-&gt;</span><span class="n">getExtrinsicTo</span><span class="p">(</span><span class="n">stream_profile_</span><span class="p">[</span><span class="n">INFRA0</span><span class="p">]);</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="n">ob</span><span class="o">::</span><span class="n">Error</span><span class="w"> </span><span class="o">&amp;</span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">RCLCPP_ERROR_STREAM</span><span class="p">(</span><span class="n">logger_</span><span class="p">,</span>
<span class="w"> </span><span class="s">&quot;Failed to get &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">frame_id</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot; extrinsic: &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="n">getMessage</span><span class="p">());</span>
<span class="w"> </span><span class="n">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">OBExtrinsic</span><span class="p">({{</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">},</span><span class="w"> </span><span class="p">{</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">}});</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="n">depth_to_other_extrinsics_</span><span class="p">[</span><span class="n">INFRA0</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ex</span><span class="p">;</span>
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">ex_msg</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">obExtrinsicsToMsg</span><span class="p">(</span><span class="n">ex</span><span class="p">,</span><span class="w"> </span><span class="n">frame_id</span><span class="p">);</span>
<span class="w"> </span><span class="n">CHECK_NOTNULL</span><span class="p">(</span><span class="n">depth_to_other_extrinsics_publishers_</span><span class="p">[</span><span class="n">INFRA0</span><span class="p">]);</span>
<span class="w"> </span><span class="n">depth_to_other_extrinsics_publishers_</span><span class="p">[</span><span class="n">INFRA0</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">publish</span><span class="p">(</span><span class="n">ex_msg</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">enable_stream_</span><span class="p">[</span><span class="n">DEPTH</span><span class="p">]</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">enable_stream_</span><span class="p">[</span><span class="n">INFRA1</span><span class="p">]</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">enable_publish_extrinsic_</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">frame_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;depth_to_left_ir_extrinsics&quot;</span><span class="p">;</span>
<span class="w"> </span><span class="n">OBExtrinsic</span><span class="w"> </span><span class="n">ex</span><span class="p">;</span>
<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">base_stream_profile</span><span class="o">-&gt;</span><span class="n">getExtrinsicTo</span><span class="p">(</span><span class="n">stream_profile_</span><span class="p">[</span><span class="n">INFRA1</span><span class="p">]);</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="n">ob</span><span class="o">::</span><span class="n">Error</span><span class="w"> </span><span class="o">&amp;</span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">RCLCPP_ERROR_STREAM</span><span class="p">(</span><span class="n">logger_</span><span class="p">,</span>
<span class="w"> </span><span class="s">&quot;Failed to get &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">frame_id</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot; extrinsic: &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="n">getMessage</span><span class="p">());</span>
<span class="w"> </span><span class="n">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">OBExtrinsic</span><span class="p">({{</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">},</span><span class="w"> </span><span class="p">{</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">}});</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="n">depth_to_other_extrinsics_</span><span class="p">[</span><span class="n">INFRA1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ex</span><span class="p">;</span>
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">ex_msg</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">obExtrinsicsToMsg</span><span class="p">(</span><span class="n">ex</span><span class="p">,</span><span class="w"> </span><span class="n">frame_id</span><span class="p">);</span>
<span class="w"> </span><span class="n">CHECK_NOTNULL</span><span class="p">(</span><span class="n">depth_to_other_extrinsics_publishers_</span><span class="p">[</span><span class="n">INFRA1</span><span class="p">]);</span>
<span class="w"> </span><span class="n">depth_to_other_extrinsics_publishers_</span><span class="p">[</span><span class="n">INFRA1</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">publish</span><span class="p">(</span><span class="n">ex_msg</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">enable_stream_</span><span class="p">[</span><span class="n">DEPTH</span><span class="p">]</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">enable_stream_</span><span class="p">[</span><span class="n">INFRA2</span><span class="p">]</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">enable_publish_extrinsic_</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">frame_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;depth_to_right_ir_extrinsics&quot;</span><span class="p">;</span>
<span class="w"> </span><span class="n">OBExtrinsic</span><span class="w"> </span><span class="n">ex</span><span class="p">;</span>
<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">base_stream_profile</span><span class="o">-&gt;</span><span class="n">getExtrinsicTo</span><span class="p">(</span><span class="n">stream_profile_</span><span class="p">[</span><span class="n">INFRA2</span><span class="p">]);</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="n">ob</span><span class="o">::</span><span class="n">Error</span><span class="w"> </span><span class="o">&amp;</span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">RCLCPP_ERROR_STREAM</span><span class="p">(</span><span class="n">logger_</span><span class="p">,</span>
<span class="w"> </span><span class="s">&quot;Failed to get &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">frame_id</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot; extrinsic: &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="n">getMessage</span><span class="p">());</span>
<span class="w"> </span><span class="n">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">OBExtrinsic</span><span class="p">({{</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">},</span><span class="w"> </span><span class="p">{</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">}});</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="n">ex</span><span class="p">.</span><span class="n">trans</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">-</span><span class="n">std</span><span class="o">::</span><span class="n">abs</span><span class="p">(</span><span class="n">ex</span><span class="p">.</span><span class="n">trans</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
<span class="w"> </span><span class="n">depth_to_other_extrinsics_</span><span class="p">[</span><span class="n">INFRA2</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ex</span><span class="p">;</span>
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">ex_msg</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">obExtrinsicsToMsg</span><span class="p">(</span><span class="n">ex</span><span class="p">,</span><span class="w"> </span><span class="n">frame_id</span><span class="p">);</span>
<span class="w"> </span><span class="n">CHECK_NOTNULL</span><span class="p">(</span><span class="n">depth_to_other_extrinsics_publishers_</span><span class="p">[</span><span class="n">INFRA2</span><span class="p">]);</span>
<span class="w"> </span><span class="n">depth_to_other_extrinsics_publishers_</span><span class="p">[</span><span class="n">INFRA2</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">publish</span><span class="p">(</span><span class="n">ex_msg</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">enable_stream_</span><span class="p">[</span><span class="n">DEPTH</span><span class="p">]</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">enable_stream_</span><span class="p">[</span><span class="n">ACCEL</span><span class="p">]</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">enable_publish_extrinsic_</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">frame_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;depth_to_accel_extrinsics&quot;</span><span class="p">;</span>
<span class="w"> </span><span class="n">OBExtrinsic</span><span class="w"> </span><span class="n">ex</span><span class="p">;</span>
<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">base_stream_profile</span><span class="o">-&gt;</span><span class="n">getExtrinsicTo</span><span class="p">(</span><span class="n">stream_profile_</span><span class="p">[</span><span class="n">ACCEL</span><span class="p">]);</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="n">ob</span><span class="o">::</span><span class="n">Error</span><span class="w"> </span><span class="o">&amp;</span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">RCLCPP_ERROR_STREAM</span><span class="p">(</span><span class="n">logger_</span><span class="p">,</span>
<span class="w"> </span><span class="s">&quot;Failed to get &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">frame_id</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot; extrinsic: &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="n">getMessage</span><span class="p">());</span>
<span class="w"> </span><span class="n">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">OBExtrinsic</span><span class="p">({{</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">},</span><span class="w"> </span><span class="p">{</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">}});</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="n">depth_to_other_extrinsics_</span><span class="p">[</span><span class="n">ACCEL</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ex</span><span class="p">;</span>
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">ex_msg</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">obExtrinsicsToMsg</span><span class="p">(</span><span class="n">ex</span><span class="p">,</span><span class="w"> </span><span class="n">frame_id</span><span class="p">);</span>
<span class="w"> </span><span class="n">CHECK_NOTNULL</span><span class="p">(</span><span class="n">depth_to_other_extrinsics_publishers_</span><span class="p">[</span><span class="n">ACCEL</span><span class="p">]);</span>
<span class="w"> </span><span class="n">depth_to_other_extrinsics_publishers_</span><span class="p">[</span><span class="n">ACCEL</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">publish</span><span class="p">(</span><span class="n">ex_msg</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">enable_stream_</span><span class="p">[</span><span class="n">DEPTH</span><span class="p">]</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">enable_stream_</span><span class="p">[</span><span class="n">GYRO</span><span class="p">]</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">enable_publish_extrinsic_</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">frame_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;depth_to_gyro_extrinsics&quot;</span><span class="p">;</span>
<span class="w"> </span><span class="n">OBExtrinsic</span><span class="w"> </span><span class="n">ex</span><span class="p">;</span>
<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">base_stream_profile</span><span class="o">-&gt;</span><span class="n">getExtrinsicTo</span><span class="p">(</span><span class="n">stream_profile_</span><span class="p">[</span><span class="n">GYRO</span><span class="p">]);</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="n">ob</span><span class="o">::</span><span class="n">Error</span><span class="w"> </span><span class="o">&amp;</span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">RCLCPP_ERROR_STREAM</span><span class="p">(</span><span class="n">logger_</span><span class="p">,</span>
<span class="w"> </span><span class="s">&quot;Failed to get &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">frame_id</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot; extrinsic: &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="n">getMessage</span><span class="p">());</span>
<span class="w"> </span><span class="n">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">OBExtrinsic</span><span class="p">({{</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">},</span><span class="w"> </span><span class="p">{</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">}});</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="n">depth_to_other_extrinsics_</span><span class="p">[</span><span class="n">GYRO</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ex</span><span class="p">;</span>
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">ex_msg</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">obExtrinsicsToMsg</span><span class="p">(</span><span class="n">ex</span><span class="p">,</span><span class="w"> </span><span class="n">frame_id</span><span class="p">);</span>
<span class="w"> </span><span class="n">CHECK_NOTNULL</span><span class="p">(</span><span class="n">depth_to_other_extrinsics_publishers_</span><span class="p">[</span><span class="n">GYRO</span><span class="p">]);</span>
<span class="w"> </span><span class="n">depth_to_other_extrinsics_publishers_</span><span class="p">[</span><span class="n">GYRO</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">publish</span><span class="p">(</span><span class="n">ex_msg</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">enable_sync_output_accel_gyro_</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">tf2</span><span class="o">::</span><span class="n">Quaternion</span><span class="w"> </span><span class="n">zero_rot</span><span class="p">;</span>
<span class="w"> </span><span class="n">zero_rot</span><span class="p">.</span><span class="n">setRPY</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span><span class="w"> </span><span class="mf">0.0</span><span class="p">,</span><span class="w"> </span><span class="mf">0.0</span><span class="p">);</span>
<span class="w"> </span><span class="n">tf2</span><span class="o">::</span><span class="n">Vector3</span><span class="w"> </span><span class="n">zero_trans</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
<span class="w"> </span><span class="n">publishStaticTF</span><span class="p">(</span><span class="n">node_</span><span class="o">-&gt;</span><span class="n">now</span><span class="p">(),</span><span class="w"> </span><span class="n">zero_trans</span><span class="p">,</span><span class="w"> </span><span class="n">zero_rot</span><span class="p">,</span><span class="w"> </span><span class="n">optical_frame_id_</span><span class="p">[</span><span class="n">GYRO</span><span class="p">],</span>
<span class="w"> </span><span class="n">accel_gyro_frame_id_</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
</section>
<section id="function-breakdown">
<h3><span class="section-number">4.4.5.2. </span>Function Breakdown<a class="headerlink" href="#function-breakdown" title="Link to this heading"></a></h3>
<p>Detailed explanation of the code:</p>
<p><strong>Quaternion Initialization and Coordinate Transform</strong></p>
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="n">tf2</span><span class="o">::</span><span class="n">Quaternion</span><span class="w"> </span><span class="n">quaternion_optical</span><span class="p">,</span><span class="w"> </span><span class="n">zero_rot</span><span class="p">;</span>
<span class="n">zero_rot</span><span class="p">.</span><span class="n">setRPY</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span><span class="w"> </span><span class="mf">0.0</span><span class="p">,</span><span class="w"> </span><span class="mf">0.0</span><span class="p">);</span>
<span class="n">quaternion_optical</span><span class="p">.</span><span class="n">setRPY</span><span class="p">(</span><span class="o">-</span><span class="n">M_PI</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mf">0.0</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="n">M_PI</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
</pre></div>
</div>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">quaternion_optical</span></code>: Defines the rotation from optical coordinates to ROS standard (90° rotation)</p></li>
<li><p>Converts camera optical CS (X right, Y down, Z forward) to ROS CS (X forward, Y left, Z up)</p></li>
</ul>
<p><strong>Get Device Info and Base Stream</strong></p>
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="k">auto</span><span class="w"> </span><span class="n">base_stream_profile</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">stream_profile_</span><span class="p">[</span><span class="n">base_stream_</span><span class="p">];</span>
<span class="k">auto</span><span class="w"> </span><span class="n">device_info</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">device_</span><span class="o">-&gt;</span><span class="n">getDeviceInfo</span><span class="p">();</span>
<span class="c1">// Base stream usually DEPTH</span>
</pre></div>
</div>
<ul class="simple">
<li><p>Choose a base stream (usually depth); all other transforms are relative to it</p></li>
</ul>
<p><strong>Iterate Streams and Compute Relative Transforms</strong></p>
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="o">&amp;</span><span class="n">item</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="n">stream_profile_</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">stream_index</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">item</span><span class="p">.</span><span class="n">first</span><span class="p">;</span>
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">stream_profile</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">item</span><span class="p">.</span><span class="n">second</span><span class="p">;</span>
<span class="w"> </span><span class="n">OBExtrinsic</span><span class="w"> </span><span class="n">ex</span><span class="p">;</span>
<span class="w"> </span><span class="n">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">stream_profile</span><span class="o">-&gt;</span><span class="n">getExtrinsicTo</span><span class="p">(</span><span class="n">base_stream_profile</span><span class="p">);</span>
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">Q</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rotationMatrixToQuaternion</span><span class="p">(</span><span class="n">ex</span><span class="p">.</span><span class="n">rot</span><span class="p">);</span>
<span class="w"> </span><span class="n">Q</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">quaternion_optical</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">Q</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">quaternion_optical</span><span class="p">.</span><span class="n">inverse</span><span class="p">();</span>
<span class="w"> </span><span class="n">tf2</span><span class="o">::</span><span class="n">Vector3</span><span class="w"> </span><span class="nf">trans</span><span class="p">(</span><span class="n">ex</span><span class="p">.</span><span class="n">trans</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="w"> </span><span class="n">ex</span><span class="p">.</span><span class="n">trans</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="w"> </span><span class="n">ex</span><span class="p">.</span><span class="n">trans</span><span class="p">[</span><span class="mi">2</span><span class="p">]);</span>
</pre></div>
</div>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">OBExtrinsic</span></code> holds rotation matrix (<code class="docutils literal notranslate"><span class="pre">rot</span></code>) and translation vector (<code class="docutils literal notranslate"><span class="pre">trans</span></code>)</p></li>
<li><p>Apply optical-to-ROS rotation via quaternion multiplication</p></li>
</ul>
<p><strong>Publish TF Transforms</strong></p>
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="n">publishStaticTF</span><span class="p">(</span><span class="n">timestamp</span><span class="p">,</span><span class="w"> </span><span class="n">trans</span><span class="p">,</span><span class="w"> </span><span class="n">Q</span><span class="p">,</span><span class="w"> </span><span class="n">frame_id_</span><span class="p">[</span><span class="n">base_stream_</span><span class="p">],</span><span class="w"> </span><span class="n">frame_id_</span><span class="p">[</span><span class="n">stream_index</span><span class="p">]);</span>
<span class="n">publishStaticTF</span><span class="p">(</span><span class="n">timestamp</span><span class="p">,</span><span class="w"> </span><span class="n">zero_trans</span><span class="p">,</span><span class="w"> </span><span class="n">quaternion_optical</span><span class="p">,</span><span class="w"> </span><span class="n">frame_id_</span><span class="p">[</span><span class="n">stream_index</span><span class="p">],</span>
<span class="w"> </span><span class="n">optical_frame_id_</span><span class="p">[</span><span class="n">stream_index</span><span class="p">]);</span>
</pre></div>
</div>
<ul class="simple">
<li><p>First: base stream to sensor (translation + rotation)</p></li>
<li><p>Second: sensor frame to optical frame (pure rotation)</p></li>
</ul>
<p><strong>Special Handling for Left/Right IR</strong></p>
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">stream_index</span><span class="p">.</span><span class="n">first</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">OB_STREAM_IR_RIGHT</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">base_stream_</span><span class="p">.</span><span class="n">first</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">OB_STREAM_DEPTH</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">trans</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">abs</span><span class="p">(</span><span class="n">trans</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
<span class="p">}</span>
</pre></div>
</div>
<ul class="simple">
<li><p>Ensures symmetry consistency between left/right IR cameras</p></li>
</ul>
<p><strong>Publish Depth-to-Other Extrinsics</strong></p>
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">enable_stream_</span><span class="p">[</span><span class="n">DEPTH</span><span class="p">]</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">enable_stream_</span><span class="p">[</span><span class="n">COLOR</span><span class="p">]</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">enable_publish_extrinsic_</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">OBExtrinsic</span><span class="w"> </span><span class="n">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">base_stream_profile</span><span class="o">-&gt;</span><span class="n">getExtrinsicTo</span><span class="p">(</span><span class="n">stream_profile_</span><span class="p">[</span><span class="n">COLOR</span><span class="p">]);</span>
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">ex_msg</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">obExtrinsicsToMsg</span><span class="p">(</span><span class="n">ex</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;depth_to_color_extrinsics&quot;</span><span class="p">);</span>
<span class="w"> </span><span class="n">depth_to_other_extrinsics_publishers_</span><span class="p">[</span><span class="n">COLOR</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">publish</span><span class="p">(</span><span class="n">ex_msg</span><span class="p">);</span>
<span class="p">}</span>
</pre></div>
</div>
<ul class="simple">
<li><p>Publishes raw extrinsics via topic for advanced alignment and registration</p></li>
</ul>
</section>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="topics.html" class="btn btn-neutral float-left" title="4.3. Available Topics" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="compressed_image.html" class="btn btn-neutral float-right" title="4.5. Compressed Image" 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 2026-01-04 01:12:32.
</span></p>
</div>
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,488 @@
<!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>4.6. Enabling and Visualizing Point Cloud in ROS 2 &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=63de077d" />
<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. Advanced Guide" href="../5_advanced_guide/advanced_guide.html" />
<link rel="prev" title="4.5. Compressed Image" href="compressed_image.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 current"><a class="reference internal" href="../index.html">Camera Devices</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../1_overview/overview.html">1. Overview</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../1_overview/introduction.html">1.1. Introduction</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../1_overview/introduction.html#support-hardware-products">1.1.1. Support Hardware Products</a></li>
<li class="toctree-l4"><a class="reference internal" href="../1_overview/introduction.html#orbbec-camera-datasheet">1.1.2. Orbbec camera datasheet</a></li>
<li class="toctree-l4"><a class="reference internal" href="../1_overview/introduction.html#support-platforms">1.1.3. Support Platforms</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../1_overview/orbbecsdk_overview.html">1.2. Orbbec SDK Overview</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../1_overview/orbbecsdk_overview.html#terms">1.2.1. Terms</a></li>
<li class="toctree-l4"><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-l4"><a class="reference internal" href="../1_overview/orbbecsdk_overview.html#sdk-concept-overview">1.2.3. SDK Concept Overview</a></li>
<li class="toctree-l4"><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-l2"><a class="reference internal" href="../2_installation/installation.html">2. Installation</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../2_installation/build_the_package.html">2.1. Environment configuration</a></li>
<li class="toctree-l3"><a class="reference internal" href="../2_installation/build_the_package.html#linux-binary-package-installation">2.2. Linux Binary Package Installation</a></li>
<li class="toctree-l3"><a class="reference internal" href="../2_installation/build_the_package.html#build-from-source">2.3. Build from Source</a></li>
<li class="toctree-l3"><a class="reference internal" href="../2_installation/registration_script.html">2.4. Registration Script (Required)</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../2_installation/registration_script.html#binary-installation">2.4.1. Binary Installation</a></li>
<li class="toctree-l4"><a class="reference internal" href="../2_installation/registration_script.html#build-from-source">2.4.2. Build from Source</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../3_quickstarts/quickstarts.html">3. Quickstarts</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../3_quickstarts/quickstart.html">3.1. ROS Package QuickStarts</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../3_quickstarts/quickstart.html#introduction">3.1.1. Introduction</a></li>
<li class="toctree-l4"><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-l5"><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-l5"><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-l5"><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-l4"><a class="reference internal" href="../3_quickstarts/quickstart.html#sample-features">3.1.3. Sample Features</a><ul>
<li class="toctree-l5"><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-l5"><a class="reference internal" href="../3_quickstarts/quickstart.html#echo-a-topic">3.1.3.2. Echo a topic</a></li>
<li class="toctree-l5"><a class="reference internal" href="../3_quickstarts/quickstart.html#call-a-service">3.1.3.3. Call a service</a></li>
<li class="toctree-l5"><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-l3"><a class="reference internal" href="../3_quickstarts/orbbecviewer.html">3.2. OrbbecViewer QuickStarts</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../3_quickstarts/orbbecviewer.html#download">3.2.1. Download</a></li>
<li class="toctree-l4"><a class="reference internal" href="../3_quickstarts/orbbecviewer.html#connect-the-device">3.2.2. Connect the device</a></li>
<li class="toctree-l4"><a class="reference internal" href="../3_quickstarts/orbbecviewer.html#camera-control">3.2.3. Camera Control</a></li>
<li class="toctree-l4"><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-l2 current"><a class="reference internal" href="application_guide.html">4. Application Guide</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="launch_parameters.html">4.1. Launch parameters</a><ul>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#core-stream-configuration">4.1.1. Core &amp; Stream Configuration</a></li>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#sensor-controls">4.1.2. Sensor Controls</a><ul>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#color-stream">4.1.2.1. Color Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#depth-stream">4.1.2.2. Depth Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#ir-stream">4.1.2.3. IR Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#laser-ldp">4.1.2.4. Laser / LDP</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#device-sync-advanced-features">4.1.3. Device, Sync &amp; Advanced Features</a><ul>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#multi-camera-synchronization">4.1.3.1. Multi-Camera Synchronization</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#network-cameras">4.1.3.2. Network Cameras</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#device-specific">4.1.3.3. Device-Specific</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#disparity">4.1.3.4. Disparity</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#interleave-ae-mode">4.1.3.5. Interleave AE Mode</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#intra-camera-synchronization">4.1.3.6. Intra-Camera Synchronization</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#basic-general-parameters">4.1.4. Basic &amp; General Parameters</a><ul>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#firmware-backend">4.1.4.1. Firmware &amp; Backend</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#tf-extrinsics-calibration">4.1.4.2. TF, Extrinsics &amp; Calibration</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#time-synchronization">4.1.4.3. Time Synchronization</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#logging-diagnostics">4.1.4.4. Logging &amp; Diagnostics</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#miscellaneous">4.1.4.5. Miscellaneous</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#imu">4.1.5. IMU</a></li>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#depth-filters">4.1.6. Depth Filters</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="services.html">4.2. All available services for camera control</a><ul>
<li class="toctree-l4"><a class="reference internal" href="services.html#stream-control">4.2.1. Stream Control</a><ul>
<li class="toctree-l5"><a class="reference internal" href="services.html#color-stream">4.2.1.1. Color Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="services.html#depth-stream">4.2.1.2. Depth Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="services.html#ir-stream">4.2.1.3. IR Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="services.html#all-streams">4.2.1.4. All Streams</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="services.html#sensor-emitter-control">4.2.2. Sensor &amp; Emitter Control</a></li>
<li class="toctree-l4"><a class="reference internal" href="services.html#device-information-management">4.2.3. Device Information &amp; Management</a></li>
<li class="toctree-l4"><a class="reference internal" href="services.html#synchronization-triggering">4.2.4. Synchronization &amp; Triggering</a></li>
<li class="toctree-l4"><a class="reference internal" href="services.html#depth-filter-configuration">4.2.5. Depth Filter Configuration</a></li>
<li class="toctree-l4"><a class="reference internal" href="services.html#data-capture-calibration-management">4.2.6. Data Capture &amp; Calibration Management</a></li>
<li class="toctree-l4"><a class="reference internal" href="services.html#point-cloud-decimation">4.2.7. Point cloud decimation</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="topics.html">4.3. Available Topics</a><ul>
<li class="toctree-l4"><a class="reference internal" href="topics.html#image-streams">4.3.1. Image Streams</a></li>
<li class="toctree-l4"><a class="reference internal" href="topics.html#point-cloud-topics">4.3.2. Point Cloud Topics</a></li>
<li class="toctree-l4"><a class="reference internal" href="topics.html#imu-topics">4.3.3. IMU Topics</a></li>
<li class="toctree-l4"><a class="reference internal" href="topics.html#device-status-diagnostics">4.3.4. Device Status &amp; Diagnostics</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="coordinate_and_tf.html">4.4. Coordinate Systems and TF Transforms</a><ul>
<li class="toctree-l4"><a class="reference internal" href="coordinate_and_tf.html#camera-sensor-structure">4.4.1. Camera sensor structure</a></li>
<li class="toctree-l4"><a class="reference internal" href="coordinate_and_tf.html#tf-from-coordinate-a-to-coordinate-b">4.4.2. TF from coordinate A to coordinate B:</a></li>
<li class="toctree-l4"><a class="reference internal" href="coordinate_and_tf.html#ros2-robot-coordinate-system-vs-camera-optical-coordinate-system">4.4.3. ROS2 Robot Coordinate System vs Camera Optical Coordinate System</a></li>
<li class="toctree-l4"><a class="reference internal" href="coordinate_and_tf.html#using-ros2-tf-tools">4.4.4. Using ROS2 TF Tools</a><ul>
<li class="toctree-l5"><a class="reference internal" href="coordinate_and_tf.html#view-tf-tree-structure">4.4.4.1. View TF Tree Structure</a></li>
<li class="toctree-l5"><a class="reference internal" href="coordinate_and_tf.html#visualize-tf-tree-in-rviz2">4.4.4.2. Visualize TF Tree in rviz2</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="coordinate_and_tf.html#camera-tf-calculation-and-publishing-mechanism">4.4.5. Camera TF Calculation and Publishing Mechanism</a><ul>
<li class="toctree-l5"><a class="reference internal" href="coordinate_and_tf.html#core-function-obcameranode-calcandpublishstatictransform">4.4.5.1. Core Function: OBCameraNode::calcAndPublishStaticTransform()</a></li>
<li class="toctree-l5"><a class="reference internal" href="coordinate_and_tf.html#function-breakdown">4.4.5.2. Function Breakdown</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="compressed_image.html">4.5. Compressed Image</a></li>
<li class="toctree-l3 current"><a class="current reference internal" href="#">4.6. Enabling and Visualizing Point Cloud in ROS 2</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#enabling-depth-point-cloud">4.6.1. Enabling Depth Point Cloud</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#command-to-enable-depth-point-cloud">4.6.1.1. Command to Enable Depth Point Cloud</a></li>
<li class="toctree-l5"><a class="reference internal" href="#visualizing-depth-point-cloud-in-rviz2">4.6.1.2. Visualizing Depth Point Cloud in RViz2</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#enabling-colored-point-cloud">4.6.2. Enabling Colored Point Cloud</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#command-to-enable-colored-point-cloud">4.6.2.1. Command to Enable Colored Point Cloud</a></li>
<li class="toctree-l5"><a class="reference internal" href="#visualizing-colored-point-cloud-in-rviz2">4.6.2.2. Visualizing Colored Point Cloud in RViz2</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../5_advanced_guide/advanced_guide.html">5. Advanced Guide</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../5_advanced_guide/advanced_guide.html#performance-optimization">5.1. Performance &amp; Optimization</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html">5.1.1. Reducing CPU Usage with Orbbec ROS Package</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#recommended-settings-for-lower-cpu-usage">5.1.1.1. Recommended Settings for Lower CPU Usage</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#launch-files-used-for-testing">5.1.1.2. Launch Files Used for Testing</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#test-environment">5.1.1.3. Test environment</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#test-setup">5.1.1.4. Test Setup</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#test-results">5.1.1.5. Test Results</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#further-optimizationa">5.1.1.6. Further Optimizationa</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/performance/efficient_intra_process_communication.html">5.1.2. Efficient intra-process communication:</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/efficient_intra_process_communication.html#introduction">5.1.2.1. Introduction</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/efficient_intra_process_communication.html#example">5.1.2.2. Example</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/performance/fastdds_tuning.html">5.1.3. Fast DDS Optimization for Orbbec Camera with ROS2</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/fastdds_tuning.html#adjusting-system-parameters">5.1.3.1. Adjusting System Parameters</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/fastdds_tuning.html#fast-dds-configuration">5.1.3.2. Fast DDS Configuration</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../5_advanced_guide/advanced_guide.html#multi-camera">5.2. Multi-Camera</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera.html">5.2.1. Multi-Camera</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/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-l5"><a class="reference internal" href="../5_advanced_guide/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-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced.html">5.2.2. Multi_camera synced Instructions</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced.html#setup-instructions">5.2.2.1. Setup instructions</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/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-l5"><a class="reference internal" href="../5_advanced_guide/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-l5"><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.2.2.4. Run the following command to start the multi-camera synced</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced_verification_tool.html">5.2.3. Multi-Camera Synchronization Verification Node</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced_verification_tool.html#usage-guide">5.2.3.1. Usage Guide</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced_verification_tool.html#system-configuration-requirements">5.2.3.2. System Configuration Requirements</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html">5.2.4. GMSL_camera</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html#single-gmsl-camera">5.2.4.1. Single GMSL camera</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html#multi-gmsl-camera">5.2.4.2. Multi GMSL camera</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html#multi-gmsl-camera-synced">5.2.4.3. Multi GMSL camera synced</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html#usage-limitations-of-gmsl-cameras">5.2.4.4. Usage Limitations of GMSL Cameras</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../5_advanced_guide/advanced_guide.html#configuration-modes">5.3. Configuration &amp; Modes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/align_depth_color.html">5.3.1. Aligning Depth to Color in ROS 2</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/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-l5"><a class="reference internal" href="../5_advanced_guide/configuration/align_depth_color.html#selecting-topics-in-rviz2">5.3.1.2. Selecting Topics in RViz2</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/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-l4"><a class="reference internal" href="../5_advanced_guide/configuration/configuration_of_depth_NFOV_and_WFOV_modes.html">5.3.2. Configuration of depth NFOV and WFOV modes</a></li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/depth_work_mode_switch.html">5.3.3. Depth work mode switch</a></li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/disparity_search_offset.html">5.3.4. Disparity_search_offset</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/disparity_search_offset.html#function-introduction">5.3.4.1. Function Introduction</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/disparity_search_offset.html#parameter-introduction">5.3.4.2. Parameter Introduction</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/disparity_search_offset.html#run-the-launch">5.3.4.3. Run the launch</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/interleave_ae_mode.html">5.3.5. Using interleave_ae with Gemini330 series cameras</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/interleave_ae_mode.html#parameter-introduction">5.3.5.1. Parameter Introduction</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/interleave_ae_mode.html#run-the-launch">5.3.5.2. Run the launch</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/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-l4"><a class="reference internal" href="../5_advanced_guide/configuration/predefined_presets.html">5.3.6. Predefined presets</a></li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/net_camera.html">5.3.7. Net_camera</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/net_camera.html#femto-mega-gemini-435le-gemini-335le">5.3.7.1. Femto Mega &amp; Gemini 435Le &amp; Gemini 335Le</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/net_camera.html#set-device-ip-utility">5.3.7.2. set_device_ip Utility</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/net_camera.html#force-ip-function">5.3.7.3. Force IP Function</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../6_benchmark/benchmark.html">6. Benchmark</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../6_benchmark/introduction.html">6.1. Introduction</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/introduction.html#common-benchmark-node">6.1.1. common benchmark node</a></li>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/introduction.html#service-benchmark-node">6.1.2. service benchmark node</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../6_benchmark/benchmark_usage.html">6.2. Benchmark Usage</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/benchmark_usage.html#using-common-benchmark-node">6.2.1. Using common benchmark node</a></li>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/benchmark_usage.html#using-service-benchmark-node">6.2.2. Using service benchmark node</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/benchmark_usage.html#ros2-c">6.2.2.1. ROS2 C++</a></li>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/benchmark_usage.html#ros2-python">6.2.2.2. ROS2 Python</a></li>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/benchmark_usage.html#example-yaml-configuration">6.2.2.3. <strong>Example YAML configuration</strong></a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../6_benchmark/benchmark_data.html">6.3. Benchmark Data</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/benchmark_data.html#common-benckmark-data">6.3.1. Common Benckmark Data</a></li>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/benchmark_data.html#service-benchmark-data">6.3.2. Service Benchmark Data</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../6_benchmark/othertools.html">6.4. Other Tools</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/othertools.html#ob-benchmark-tool">6.4.1. Ob_benchmark tool</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/othertools.html#tool-configuration-start-benchmark-params-json">6.4.1.1. Tool Configuration (start_benchmark_params.json)</a></li>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/othertools.html#camera-configuration-launch-files">6.4.1.2. Camera configuration (launch files)</a></li>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/othertools.html#running-the-ob-benchmark-tool">6.4.1.3. Running the ob_benchmark tool</a></li>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/othertools.html#output-data-files">6.4.1.4. Output Data Files</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../7_developer_guide/developer_guide.html">7. Developer Guide</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../7_developer_guide/migration_guide.html">7.1. Migrating from main to Open-Source v2-main</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/migration_guide.html#introduction">7.1.1. Introduction</a></li>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/migration_guide.html#advantages-of-migrating-from-main-to-v2-main">7.1.2. Advantages of Migrating from main to v2-main</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#comprehensive-device-support">7.1.2.1. <strong>Comprehensive Device Support</strong></a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#transparency-and-extensibility">7.1.2.2. <strong>Transparency and Extensibility</strong></a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#advantages-in-maintenance-and-updates">7.1.2.3. Advantages in Maintenance and Updates</a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#community-and-ecosystem-support">7.1.2.4. <strong>Community and Ecosystem Support</strong></a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/migration_guide.html#comparison-between-main-and-v2-main-branches">7.1.3. Comparison Between main and v2-main Branches</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#launch-file-differences">7.1.3.1. <strong>Launch File Differences</strong></a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#parameter-differences">7.1.3.2. <strong>Parameter Differences</strong></a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#topic-differences">7.1.3.3. <strong>Topic Differences</strong></a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#service-differences">7.1.3.4. <strong>Service Differences</strong></a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../7_developer_guide/building_a_Debian_Package.html">7.2. Building a Debian Package</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/building_a_Debian_Package.html#preparing-the-environment">7.2.1. Preparing the Environment</a></li>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/building_a_Debian_Package.html#configuring-ros-dependencies">7.2.2. Configuring ROS Dependencies</a></li>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/building_a_Debian_Package.html#building-the-package">7.2.3. Building the Package</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../8_FAQ/FAQ.html">8. Frequently Asked Questions</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../8_FAQ/FAQ.html#unexpected-crash">8.1. Unexpected Crash</a></li>
<li class="toctree-l3"><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-l3"><a class="reference internal" href="../8_FAQ/FAQ.html#additional-troubleshooting">8.3. Additional Troubleshooting</a></li>
<li class="toctree-l3"><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>
<li class="toctree-l3"><a class="reference internal" href="../8_FAQ/FAQ.html#how-to-launch-a-specific-camera-when-multiple-cameras-are-connected">8.5. How to Launch a Specific Camera When Multiple Cameras Are Connected</a></li>
<li class="toctree-l3"><a class="reference internal" href="../8_FAQ/FAQ.html#why-is-it-necessary-to-add-delays-when-starting-multiple-cameras-or-switching-streams">8.6. Why Is It Necessary to Add Delays When Starting Multiple Cameras or Switching Streams?</a></li>
<li class="toctree-l3"><a class="reference internal" href="../8_FAQ/FAQ.html#femto-bolt-depth-stream-no-data">8.7. femto bolt depth stream no data</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../lidar_devices/index.html">1. Lidar Devices</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../lidar_devices/lidar.html">1.1. Installation</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#prerequisites">1.1.1. Prerequisites</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#install-deb-dependencies">1.1.2. Install deb Dependencies</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#install-udev-rules">1.1.3. Install udev Rules</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#build-the-package">1.1.4. Build the Package</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#launch-the-lidar-node">1.1.5. Launch the LiDAR Node</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../lidar_devices/lidar.html#usage">1.2. Usage</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#running-the-driver">1.2.1. Running the Driver</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#get-device-information-for-connected-lidars">1.2.2. Get Device Information for Connected LiDARs</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#check-which-configurations-the-lidar-supports">1.2.3. Check Which Configurations the LiDAR Supports</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#parameters-and-configuration">1.2.4. Parameters and Configuration</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../lidar_devices/lidar.html#point-cloud-data-details">1.3. Point Cloud Data Details</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#point-cloud-format">1.3.1. Point Cloud Format</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#point-cloud-aggregation-functionality">1.3.2. Point Cloud Aggregation Functionality</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../lidar_devices/lidar.html#features">1.3.2.1. Features:</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../lidar_devices/lidar.html#usage-examples">1.3.2.2. Usage Examples:</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../lidar_devices/lidar.html#imu-data">1.4. IMU Data</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#imu-topics">1.4.1. IMU Topics</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#using-imu-data">1.4.2. Using IMU Data</a></li>
</ul>
</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="../index.html">Camera Devices</a></li>
<li class="breadcrumb-item"><a href="application_guide.html"><span class="section-number">4. </span>Application Guide</a></li>
<li class="breadcrumb-item active"><span class="section-number">4.6. </span>Enabling and Visualizing Point Cloud in ROS 2</li>
<li class="wy-breadcrumbs-aside">
<a href="../../../_sources/source/camera_devices/4_application_guide/point_cloud.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">
<div class="lang-switch" style="margin:0 0 1em 0; font-size:0.9em;"><a class="lang-other" href="#">中文</a> | <a class="lang-current" href="#">English</a></div><script>(function(){var p=window.location.pathname;var isEn=p.indexOf('/en/')!==-1 && p.indexOf('/zh/')===-1;if(p.indexOf('/zh/')!==-1) isEn=false;var other = isEn ? p.replace(/\/en\//, '/zh/') : p.replace(/\/zh\//, '/en/');var current=p;var sw=document.querySelector('.lang-switch'); if(!sw) return;var o=sw.querySelector('.lang-other'); var c=sw.querySelector('.lang-current');if(isEn){ o.textContent='中文'; c.textContent='English'; } else { o.textContent='English'; c.textContent='中文'; }o.setAttribute('href', other); c.setAttribute('href', current);})();</script><section id="enabling-and-visualizing-point-cloud-in-ros-2">
<h1><span class="section-number">4.6. </span>Enabling and Visualizing Point Cloud in ROS 2<a class="headerlink" href="#enabling-and-visualizing-point-cloud-in-ros-2" title="Link to this heading"></a></h1>
<p>This section demonstrates how to enable point cloud data output from the camera node and visualize it using RViz2.</p>
<section id="enabling-depth-point-cloud">
<h2><span class="section-number">4.6.1. </span>Enabling Depth Point Cloud<a class="headerlink" href="#enabling-depth-point-cloud" title="Link to this heading"></a></h2>
<section id="command-to-enable-depth-point-cloud">
<h3><span class="section-number">4.6.1.1. </span>Command to Enable Depth Point Cloud<a class="headerlink" href="#command-to-enable-depth-point-cloud" title="Link to this heading"></a></h3>
<p>To activate the point cloud data stream for depth information, use the following command:</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_330_series.launch.py<span class="w"> </span>enable_point_cloud:<span class="o">=</span><span class="nb">true</span>
</pre></div>
</div>
</section>
<section id="visualizing-depth-point-cloud-in-rviz2">
<h3><span class="section-number">4.6.1.2. </span>Visualizing Depth Point Cloud in RViz2<a class="headerlink" href="#visualizing-depth-point-cloud-in-rviz2" title="Link to this heading"></a></h3>
<p>After running the above command, perform the following steps to visualize the depth point cloud:</p>
<ol class="simple">
<li><p>Open RViz2.</p></li>
<li><p>Add a <code class="docutils literal notranslate"><span class="pre">PointCloud2</span></code> display.</p></li>
<li><p>Select the <code class="docutils literal notranslate"><span class="pre">/camera/depth/points</span></code> topic for visualization.</p></li>
<li><p>Set the fixed frame to <code class="docutils literal notranslate"><span class="pre">camera_link</span></code> to properly align the data.</p></li>
</ol>
<ul class="simple">
<li><p><strong>Example Visualization</strong></p></li>
</ul>
<p>Here is what the depth point cloud might look like in RViz2:</p>
<p><img alt="Depth Point Cloud Visualization" src="../../../_images/image5.jpg" /></p>
</section>
</section>
<section id="enabling-colored-point-cloud">
<h2><span class="section-number">4.6.2. </span>Enabling Colored Point Cloud<a class="headerlink" href="#enabling-colored-point-cloud" title="Link to this heading"></a></h2>
<section id="command-to-enable-colored-point-cloud">
<h3><span class="section-number">4.6.2.1. </span>Command to Enable Colored Point Cloud<a class="headerlink" href="#command-to-enable-colored-point-cloud" title="Link to this heading"></a></h3>
<p>To enable the colored point cloud feature, enter the following command:</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_330_series.launch.py<span class="w"> </span>enable_colored_point_cloud:<span class="o">=</span><span class="nb">true</span>
</pre></div>
</div>
</section>
<section id="visualizing-colored-point-cloud-in-rviz2">
<h3><span class="section-number">4.6.2.2. </span>Visualizing Colored Point Cloud in RViz2<a class="headerlink" href="#visualizing-colored-point-cloud-in-rviz2" title="Link to this heading"></a></h3>
<p>To visualize the colored point cloud data:</p>
<ol class="simple">
<li><p>Launch RViz2 following the command execution.</p></li>
<li><p>Add a <code class="docutils literal notranslate"><span class="pre">PointCloud2</span></code> display panel.</p></li>
<li><p>Choose the <code class="docutils literal notranslate"><span class="pre">/camera/depth_registered/points</span></code> topic from the list.</p></li>
<li><p>Ensure the fixed frame is set to <code class="docutils literal notranslate"><span class="pre">camera_link</span></code>.</p></li>
</ol>
<ul class="simple">
<li><p><strong>Example Visualization</strong></p></li>
</ul>
<p>The result of the colored point cloud in RViz2 should look similar to this:</p>
<p><img alt="Colored Point Cloud Visualization" src="../../../_images/image6.jpg" /></p>
</section>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="compressed_image.html" class="btn btn-neutral float-left" title="4.5. Compressed Image" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="../5_advanced_guide/advanced_guide.html" class="btn btn-neutral float-right" title="5. Advanced Guide" 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 2026-01-04 01:12:32.
</span></p>
</div>
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
@@ -0,0 +1,774 @@
<!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>4.2. All available services for camera control &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=63de077d" />
<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="4.3. Available Topics" href="topics.html" />
<link rel="prev" title="4.1. Launch parameters" href="launch_parameters.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 current"><a class="reference internal" href="../index.html">Camera Devices</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../1_overview/overview.html">1. Overview</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../1_overview/introduction.html">1.1. Introduction</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../1_overview/introduction.html#support-hardware-products">1.1.1. Support Hardware Products</a></li>
<li class="toctree-l4"><a class="reference internal" href="../1_overview/introduction.html#orbbec-camera-datasheet">1.1.2. Orbbec camera datasheet</a></li>
<li class="toctree-l4"><a class="reference internal" href="../1_overview/introduction.html#support-platforms">1.1.3. Support Platforms</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../1_overview/orbbecsdk_overview.html">1.2. Orbbec SDK Overview</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../1_overview/orbbecsdk_overview.html#terms">1.2.1. Terms</a></li>
<li class="toctree-l4"><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-l4"><a class="reference internal" href="../1_overview/orbbecsdk_overview.html#sdk-concept-overview">1.2.3. SDK Concept Overview</a></li>
<li class="toctree-l4"><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-l2"><a class="reference internal" href="../2_installation/installation.html">2. Installation</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../2_installation/build_the_package.html">2.1. Environment configuration</a></li>
<li class="toctree-l3"><a class="reference internal" href="../2_installation/build_the_package.html#linux-binary-package-installation">2.2. Linux Binary Package Installation</a></li>
<li class="toctree-l3"><a class="reference internal" href="../2_installation/build_the_package.html#build-from-source">2.3. Build from Source</a></li>
<li class="toctree-l3"><a class="reference internal" href="../2_installation/registration_script.html">2.4. Registration Script (Required)</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../2_installation/registration_script.html#binary-installation">2.4.1. Binary Installation</a></li>
<li class="toctree-l4"><a class="reference internal" href="../2_installation/registration_script.html#build-from-source">2.4.2. Build from Source</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../3_quickstarts/quickstarts.html">3. Quickstarts</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../3_quickstarts/quickstart.html">3.1. ROS Package QuickStarts</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../3_quickstarts/quickstart.html#introduction">3.1.1. Introduction</a></li>
<li class="toctree-l4"><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-l5"><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-l5"><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-l5"><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-l4"><a class="reference internal" href="../3_quickstarts/quickstart.html#sample-features">3.1.3. Sample Features</a><ul>
<li class="toctree-l5"><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-l5"><a class="reference internal" href="../3_quickstarts/quickstart.html#echo-a-topic">3.1.3.2. Echo a topic</a></li>
<li class="toctree-l5"><a class="reference internal" href="../3_quickstarts/quickstart.html#call-a-service">3.1.3.3. Call a service</a></li>
<li class="toctree-l5"><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-l3"><a class="reference internal" href="../3_quickstarts/orbbecviewer.html">3.2. OrbbecViewer QuickStarts</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../3_quickstarts/orbbecviewer.html#download">3.2.1. Download</a></li>
<li class="toctree-l4"><a class="reference internal" href="../3_quickstarts/orbbecviewer.html#connect-the-device">3.2.2. Connect the device</a></li>
<li class="toctree-l4"><a class="reference internal" href="../3_quickstarts/orbbecviewer.html#camera-control">3.2.3. Camera Control</a></li>
<li class="toctree-l4"><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-l2 current"><a class="reference internal" href="application_guide.html">4. Application Guide</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="launch_parameters.html">4.1. Launch parameters</a><ul>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#core-stream-configuration">4.1.1. Core &amp; Stream Configuration</a></li>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#sensor-controls">4.1.2. Sensor Controls</a><ul>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#color-stream">4.1.2.1. Color Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#depth-stream">4.1.2.2. Depth Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#ir-stream">4.1.2.3. IR Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#laser-ldp">4.1.2.4. Laser / LDP</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#device-sync-advanced-features">4.1.3. Device, Sync &amp; Advanced Features</a><ul>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#multi-camera-synchronization">4.1.3.1. Multi-Camera Synchronization</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#network-cameras">4.1.3.2. Network Cameras</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#device-specific">4.1.3.3. Device-Specific</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#disparity">4.1.3.4. Disparity</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#interleave-ae-mode">4.1.3.5. Interleave AE Mode</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#intra-camera-synchronization">4.1.3.6. Intra-Camera Synchronization</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#basic-general-parameters">4.1.4. Basic &amp; General Parameters</a><ul>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#firmware-backend">4.1.4.1. Firmware &amp; Backend</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#tf-extrinsics-calibration">4.1.4.2. TF, Extrinsics &amp; Calibration</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#time-synchronization">4.1.4.3. Time Synchronization</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#logging-diagnostics">4.1.4.4. Logging &amp; Diagnostics</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#miscellaneous">4.1.4.5. Miscellaneous</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#imu">4.1.5. IMU</a></li>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#depth-filters">4.1.6. Depth Filters</a></li>
</ul>
</li>
<li class="toctree-l3 current"><a class="current reference internal" href="#">4.2. All available services for camera control</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#stream-control">4.2.1. Stream Control</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#color-stream">4.2.1.1. Color Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="#depth-stream">4.2.1.2. Depth Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="#ir-stream">4.2.1.3. IR Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="#all-streams">4.2.1.4. All Streams</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#sensor-emitter-control">4.2.2. Sensor &amp; Emitter Control</a></li>
<li class="toctree-l4"><a class="reference internal" href="#device-information-management">4.2.3. Device Information &amp; Management</a></li>
<li class="toctree-l4"><a class="reference internal" href="#synchronization-triggering">4.2.4. Synchronization &amp; Triggering</a></li>
<li class="toctree-l4"><a class="reference internal" href="#depth-filter-configuration">4.2.5. Depth Filter Configuration</a></li>
<li class="toctree-l4"><a class="reference internal" href="#data-capture-calibration-management">4.2.6. Data Capture &amp; Calibration Management</a></li>
<li class="toctree-l4"><a class="reference internal" href="#point-cloud-decimation">4.2.7. Point cloud decimation</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="topics.html">4.3. Available Topics</a><ul>
<li class="toctree-l4"><a class="reference internal" href="topics.html#image-streams">4.3.1. Image Streams</a></li>
<li class="toctree-l4"><a class="reference internal" href="topics.html#point-cloud-topics">4.3.2. Point Cloud Topics</a></li>
<li class="toctree-l4"><a class="reference internal" href="topics.html#imu-topics">4.3.3. IMU Topics</a></li>
<li class="toctree-l4"><a class="reference internal" href="topics.html#device-status-diagnostics">4.3.4. Device Status &amp; Diagnostics</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="coordinate_and_tf.html">4.4. Coordinate Systems and TF Transforms</a><ul>
<li class="toctree-l4"><a class="reference internal" href="coordinate_and_tf.html#camera-sensor-structure">4.4.1. Camera sensor structure</a></li>
<li class="toctree-l4"><a class="reference internal" href="coordinate_and_tf.html#tf-from-coordinate-a-to-coordinate-b">4.4.2. TF from coordinate A to coordinate B:</a></li>
<li class="toctree-l4"><a class="reference internal" href="coordinate_and_tf.html#ros2-robot-coordinate-system-vs-camera-optical-coordinate-system">4.4.3. ROS2 Robot Coordinate System vs Camera Optical Coordinate System</a></li>
<li class="toctree-l4"><a class="reference internal" href="coordinate_and_tf.html#using-ros2-tf-tools">4.4.4. Using ROS2 TF Tools</a><ul>
<li class="toctree-l5"><a class="reference internal" href="coordinate_and_tf.html#view-tf-tree-structure">4.4.4.1. View TF Tree Structure</a></li>
<li class="toctree-l5"><a class="reference internal" href="coordinate_and_tf.html#visualize-tf-tree-in-rviz2">4.4.4.2. Visualize TF Tree in rviz2</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="coordinate_and_tf.html#camera-tf-calculation-and-publishing-mechanism">4.4.5. Camera TF Calculation and Publishing Mechanism</a><ul>
<li class="toctree-l5"><a class="reference internal" href="coordinate_and_tf.html#core-function-obcameranode-calcandpublishstatictransform">4.4.5.1. Core Function: OBCameraNode::calcAndPublishStaticTransform()</a></li>
<li class="toctree-l5"><a class="reference internal" href="coordinate_and_tf.html#function-breakdown">4.4.5.2. Function Breakdown</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="compressed_image.html">4.5. Compressed Image</a></li>
<li class="toctree-l3"><a class="reference internal" href="point_cloud.html">4.6. Enabling and Visualizing Point Cloud in ROS 2</a><ul>
<li class="toctree-l4"><a class="reference internal" href="point_cloud.html#enabling-depth-point-cloud">4.6.1. Enabling Depth Point Cloud</a><ul>
<li class="toctree-l5"><a class="reference internal" href="point_cloud.html#command-to-enable-depth-point-cloud">4.6.1.1. Command to Enable Depth Point Cloud</a></li>
<li class="toctree-l5"><a class="reference internal" href="point_cloud.html#visualizing-depth-point-cloud-in-rviz2">4.6.1.2. Visualizing Depth Point Cloud in RViz2</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="point_cloud.html#enabling-colored-point-cloud">4.6.2. Enabling Colored Point Cloud</a><ul>
<li class="toctree-l5"><a class="reference internal" href="point_cloud.html#command-to-enable-colored-point-cloud">4.6.2.1. Command to Enable Colored Point Cloud</a></li>
<li class="toctree-l5"><a class="reference internal" href="point_cloud.html#visualizing-colored-point-cloud-in-rviz2">4.6.2.2. Visualizing Colored Point Cloud in RViz2</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../5_advanced_guide/advanced_guide.html">5. Advanced Guide</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../5_advanced_guide/advanced_guide.html#performance-optimization">5.1. Performance &amp; Optimization</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html">5.1.1. Reducing CPU Usage with Orbbec ROS Package</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#recommended-settings-for-lower-cpu-usage">5.1.1.1. Recommended Settings for Lower CPU Usage</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#launch-files-used-for-testing">5.1.1.2. Launch Files Used for Testing</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#test-environment">5.1.1.3. Test environment</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#test-setup">5.1.1.4. Test Setup</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#test-results">5.1.1.5. Test Results</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#further-optimizationa">5.1.1.6. Further Optimizationa</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/performance/efficient_intra_process_communication.html">5.1.2. Efficient intra-process communication:</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/efficient_intra_process_communication.html#introduction">5.1.2.1. Introduction</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/efficient_intra_process_communication.html#example">5.1.2.2. Example</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/performance/fastdds_tuning.html">5.1.3. Fast DDS Optimization for Orbbec Camera with ROS2</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/fastdds_tuning.html#adjusting-system-parameters">5.1.3.1. Adjusting System Parameters</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/fastdds_tuning.html#fast-dds-configuration">5.1.3.2. Fast DDS Configuration</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../5_advanced_guide/advanced_guide.html#multi-camera">5.2. Multi-Camera</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera.html">5.2.1. Multi-Camera</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/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-l5"><a class="reference internal" href="../5_advanced_guide/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-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced.html">5.2.2. Multi_camera synced Instructions</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced.html#setup-instructions">5.2.2.1. Setup instructions</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/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-l5"><a class="reference internal" href="../5_advanced_guide/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-l5"><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.2.2.4. Run the following command to start the multi-camera synced</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced_verification_tool.html">5.2.3. Multi-Camera Synchronization Verification Node</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced_verification_tool.html#usage-guide">5.2.3.1. Usage Guide</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced_verification_tool.html#system-configuration-requirements">5.2.3.2. System Configuration Requirements</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html">5.2.4. GMSL_camera</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html#single-gmsl-camera">5.2.4.1. Single GMSL camera</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html#multi-gmsl-camera">5.2.4.2. Multi GMSL camera</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html#multi-gmsl-camera-synced">5.2.4.3. Multi GMSL camera synced</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html#usage-limitations-of-gmsl-cameras">5.2.4.4. Usage Limitations of GMSL Cameras</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../5_advanced_guide/advanced_guide.html#configuration-modes">5.3. Configuration &amp; Modes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/align_depth_color.html">5.3.1. Aligning Depth to Color in ROS 2</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/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-l5"><a class="reference internal" href="../5_advanced_guide/configuration/align_depth_color.html#selecting-topics-in-rviz2">5.3.1.2. Selecting Topics in RViz2</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/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-l4"><a class="reference internal" href="../5_advanced_guide/configuration/configuration_of_depth_NFOV_and_WFOV_modes.html">5.3.2. Configuration of depth NFOV and WFOV modes</a></li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/depth_work_mode_switch.html">5.3.3. Depth work mode switch</a></li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/disparity_search_offset.html">5.3.4. Disparity_search_offset</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/disparity_search_offset.html#function-introduction">5.3.4.1. Function Introduction</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/disparity_search_offset.html#parameter-introduction">5.3.4.2. Parameter Introduction</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/disparity_search_offset.html#run-the-launch">5.3.4.3. Run the launch</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/interleave_ae_mode.html">5.3.5. Using interleave_ae with Gemini330 series cameras</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/interleave_ae_mode.html#parameter-introduction">5.3.5.1. Parameter Introduction</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/interleave_ae_mode.html#run-the-launch">5.3.5.2. Run the launch</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/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-l4"><a class="reference internal" href="../5_advanced_guide/configuration/predefined_presets.html">5.3.6. Predefined presets</a></li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/net_camera.html">5.3.7. Net_camera</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/net_camera.html#femto-mega-gemini-435le-gemini-335le">5.3.7.1. Femto Mega &amp; Gemini 435Le &amp; Gemini 335Le</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/net_camera.html#set-device-ip-utility">5.3.7.2. set_device_ip Utility</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/net_camera.html#force-ip-function">5.3.7.3. Force IP Function</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../6_benchmark/benchmark.html">6. Benchmark</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../6_benchmark/introduction.html">6.1. Introduction</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/introduction.html#common-benchmark-node">6.1.1. common benchmark node</a></li>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/introduction.html#service-benchmark-node">6.1.2. service benchmark node</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../6_benchmark/benchmark_usage.html">6.2. Benchmark Usage</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/benchmark_usage.html#using-common-benchmark-node">6.2.1. Using common benchmark node</a></li>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/benchmark_usage.html#using-service-benchmark-node">6.2.2. Using service benchmark node</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/benchmark_usage.html#ros2-c">6.2.2.1. ROS2 C++</a></li>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/benchmark_usage.html#ros2-python">6.2.2.2. ROS2 Python</a></li>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/benchmark_usage.html#example-yaml-configuration">6.2.2.3. <strong>Example YAML configuration</strong></a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../6_benchmark/benchmark_data.html">6.3. Benchmark Data</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/benchmark_data.html#common-benckmark-data">6.3.1. Common Benckmark Data</a></li>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/benchmark_data.html#service-benchmark-data">6.3.2. Service Benchmark Data</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../6_benchmark/othertools.html">6.4. Other Tools</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/othertools.html#ob-benchmark-tool">6.4.1. Ob_benchmark tool</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/othertools.html#tool-configuration-start-benchmark-params-json">6.4.1.1. Tool Configuration (start_benchmark_params.json)</a></li>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/othertools.html#camera-configuration-launch-files">6.4.1.2. Camera configuration (launch files)</a></li>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/othertools.html#running-the-ob-benchmark-tool">6.4.1.3. Running the ob_benchmark tool</a></li>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/othertools.html#output-data-files">6.4.1.4. Output Data Files</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../7_developer_guide/developer_guide.html">7. Developer Guide</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../7_developer_guide/migration_guide.html">7.1. Migrating from main to Open-Source v2-main</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/migration_guide.html#introduction">7.1.1. Introduction</a></li>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/migration_guide.html#advantages-of-migrating-from-main-to-v2-main">7.1.2. Advantages of Migrating from main to v2-main</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#comprehensive-device-support">7.1.2.1. <strong>Comprehensive Device Support</strong></a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#transparency-and-extensibility">7.1.2.2. <strong>Transparency and Extensibility</strong></a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#advantages-in-maintenance-and-updates">7.1.2.3. Advantages in Maintenance and Updates</a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#community-and-ecosystem-support">7.1.2.4. <strong>Community and Ecosystem Support</strong></a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/migration_guide.html#comparison-between-main-and-v2-main-branches">7.1.3. Comparison Between main and v2-main Branches</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#launch-file-differences">7.1.3.1. <strong>Launch File Differences</strong></a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#parameter-differences">7.1.3.2. <strong>Parameter Differences</strong></a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#topic-differences">7.1.3.3. <strong>Topic Differences</strong></a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#service-differences">7.1.3.4. <strong>Service Differences</strong></a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../7_developer_guide/building_a_Debian_Package.html">7.2. Building a Debian Package</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/building_a_Debian_Package.html#preparing-the-environment">7.2.1. Preparing the Environment</a></li>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/building_a_Debian_Package.html#configuring-ros-dependencies">7.2.2. Configuring ROS Dependencies</a></li>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/building_a_Debian_Package.html#building-the-package">7.2.3. Building the Package</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../8_FAQ/FAQ.html">8. Frequently Asked Questions</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../8_FAQ/FAQ.html#unexpected-crash">8.1. Unexpected Crash</a></li>
<li class="toctree-l3"><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-l3"><a class="reference internal" href="../8_FAQ/FAQ.html#additional-troubleshooting">8.3. Additional Troubleshooting</a></li>
<li class="toctree-l3"><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>
<li class="toctree-l3"><a class="reference internal" href="../8_FAQ/FAQ.html#how-to-launch-a-specific-camera-when-multiple-cameras-are-connected">8.5. How to Launch a Specific Camera When Multiple Cameras Are Connected</a></li>
<li class="toctree-l3"><a class="reference internal" href="../8_FAQ/FAQ.html#why-is-it-necessary-to-add-delays-when-starting-multiple-cameras-or-switching-streams">8.6. Why Is It Necessary to Add Delays When Starting Multiple Cameras or Switching Streams?</a></li>
<li class="toctree-l3"><a class="reference internal" href="../8_FAQ/FAQ.html#femto-bolt-depth-stream-no-data">8.7. femto bolt depth stream no data</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../lidar_devices/index.html">1. Lidar Devices</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../lidar_devices/lidar.html">1.1. Installation</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#prerequisites">1.1.1. Prerequisites</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#install-deb-dependencies">1.1.2. Install deb Dependencies</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#install-udev-rules">1.1.3. Install udev Rules</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#build-the-package">1.1.4. Build the Package</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#launch-the-lidar-node">1.1.5. Launch the LiDAR Node</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../lidar_devices/lidar.html#usage">1.2. Usage</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#running-the-driver">1.2.1. Running the Driver</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#get-device-information-for-connected-lidars">1.2.2. Get Device Information for Connected LiDARs</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#check-which-configurations-the-lidar-supports">1.2.3. Check Which Configurations the LiDAR Supports</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#parameters-and-configuration">1.2.4. Parameters and Configuration</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../lidar_devices/lidar.html#point-cloud-data-details">1.3. Point Cloud Data Details</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#point-cloud-format">1.3.1. Point Cloud Format</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#point-cloud-aggregation-functionality">1.3.2. Point Cloud Aggregation Functionality</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../lidar_devices/lidar.html#features">1.3.2.1. Features:</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../lidar_devices/lidar.html#usage-examples">1.3.2.2. Usage Examples:</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../lidar_devices/lidar.html#imu-data">1.4. IMU Data</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#imu-topics">1.4.1. IMU Topics</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#using-imu-data">1.4.2. Using IMU Data</a></li>
</ul>
</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="../index.html">Camera Devices</a></li>
<li class="breadcrumb-item"><a href="application_guide.html"><span class="section-number">4. </span>Application Guide</a></li>
<li class="breadcrumb-item active"><span class="section-number">4.2. </span>All available services for camera control</li>
<li class="wy-breadcrumbs-aside">
<a href="../../../_sources/source/camera_devices/4_application_guide/services.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">
<div class="lang-switch" style="margin:0 0 1em 0; font-size:0.9em;"><a class="lang-other" href="#">中文</a> | <a class="lang-current" href="#">English</a></div><script>(function(){var p=window.location.pathname;var isEn=p.indexOf('/en/')!==-1 && p.indexOf('/zh/')===-1;if(p.indexOf('/zh/')!==-1) isEn=false;var other = isEn ? p.replace(/\/en\//, '/zh/') : p.replace(/\/zh\//, '/en/');var current=p;var sw=document.querySelector('.lang-switch'); if(!sw) return;var o=sw.querySelector('.lang-other'); var c=sw.querySelector('.lang-current');if(isEn){ o.textContent='中文'; c.textContent='English'; } else { o.textContent='English'; c.textContent='中文'; }o.setAttribute('href', other); c.setAttribute('href', current);})();</script><section id="all-available-services-for-camera-control">
<h1><span class="section-number">4.2. </span>All available services for camera control<a class="headerlink" href="#all-available-services-for-camera-control" title="Link to this heading"></a></h1>
<blockquote>
<div><p><strong>Note:</strong> Services related to a specific stream (e.g., <code class="docutils literal notranslate"><span class="pre">/camera/set_color_*</span></code>) are only available if that stream is enabled in the launch file (e.g., <code class="docutils literal notranslate"><span class="pre">enable_color:=true</span></code>).</p>
</div></blockquote>
<section id="stream-control">
<h2><span class="section-number">4.2.1. </span>Stream Control<a class="headerlink" href="#stream-control" title="Link to this heading"></a></h2>
<section id="color-stream">
<h3><span class="section-number">4.2.1.1. </span>Color Stream<a class="headerlink" href="#color-stream" title="Link to this heading"></a></h3>
<ul>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/toggle_color</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/toggle_color<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">&#39;{data: true}&#39;</span>
</pre></div>
</div>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/get_color_exposure</span></code> &amp; <code class="docutils literal notranslate"><span class="pre">/camera/get_color_gain</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_color_exposure<span class="w"> </span>orbbec_camera_msgs/srv/GetInt32<span class="w"> </span><span class="s1">&#39;{}&#39;</span>
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_color_gain<span class="w"> </span>orbbec_camera_msgs/srv/GetInt32<span class="w"> </span><span class="s1">&#39;{}&#39;</span>
</pre></div>
</div>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_color_auto_exposure</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_color_auto_exposure<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">&#39;{data: true}&#39;</span>
</pre></div>
</div>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_color_exposure</span></code> &amp; <code class="docutils literal notranslate"><span class="pre">/camera/set_color_gain</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_color_exposure<span class="w"> </span>orbbec_camera_msgs/srv/SetInt32<span class="w"> </span><span class="s1">&#39;{data: 1}&#39;</span>
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_color_gain<span class="w"> </span>orbbec_camera_msgs/srv/SetInt32<span class="w"> </span><span class="s1">&#39;{data: 64}&#39;</span>
</pre></div>
</div>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_color_mirror</span></code>, <code class="docutils literal notranslate"><span class="pre">/camera/set_color_flip</span></code>, <code class="docutils literal notranslate"><span class="pre">/camera/set_color_rotation</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_color_mirror<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">&#39;{data: true}&#39;</span>
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_color_flip<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">&#39;{data: true}&#39;</span>
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_color_rotation<span class="w"> </span>orbbec_camera_msgs/srv/SetInt32<span class="w"> </span><span class="s1">&#39;{data: 180}&#39;</span>
</pre></div>
</div>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_color_ae_roi</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># data_param: [Left, Right, Top, Bottom]</span>
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_color_ae_roi<span class="w"> </span>orbbec_camera_msgs/srv/SetArrays<span class="w"> </span><span class="s1">&#39;{data_param: [0,1279,0,719]}&#39;</span>
</pre></div>
</div>
</li>
</ul>
</section>
<section id="depth-stream">
<h3><span class="section-number">4.2.1.2. </span>Depth Stream<a class="headerlink" href="#depth-stream" title="Link to this heading"></a></h3>
<ul>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/toggle_depth</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/toggle_depth<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">&#39;{data: true}&#39;</span>
</pre></div>
</div>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/get_depth_exposure</span></code> &amp; <code class="docutils literal notranslate"><span class="pre">/camera/get_depth_gain</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_depth_exposure<span class="w"> </span>orbbec_camera_msgs/srv/GetInt32<span class="w"> </span><span class="s1">&#39;{}&#39;</span>
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_depth_gain<span class="w"> </span>orbbec_camera_msgs/srv/GetInt32<span class="w"> </span><span class="s1">&#39;{}&#39;</span>
</pre></div>
</div>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_depth_auto_exposure</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_depth_auto_exposure<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">&#39;{data: true}&#39;</span>
</pre></div>
</div>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_depth_exposure</span></code> &amp; <code class="docutils literal notranslate"><span class="pre">/camera/set_depth_gain</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_depth_exposure<span class="w"> </span>orbbec_camera_msgs/srv/SetInt32<span class="w"> </span><span class="s1">&#39;{data: 3000}&#39;</span>
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_depth_gain<span class="w"> </span>orbbec_camera_msgs/srv/SetInt32<span class="w"> </span><span class="s1">&#39;{data: 64}&#39;</span>
</pre></div>
</div>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_depth_mirror</span></code>, <code class="docutils literal notranslate"><span class="pre">/camera/set_depth_flip</span></code>, <code class="docutils literal notranslate"><span class="pre">/camera/set_depth_rotation</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_depth_mirror<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">&#39;{data: true}&#39;</span>
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_depth_flip<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">&#39;{data: true}&#39;</span>
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_depth_rotation<span class="w"> </span>orbbec_camera_msgs/srv/SetInt32<span class="w"> </span><span class="s1">&#39;{data: 180}&#39;</span>
</pre></div>
</div>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_depth_ae_roi</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># data_param: [Left, Right, Top, Bottom]</span>
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_depth_ae_roi<span class="w"> </span>orbbec_camera_msgs/srv/SetArrays<span class="w"> </span><span class="s1">&#39;{data_param: [0,847,0,479]}&#39;</span>
</pre></div>
</div>
</li>
</ul>
</section>
<section id="ir-stream">
<h3><span class="section-number">4.2.1.3. </span>IR Stream<a class="headerlink" href="#ir-stream" title="Link to this heading"></a></h3>
<ul>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/toggle_ir</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/toggle_ir<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">&#39;{data: true}&#39;</span>
</pre></div>
</div>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/get_ir_exposure</span></code> &amp; <code class="docutils literal notranslate"><span class="pre">/camera/get_ir_gain</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_ir_exposure<span class="w"> </span>orbbec_camera_msgs/srv/GetInt32<span class="w"> </span><span class="s1">&#39;{}&#39;</span>
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_ir_gain<span class="w"> </span>orbbec_camera_msgs/srv/GetInt32<span class="w"> </span><span class="s1">&#39;{}&#39;</span>
</pre></div>
</div>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_ir_long_exposure</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_ir_long_exposure<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">&#39;{data: true}&#39;</span>
</pre></div>
</div>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_ir_auto_exposure</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_ir_auto_exposure<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">&#39;{data: true}&#39;</span>
</pre></div>
</div>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_ir_exposure</span></code> &amp; <code class="docutils literal notranslate"><span class="pre">/camera/set_ir_gain</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_ir_exposure<span class="w"> </span>orbbec_camera_msgs/srv/SetInt32<span class="w"> </span><span class="s1">&#39;{data: 3000}&#39;</span>
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_ir_gain<span class="w"> </span>orbbec_camera_msgs/srv/SetInt32<span class="w"> </span><span class="s1">&#39;{data: 64}&#39;</span>
</pre></div>
</div>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_ir_mirror</span></code>, <code class="docutils literal notranslate"><span class="pre">/camera/set_ir_flip</span></code>, <code class="docutils literal notranslate"><span class="pre">/camera/set_ir_rotation</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_ir_mirror<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">&#39;{data: true}&#39;</span>
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_ir_flip<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">&#39;{data: true}&#39;</span>
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_ir_rotation<span class="w"> </span>orbbec_camera_msgs/srv/SetInt32<span class="w"> </span><span class="s1">&#39;{data: 180}&#39;</span>
</pre></div>
</div>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/switch_ir</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/switch_ir<span class="w"> </span>orbbec_camera_msgs/srv/SetString<span class="w"> </span><span class="s1">&#39;{data: left}&#39;</span>
</pre></div>
</div>
</li>
</ul>
</section>
<section id="all-streams">
<h3><span class="section-number">4.2.1.4. </span>All Streams<a class="headerlink" href="#all-streams" title="Link to this heading"></a></h3>
<ul>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/get_streams_enable</span></code> &amp; <code class="docutils literal notranslate"><span class="pre">/camera/set_streams_enable</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_streams_enable<span class="w"> </span>orbbec_camera_msgs/srv/GetBool<span class="w"> </span><span class="s1">&#39;{}&#39;</span>
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_streams_enable<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">&#39;{data: false}&#39;</span>
</pre></div>
</div>
</li>
</ul>
</section>
</section>
<section id="sensor-emitter-control">
<h2><span class="section-number">4.2.2. </span>Sensor &amp; Emitter Control<a class="headerlink" href="#sensor-emitter-control" title="Link to this heading"></a></h2>
<ul>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_auto_white_balance</span></code> &amp; <code class="docutils literal notranslate"><span class="pre">/camera/get_auto_white_balance</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_auto_white_balance<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">&#39;{data: true}&#39;</span>
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_auto_white_balance<span class="w"> </span>orbbec_camera_msgs/srv/GetInt32<span class="w"> </span><span class="s1">&#39;{}&#39;</span>
</pre></div>
</div>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_white_balance</span></code> &amp; <code class="docutils literal notranslate"><span class="pre">/camera/get_white_balance</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_white_balance<span class="w"> </span>orbbec_camera_msgs/srv/SetInt32<span class="w"> </span><span class="s1">&#39;{data: 2800}&#39;</span>
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_white_balance<span class="w"> </span>orbbec_camera_msgs/srv/GetInt32<span class="w"> </span><span class="s1">&#39;{}&#39;</span>
</pre></div>
</div>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_laser_enable</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_laser_enable<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">&#39;{data: true}&#39;</span>
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">/camera/get_laser_status</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_laser_status<span class="w"> </span>orbbec_camera_msgs/srv/GetBool<span class="w"> </span><span class="s1">&#39;{}&#39;</span>
</pre></div>
</div>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_ldp_enable</span></code> &amp; <code class="docutils literal notranslate"><span class="pre">/camera/get_ldp_status</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_ldp_enable<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">&#39;{data: true}&#39;</span>
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_ldp_status<span class="w"> </span>orbbec_camera_msgs/srv/GetBool<span class="w"> </span><span class="s1">&#39;{}&#39;</span>
</pre></div>
</div>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_ptp_config</span></code> &amp; <code class="docutils literal notranslate"><span class="pre">/camera/get_ptp_config</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_ptp_config<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">&#39;{data: true}&#39;</span>
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_ptp_config<span class="w"> </span>orbbec_camera_msgs/srv/GetBool<span class="w"> </span><span class="s1">&#39;{}&#39;</span>
</pre></div>
</div>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/get_lrm_measure_distance</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_lrm_measure_distance<span class="w"> </span>orbbec_camera_msgs/srv/GetInt32<span class="w"> </span><span class="s1">&#39;{}&#39;</span>
</pre></div>
</div>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_fan_work_mode</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_fan_work_mode<span class="w"> </span>orbbec_camera_msgs/srv/SetInt32<span class="w"> </span><span class="s1">&#39;{data: 0}&#39;</span>
</pre></div>
</div>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_floor_enable</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_floor_enable<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">&#39;{data: true}&#39;</span>
</pre></div>
</div>
</li>
</ul>
</section>
<section id="device-information-management">
<h2><span class="section-number">4.2.3. </span>Device Information &amp; Management<a class="headerlink" href="#device-information-management" title="Link to this heading"></a></h2>
<ul>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/get_device_info</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_device_info<span class="w"> </span>orbbec_camera_msgs/srv/GetDeviceInfo
</pre></div>
</div>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/get_sdk_version</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_sdk_version<span class="w"> </span>orbbec_camera_msgs/srv/GetString
</pre></div>
</div>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/reboot_device</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/reboot_device<span class="w"> </span>std_srvs/srv/Empty<span class="w"> </span><span class="s1">&#39;{}&#39;</span>
</pre></div>
</div>
</li>
</ul>
</section>
<section id="synchronization-triggering">
<h2><span class="section-number">4.2.4. </span>Synchronization &amp; Triggering<a class="headerlink" href="#synchronization-triggering" title="Link to this heading"></a></h2>
<ul>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/send_software_trigger</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/send_software_trigger<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">&#39;{data: true}&#39;</span>
</pre></div>
</div>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_sync_hosttime</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_sync_hosttime<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">&#39;{data: true}&#39;</span>
</pre></div>
</div>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_reset_timestamp</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># Only available when time_domain param is set to device</span>
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_reset_timestamp<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">&#39;{data: true}&#39;</span>
</pre></div>
</div>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_sync_interleaverlaser</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># Only available if interleave_ae_mode is &#39;laser&#39; and interleave_frame_enable is true</span>
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_sync_interleaverlaser<span class="w"> </span>orbbec_camera_msgs/srv/SetInt32<span class="w"> </span><span class="s1">&#39;{data: 0}&#39;</span>
</pre></div>
</div>
</li>
</ul>
</section>
<section id="depth-filter-configuration">
<h2><span class="section-number">4.2.5. </span>Depth Filter Configuration<a class="headerlink" href="#depth-filter-configuration" title="Link to this heading"></a></h2>
<ul>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_filter</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># Set DecimationFilter</span>
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_filter<span class="w"> </span>orbbec_camera_msgs/srv/SetFilter<span class="w"> </span><span class="s1">&#39;{filter_name: DecimationFilter, filter_enable: false, filter_param: [5]}&#39;</span>
<span class="c1"># Set SpatialAdvancedFilter</span>
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_filter<span class="w"> </span>orbbec_camera_msgs/srv/SetFilter<span class="w"> </span><span class="s1">&#39;{filter_name: SpatialAdvancedFilter, filter_enable: true, filter_param: [0.5,160,1,8]}&#39;</span>
<span class="c1"># Set SequenceIdFilter</span>
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_filter<span class="w"> </span>orbbec_camera_msgs/srv/SetFilter<span class="w"> </span><span class="s1">&#39;{filter_name: SequenceIdFilter, filter_enable: true, filter_param: [1]}&#39;</span>
<span class="c1"># Set ThresholdFilter</span>
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_filter<span class="w"> </span>orbbec_camera_msgs/srv/SetFilter<span class="w"> </span><span class="s1">&#39;{filter_name: ThresholdFilter, filter_enable: true, filter_param: [0,15999]}&#39;</span>
<span class="c1"># Set NoiseRemovalFilter</span>
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_filter<span class="w"> </span>orbbec_camera_msgs/srv/SetFilter<span class="w"> </span><span class="s1">&#39;{filter_name: NoiseRemovalFilter, filter_enable: true, filter_param: [256,80]}&#39;</span>
<span class="c1"># Set HardwareNoiseRemoval</span>
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_filter<span class="w"> </span>orbbec_camera_msgs/srv/SetFilter<span class="w"> </span><span class="s1">&#39;{filter_name: HardwareNoiseRemoval, filter_enable: true, filter_param: []}&#39;</span>
<span class="c1"># Set SpatialFastFilter</span>
<span class="c1"># filter_param: [radius]</span>
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_filter<span class="w"> </span>orbbec_camera_msgs/srv/SetFilter<span class="w"> </span><span class="s1">&#39;{filter_name: SpatialFastFilter, filter_enable: true, filter_param: [4]}&#39;</span>
<span class="c1"># Set SpatialModerateFilter</span>
<span class="c1"># filter_param: [disp_diff, magnitude, radius]</span>
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_filter<span class="w"> </span>orbbec_camera_msgs/srv/SetFilter<span class="w"> </span><span class="s1">&#39;{filter_name: SpatialModerateFilter, filter_enable: true, filter_param: [160,1,3]}&#39;</span>
</pre></div>
</div>
</li>
</ul>
</section>
<section id="data-capture-calibration-management">
<h2><span class="section-number">4.2.6. </span>Data Capture &amp; Calibration Management<a class="headerlink" href="#data-capture-calibration-management" title="Link to this heading"></a></h2>
<ul>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/save_images</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/save_images<span class="w"> </span>std_srvs/srv/Empty<span class="w"> </span><span class="s1">&#39;{}&#39;</span>
</pre></div>
</div>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/save_point_cloud</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/save_point_cloud<span class="w"> </span>std_srvs/srv/Empty<span class="w"> </span><span class="s1">&#39;{}&#39;</span>
</pre></div>
</div>
</li>
</ul>
<blockquote>
<div><p><strong>Note</strong>: The following services are currently supported only on the 435Le module. Each service can store only one set of data or string at a time.</p>
</div></blockquote>
<ul>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/write_customer_data</span></code> &amp; <code class="docutils literal notranslate"><span class="pre">/camera/read_customer_data</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/write_customer_data<span class="w"> </span>orbbec_camera_msgs/srv/SetString<span class="w"> </span><span class="s1">&#39;{data: &quot;string&quot;}&#39;</span>
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/read_customer_data<span class="w"> </span>orbbec_camera_msgs/srv/GetString<span class="w"> </span><span class="s1">&#39;{}&#39;</span>
</pre></div>
</div>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_user_calib_params</span></code> &amp; <code class="docutils literal notranslate"><span class="pre">/camera/get_user_calib_params</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_user_calib_params<span class="w"> </span>orbbec_camera_msgs/srv/SetUserCalibParams<span class="w"> </span><span class="se">\</span>
<span class="s1">&#39;{k: [614.9613647460938, 0.0, 634.91552734375,</span>
<span class="s1"> 0.0, 614.65771484375, 391.407470703125,</span>
<span class="s1"> 0.0, 0.0, 1.0],</span>
<span class="s1"> d: [-0.03131488710641861,</span>
<span class="s1"> 0.032955970615148544,</span>
<span class="s1"> 9.096559369936585e-05,</span>
<span class="s1"> -0.0003368517500348389,</span>
<span class="s1"> -0.01115430984646082,</span>
<span class="s1"> 0.0, 0.0, 0.0],</span>
<span class="s1"> rotation: [0.9999880790710449, 0.0003024190664291382, -0.004874417092651129,</span>
<span class="s1"> -0.0002965621242765337, 0.9999992251396179, 0.001202247804030776,</span>
<span class="s1"> 0.004874777048826218, -0.0012007878394797444, 0.9999874234199524],</span>
<span class="s1"> translation: [-0.023897956848144532,</span>
<span class="s1"> -9.439220279455185e-05,</span>
<span class="s1"> -6.804073229432106e-06]}&#39;</span>
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_user_calib_params<span class="w"> </span>orbbec_camera_msgs/srv/GetUserCalibParams<span class="w"> </span><span class="s1">&#39;{}&#39;</span>
</pre></div>
</div>
</li>
</ul>
</section>
<section id="point-cloud-decimation">
<h2><span class="section-number">4.2.7. </span>Point cloud decimation<a class="headerlink" href="#point-cloud-decimation" title="Link to this heading"></a></h2>
<ul>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_point_cloud_decimation</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_point_cloud_decimation<span class="w"> </span>orbbec_camera_msgs/srv/SetInt32<span class="w"> </span><span class="s1">&#39;{data: 8}&#39;</span>
</pre></div>
</div>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/get_point_cloud_decimation</span></code></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_point_cloud_decimation<span class="w"> </span>orbbec_camera_msgs/srv/GetInt32<span class="w"> </span><span class="s1">&#39;{}&#39;</span>
</pre></div>
</div>
</li>
</ul>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="launch_parameters.html" class="btn btn-neutral float-left" title="4.1. Launch parameters" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="topics.html" class="btn btn-neutral float-right" title="4.3. Available Topics" 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 2026-01-04 01:12:32.
</span></p>
</div>
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
@@ -0,0 +1,553 @@
<!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>4.3. Available Topics &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=63de077d" />
<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="4.4. Coordinate Systems and TF Transforms" href="coordinate_and_tf.html" />
<link rel="prev" title="4.2. All available services for camera control" href="services.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 current"><a class="reference internal" href="../index.html">Camera Devices</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../1_overview/overview.html">1. Overview</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../1_overview/introduction.html">1.1. Introduction</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../1_overview/introduction.html#support-hardware-products">1.1.1. Support Hardware Products</a></li>
<li class="toctree-l4"><a class="reference internal" href="../1_overview/introduction.html#orbbec-camera-datasheet">1.1.2. Orbbec camera datasheet</a></li>
<li class="toctree-l4"><a class="reference internal" href="../1_overview/introduction.html#support-platforms">1.1.3. Support Platforms</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../1_overview/orbbecsdk_overview.html">1.2. Orbbec SDK Overview</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../1_overview/orbbecsdk_overview.html#terms">1.2.1. Terms</a></li>
<li class="toctree-l4"><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-l4"><a class="reference internal" href="../1_overview/orbbecsdk_overview.html#sdk-concept-overview">1.2.3. SDK Concept Overview</a></li>
<li class="toctree-l4"><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-l2"><a class="reference internal" href="../2_installation/installation.html">2. Installation</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../2_installation/build_the_package.html">2.1. Environment configuration</a></li>
<li class="toctree-l3"><a class="reference internal" href="../2_installation/build_the_package.html#linux-binary-package-installation">2.2. Linux Binary Package Installation</a></li>
<li class="toctree-l3"><a class="reference internal" href="../2_installation/build_the_package.html#build-from-source">2.3. Build from Source</a></li>
<li class="toctree-l3"><a class="reference internal" href="../2_installation/registration_script.html">2.4. Registration Script (Required)</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../2_installation/registration_script.html#binary-installation">2.4.1. Binary Installation</a></li>
<li class="toctree-l4"><a class="reference internal" href="../2_installation/registration_script.html#build-from-source">2.4.2. Build from Source</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../3_quickstarts/quickstarts.html">3. Quickstarts</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../3_quickstarts/quickstart.html">3.1. ROS Package QuickStarts</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../3_quickstarts/quickstart.html#introduction">3.1.1. Introduction</a></li>
<li class="toctree-l4"><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-l5"><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-l5"><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-l5"><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-l4"><a class="reference internal" href="../3_quickstarts/quickstart.html#sample-features">3.1.3. Sample Features</a><ul>
<li class="toctree-l5"><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-l5"><a class="reference internal" href="../3_quickstarts/quickstart.html#echo-a-topic">3.1.3.2. Echo a topic</a></li>
<li class="toctree-l5"><a class="reference internal" href="../3_quickstarts/quickstart.html#call-a-service">3.1.3.3. Call a service</a></li>
<li class="toctree-l5"><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-l3"><a class="reference internal" href="../3_quickstarts/orbbecviewer.html">3.2. OrbbecViewer QuickStarts</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../3_quickstarts/orbbecviewer.html#download">3.2.1. Download</a></li>
<li class="toctree-l4"><a class="reference internal" href="../3_quickstarts/orbbecviewer.html#connect-the-device">3.2.2. Connect the device</a></li>
<li class="toctree-l4"><a class="reference internal" href="../3_quickstarts/orbbecviewer.html#camera-control">3.2.3. Camera Control</a></li>
<li class="toctree-l4"><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-l2 current"><a class="reference internal" href="application_guide.html">4. Application Guide</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="launch_parameters.html">4.1. Launch parameters</a><ul>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#core-stream-configuration">4.1.1. Core &amp; Stream Configuration</a></li>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#sensor-controls">4.1.2. Sensor Controls</a><ul>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#color-stream">4.1.2.1. Color Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#depth-stream">4.1.2.2. Depth Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#ir-stream">4.1.2.3. IR Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#laser-ldp">4.1.2.4. Laser / LDP</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#device-sync-advanced-features">4.1.3. Device, Sync &amp; Advanced Features</a><ul>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#multi-camera-synchronization">4.1.3.1. Multi-Camera Synchronization</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#network-cameras">4.1.3.2. Network Cameras</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#device-specific">4.1.3.3. Device-Specific</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#disparity">4.1.3.4. Disparity</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#interleave-ae-mode">4.1.3.5. Interleave AE Mode</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#intra-camera-synchronization">4.1.3.6. Intra-Camera Synchronization</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#basic-general-parameters">4.1.4. Basic &amp; General Parameters</a><ul>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#firmware-backend">4.1.4.1. Firmware &amp; Backend</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#tf-extrinsics-calibration">4.1.4.2. TF, Extrinsics &amp; Calibration</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#time-synchronization">4.1.4.3. Time Synchronization</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#logging-diagnostics">4.1.4.4. Logging &amp; Diagnostics</a></li>
<li class="toctree-l5"><a class="reference internal" href="launch_parameters.html#miscellaneous">4.1.4.5. Miscellaneous</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#imu">4.1.5. IMU</a></li>
<li class="toctree-l4"><a class="reference internal" href="launch_parameters.html#depth-filters">4.1.6. Depth Filters</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="services.html">4.2. All available services for camera control</a><ul>
<li class="toctree-l4"><a class="reference internal" href="services.html#stream-control">4.2.1. Stream Control</a><ul>
<li class="toctree-l5"><a class="reference internal" href="services.html#color-stream">4.2.1.1. Color Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="services.html#depth-stream">4.2.1.2. Depth Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="services.html#ir-stream">4.2.1.3. IR Stream</a></li>
<li class="toctree-l5"><a class="reference internal" href="services.html#all-streams">4.2.1.4. All Streams</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="services.html#sensor-emitter-control">4.2.2. Sensor &amp; Emitter Control</a></li>
<li class="toctree-l4"><a class="reference internal" href="services.html#device-information-management">4.2.3. Device Information &amp; Management</a></li>
<li class="toctree-l4"><a class="reference internal" href="services.html#synchronization-triggering">4.2.4. Synchronization &amp; Triggering</a></li>
<li class="toctree-l4"><a class="reference internal" href="services.html#depth-filter-configuration">4.2.5. Depth Filter Configuration</a></li>
<li class="toctree-l4"><a class="reference internal" href="services.html#data-capture-calibration-management">4.2.6. Data Capture &amp; Calibration Management</a></li>
<li class="toctree-l4"><a class="reference internal" href="services.html#point-cloud-decimation">4.2.7. Point cloud decimation</a></li>
</ul>
</li>
<li class="toctree-l3 current"><a class="current reference internal" href="#">4.3. Available Topics</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#image-streams">4.3.1. Image Streams</a></li>
<li class="toctree-l4"><a class="reference internal" href="#point-cloud-topics">4.3.2. Point Cloud Topics</a></li>
<li class="toctree-l4"><a class="reference internal" href="#imu-topics">4.3.3. IMU Topics</a></li>
<li class="toctree-l4"><a class="reference internal" href="#device-status-diagnostics">4.3.4. Device Status &amp; Diagnostics</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="coordinate_and_tf.html">4.4. Coordinate Systems and TF Transforms</a><ul>
<li class="toctree-l4"><a class="reference internal" href="coordinate_and_tf.html#camera-sensor-structure">4.4.1. Camera sensor structure</a></li>
<li class="toctree-l4"><a class="reference internal" href="coordinate_and_tf.html#tf-from-coordinate-a-to-coordinate-b">4.4.2. TF from coordinate A to coordinate B:</a></li>
<li class="toctree-l4"><a class="reference internal" href="coordinate_and_tf.html#ros2-robot-coordinate-system-vs-camera-optical-coordinate-system">4.4.3. ROS2 Robot Coordinate System vs Camera Optical Coordinate System</a></li>
<li class="toctree-l4"><a class="reference internal" href="coordinate_and_tf.html#using-ros2-tf-tools">4.4.4. Using ROS2 TF Tools</a><ul>
<li class="toctree-l5"><a class="reference internal" href="coordinate_and_tf.html#view-tf-tree-structure">4.4.4.1. View TF Tree Structure</a></li>
<li class="toctree-l5"><a class="reference internal" href="coordinate_and_tf.html#visualize-tf-tree-in-rviz2">4.4.4.2. Visualize TF Tree in rviz2</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="coordinate_and_tf.html#camera-tf-calculation-and-publishing-mechanism">4.4.5. Camera TF Calculation and Publishing Mechanism</a><ul>
<li class="toctree-l5"><a class="reference internal" href="coordinate_and_tf.html#core-function-obcameranode-calcandpublishstatictransform">4.4.5.1. Core Function: OBCameraNode::calcAndPublishStaticTransform()</a></li>
<li class="toctree-l5"><a class="reference internal" href="coordinate_and_tf.html#function-breakdown">4.4.5.2. Function Breakdown</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="compressed_image.html">4.5. Compressed Image</a></li>
<li class="toctree-l3"><a class="reference internal" href="point_cloud.html">4.6. Enabling and Visualizing Point Cloud in ROS 2</a><ul>
<li class="toctree-l4"><a class="reference internal" href="point_cloud.html#enabling-depth-point-cloud">4.6.1. Enabling Depth Point Cloud</a><ul>
<li class="toctree-l5"><a class="reference internal" href="point_cloud.html#command-to-enable-depth-point-cloud">4.6.1.1. Command to Enable Depth Point Cloud</a></li>
<li class="toctree-l5"><a class="reference internal" href="point_cloud.html#visualizing-depth-point-cloud-in-rviz2">4.6.1.2. Visualizing Depth Point Cloud in RViz2</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="point_cloud.html#enabling-colored-point-cloud">4.6.2. Enabling Colored Point Cloud</a><ul>
<li class="toctree-l5"><a class="reference internal" href="point_cloud.html#command-to-enable-colored-point-cloud">4.6.2.1. Command to Enable Colored Point Cloud</a></li>
<li class="toctree-l5"><a class="reference internal" href="point_cloud.html#visualizing-colored-point-cloud-in-rviz2">4.6.2.2. Visualizing Colored Point Cloud in RViz2</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../5_advanced_guide/advanced_guide.html">5. Advanced Guide</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../5_advanced_guide/advanced_guide.html#performance-optimization">5.1. Performance &amp; Optimization</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html">5.1.1. Reducing CPU Usage with Orbbec ROS Package</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#recommended-settings-for-lower-cpu-usage">5.1.1.1. Recommended Settings for Lower CPU Usage</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#launch-files-used-for-testing">5.1.1.2. Launch Files Used for Testing</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#test-environment">5.1.1.3. Test environment</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#test-setup">5.1.1.4. Test Setup</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#test-results">5.1.1.5. Test Results</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/lower_cpu_usage.html#further-optimizationa">5.1.1.6. Further Optimizationa</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/performance/efficient_intra_process_communication.html">5.1.2. Efficient intra-process communication:</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/efficient_intra_process_communication.html#introduction">5.1.2.1. Introduction</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/efficient_intra_process_communication.html#example">5.1.2.2. Example</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/performance/fastdds_tuning.html">5.1.3. Fast DDS Optimization for Orbbec Camera with ROS2</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/fastdds_tuning.html#adjusting-system-parameters">5.1.3.1. Adjusting System Parameters</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/performance/fastdds_tuning.html#fast-dds-configuration">5.1.3.2. Fast DDS Configuration</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../5_advanced_guide/advanced_guide.html#multi-camera">5.2. Multi-Camera</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera.html">5.2.1. Multi-Camera</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/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-l5"><a class="reference internal" href="../5_advanced_guide/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-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced.html">5.2.2. Multi_camera synced Instructions</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced.html#setup-instructions">5.2.2.1. Setup instructions</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/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-l5"><a class="reference internal" href="../5_advanced_guide/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-l5"><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.2.2.4. Run the following command to start the multi-camera synced</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced_verification_tool.html">5.2.3. Multi-Camera Synchronization Verification Node</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced_verification_tool.html#usage-guide">5.2.3.1. Usage Guide</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced_verification_tool.html#system-configuration-requirements">5.2.3.2. System Configuration Requirements</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html">5.2.4. GMSL_camera</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html#single-gmsl-camera">5.2.4.1. Single GMSL camera</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html#multi-gmsl-camera">5.2.4.2. Multi GMSL camera</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html#multi-gmsl-camera-synced">5.2.4.3. Multi GMSL camera synced</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html#usage-limitations-of-gmsl-cameras">5.2.4.4. Usage Limitations of GMSL Cameras</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../5_advanced_guide/advanced_guide.html#configuration-modes">5.3. Configuration &amp; Modes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/align_depth_color.html">5.3.1. Aligning Depth to Color in ROS 2</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/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-l5"><a class="reference internal" href="../5_advanced_guide/configuration/align_depth_color.html#selecting-topics-in-rviz2">5.3.1.2. Selecting Topics in RViz2</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/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-l4"><a class="reference internal" href="../5_advanced_guide/configuration/configuration_of_depth_NFOV_and_WFOV_modes.html">5.3.2. Configuration of depth NFOV and WFOV modes</a></li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/depth_work_mode_switch.html">5.3.3. Depth work mode switch</a></li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/disparity_search_offset.html">5.3.4. Disparity_search_offset</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/disparity_search_offset.html#function-introduction">5.3.4.1. Function Introduction</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/disparity_search_offset.html#parameter-introduction">5.3.4.2. Parameter Introduction</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/disparity_search_offset.html#run-the-launch">5.3.4.3. Run the launch</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/interleave_ae_mode.html">5.3.5. Using interleave_ae with Gemini330 series cameras</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/interleave_ae_mode.html#parameter-introduction">5.3.5.1. Parameter Introduction</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/interleave_ae_mode.html#run-the-launch">5.3.5.2. Run the launch</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/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-l4"><a class="reference internal" href="../5_advanced_guide/configuration/predefined_presets.html">5.3.6. Predefined presets</a></li>
<li class="toctree-l4"><a class="reference internal" href="../5_advanced_guide/configuration/net_camera.html">5.3.7. Net_camera</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/net_camera.html#femto-mega-gemini-435le-gemini-335le">5.3.7.1. Femto Mega &amp; Gemini 435Le &amp; Gemini 335Le</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/net_camera.html#set-device-ip-utility">5.3.7.2. set_device_ip Utility</a></li>
<li class="toctree-l5"><a class="reference internal" href="../5_advanced_guide/configuration/net_camera.html#force-ip-function">5.3.7.3. Force IP Function</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../6_benchmark/benchmark.html">6. Benchmark</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../6_benchmark/introduction.html">6.1. Introduction</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/introduction.html#common-benchmark-node">6.1.1. common benchmark node</a></li>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/introduction.html#service-benchmark-node">6.1.2. service benchmark node</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../6_benchmark/benchmark_usage.html">6.2. Benchmark Usage</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/benchmark_usage.html#using-common-benchmark-node">6.2.1. Using common benchmark node</a></li>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/benchmark_usage.html#using-service-benchmark-node">6.2.2. Using service benchmark node</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/benchmark_usage.html#ros2-c">6.2.2.1. ROS2 C++</a></li>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/benchmark_usage.html#ros2-python">6.2.2.2. ROS2 Python</a></li>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/benchmark_usage.html#example-yaml-configuration">6.2.2.3. <strong>Example YAML configuration</strong></a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../6_benchmark/benchmark_data.html">6.3. Benchmark Data</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/benchmark_data.html#common-benckmark-data">6.3.1. Common Benckmark Data</a></li>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/benchmark_data.html#service-benchmark-data">6.3.2. Service Benchmark Data</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../6_benchmark/othertools.html">6.4. Other Tools</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../6_benchmark/othertools.html#ob-benchmark-tool">6.4.1. Ob_benchmark tool</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/othertools.html#tool-configuration-start-benchmark-params-json">6.4.1.1. Tool Configuration (start_benchmark_params.json)</a></li>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/othertools.html#camera-configuration-launch-files">6.4.1.2. Camera configuration (launch files)</a></li>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/othertools.html#running-the-ob-benchmark-tool">6.4.1.3. Running the ob_benchmark tool</a></li>
<li class="toctree-l5"><a class="reference internal" href="../6_benchmark/othertools.html#output-data-files">6.4.1.4. Output Data Files</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../7_developer_guide/developer_guide.html">7. Developer Guide</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../7_developer_guide/migration_guide.html">7.1. Migrating from main to Open-Source v2-main</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/migration_guide.html#introduction">7.1.1. Introduction</a></li>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/migration_guide.html#advantages-of-migrating-from-main-to-v2-main">7.1.2. Advantages of Migrating from main to v2-main</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#comprehensive-device-support">7.1.2.1. <strong>Comprehensive Device Support</strong></a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#transparency-and-extensibility">7.1.2.2. <strong>Transparency and Extensibility</strong></a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#advantages-in-maintenance-and-updates">7.1.2.3. Advantages in Maintenance and Updates</a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#community-and-ecosystem-support">7.1.2.4. <strong>Community and Ecosystem Support</strong></a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/migration_guide.html#comparison-between-main-and-v2-main-branches">7.1.3. Comparison Between main and v2-main Branches</a><ul>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#launch-file-differences">7.1.3.1. <strong>Launch File Differences</strong></a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#parameter-differences">7.1.3.2. <strong>Parameter Differences</strong></a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#topic-differences">7.1.3.3. <strong>Topic Differences</strong></a></li>
<li class="toctree-l5"><a class="reference internal" href="../7_developer_guide/migration_guide.html#service-differences">7.1.3.4. <strong>Service Differences</strong></a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../7_developer_guide/building_a_Debian_Package.html">7.2. Building a Debian Package</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/building_a_Debian_Package.html#preparing-the-environment">7.2.1. Preparing the Environment</a></li>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/building_a_Debian_Package.html#configuring-ros-dependencies">7.2.2. Configuring ROS Dependencies</a></li>
<li class="toctree-l4"><a class="reference internal" href="../7_developer_guide/building_a_Debian_Package.html#building-the-package">7.2.3. Building the Package</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../8_FAQ/FAQ.html">8. Frequently Asked Questions</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../8_FAQ/FAQ.html#unexpected-crash">8.1. Unexpected Crash</a></li>
<li class="toctree-l3"><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-l3"><a class="reference internal" href="../8_FAQ/FAQ.html#additional-troubleshooting">8.3. Additional Troubleshooting</a></li>
<li class="toctree-l3"><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>
<li class="toctree-l3"><a class="reference internal" href="../8_FAQ/FAQ.html#how-to-launch-a-specific-camera-when-multiple-cameras-are-connected">8.5. How to Launch a Specific Camera When Multiple Cameras Are Connected</a></li>
<li class="toctree-l3"><a class="reference internal" href="../8_FAQ/FAQ.html#why-is-it-necessary-to-add-delays-when-starting-multiple-cameras-or-switching-streams">8.6. Why Is It Necessary to Add Delays When Starting Multiple Cameras or Switching Streams?</a></li>
<li class="toctree-l3"><a class="reference internal" href="../8_FAQ/FAQ.html#femto-bolt-depth-stream-no-data">8.7. femto bolt depth stream no data</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../lidar_devices/index.html">1. Lidar Devices</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../lidar_devices/lidar.html">1.1. Installation</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#prerequisites">1.1.1. Prerequisites</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#install-deb-dependencies">1.1.2. Install deb Dependencies</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#install-udev-rules">1.1.3. Install udev Rules</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#build-the-package">1.1.4. Build the Package</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#launch-the-lidar-node">1.1.5. Launch the LiDAR Node</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../lidar_devices/lidar.html#usage">1.2. Usage</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#running-the-driver">1.2.1. Running the Driver</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#get-device-information-for-connected-lidars">1.2.2. Get Device Information for Connected LiDARs</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#check-which-configurations-the-lidar-supports">1.2.3. Check Which Configurations the LiDAR Supports</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#parameters-and-configuration">1.2.4. Parameters and Configuration</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../lidar_devices/lidar.html#point-cloud-data-details">1.3. Point Cloud Data Details</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#point-cloud-format">1.3.1. Point Cloud Format</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#point-cloud-aggregation-functionality">1.3.2. Point Cloud Aggregation Functionality</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../lidar_devices/lidar.html#features">1.3.2.1. Features:</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../lidar_devices/lidar.html#usage-examples">1.3.2.2. Usage Examples:</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../lidar_devices/lidar.html#imu-data">1.4. IMU Data</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#imu-topics">1.4.1. IMU Topics</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../lidar_devices/lidar.html#using-imu-data">1.4.2. Using IMU Data</a></li>
</ul>
</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="../index.html">Camera Devices</a></li>
<li class="breadcrumb-item"><a href="application_guide.html"><span class="section-number">4. </span>Application Guide</a></li>
<li class="breadcrumb-item active"><span class="section-number">4.3. </span>Available Topics</li>
<li class="wy-breadcrumbs-aside">
<a href="../../../_sources/source/camera_devices/4_application_guide/topics.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">
<div class="lang-switch" style="margin:0 0 1em 0; font-size:0.9em;"><a class="lang-other" href="#">中文</a> | <a class="lang-current" href="#">English</a></div><script>(function(){var p=window.location.pathname;var isEn=p.indexOf('/en/')!==-1 && p.indexOf('/zh/')===-1;if(p.indexOf('/zh/')!==-1) isEn=false;var other = isEn ? p.replace(/\/en\//, '/zh/') : p.replace(/\/zh\//, '/en/');var current=p;var sw=document.querySelector('.lang-switch'); if(!sw) return;var o=sw.querySelector('.lang-other'); var c=sw.querySelector('.lang-current');if(isEn){ o.textContent='中文'; c.textContent='English'; } else { o.textContent='English'; c.textContent='中文'; }o.setAttribute('href', other); c.setAttribute('href', current);})();</script><section id="available-topics">
<h1><span class="section-number">4.3. </span>Available Topics<a class="headerlink" href="#available-topics" title="Link to this heading"></a></h1>
<p>Topics are organized by stream and function. By default, all topics are published under the <code class="docutils literal notranslate"><span class="pre">/camera</span></code> namespace, which can be changed with the <code class="docutils literal notranslate"><span class="pre">camera_name</span></code> launch parameter.</p>
<blockquote>
<div><p><strong>Note:</strong> Topics for a specific stream (e.g., <code class="docutils literal notranslate"><span class="pre">/camera/color/...</span></code>) are only published if their corresponding launch parameter (e.g., <code class="docutils literal notranslate"><span class="pre">enable_color</span></code>) is set to <code class="docutils literal notranslate"><span class="pre">true</span></code>.</p>
</div></blockquote>
<section id="image-streams">
<h2><span class="section-number">4.3.1. </span>Image Streams<a class="headerlink" href="#image-streams" title="Link to this heading"></a></h2>
<p>These topics provide the raw image data and corresponding calibration information for each enabled camera stream. The pattern is consistent for <code class="docutils literal notranslate"><span class="pre">color</span></code>, <code class="docutils literal notranslate"><span class="pre">depth</span></code>, <code class="docutils literal notranslate"><span class="pre">ir</span></code>, <code class="docutils literal notranslate"><span class="pre">left_ir</span></code>, and <code class="docutils literal notranslate"><span class="pre">right_ir</span></code> streams.</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/color/image_raw</span></code></p>
<ul>
<li><p>Raw image data from the color stream.</p></li>
</ul>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/color/camera_info</span></code></p>
<ul>
<li><p>Camera calibration data and metadata for the color stream.</p></li>
</ul>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/color/metadata</span></code></p>
<ul>
<li><p>Low-level metadata from the color stream firmware.</p></li>
</ul>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/depth/image_raw</span></code></p>
<ul>
<li><p>Raw image data from the depth stream.</p></li>
</ul>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/depth/camera_info</span></code></p>
<ul>
<li><p>Camera calibration data and metadata for the depth stream.</p></li>
</ul>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/depth/metadata</span></code></p>
<ul>
<li><p>Low-level metadata from the depth stream firmware.</p></li>
</ul>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/ir/image_raw</span></code></p>
<ul>
<li><p>Raw image data from the infrared (IR) stream.</p></li>
</ul>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/ir/camera_info</span></code></p>
<ul>
<li><p>Camera calibration data and metadata for the IR stream.</p></li>
</ul>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/ir/metadata</span></code></p>
<ul>
<li><p>Low-level metadata from the IR stream firmware.</p></li>
</ul>
</li>
</ul>
</section>
<section id="point-cloud-topics">
<h2><span class="section-number">4.3.2. </span>Point Cloud Topics<a class="headerlink" href="#point-cloud-topics" title="Link to this heading"></a></h2>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/depth/points</span></code></p>
<ul>
<li><p>Point cloud data generated from the depth stream.</p></li>
<li><p><strong>Condition:</strong> Published only when <code class="docutils literal notranslate"><span class="pre">enable_point_cloud</span></code> is <code class="docutils literal notranslate"><span class="pre">true</span></code>.</p></li>
</ul>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/depth_registered/points</span></code></p>
<ul>
<li><p>Colored point cloud data, where the depth points are registered to the color image frame.</p></li>
<li><p><strong>Condition:</strong> Published only when <code class="docutils literal notranslate"><span class="pre">enable_colored_point_cloud</span></code> is <code class="docutils literal notranslate"><span class="pre">true</span></code>.</p></li>
</ul>
</li>
</ul>
</section>
<section id="imu-topics">
<h2><span class="section-number">4.3.3. </span>IMU Topics<a class="headerlink" href="#imu-topics" title="Link to this heading"></a></h2>
<p>The Inertial Measurement Unit (IMU) topics provide accelerometer and gyroscope data. Their behavior depends on the synchronization setting.</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/accel/sample</span></code></p>
<ul>
<li><p>Individual accelerometer data stream.</p></li>
<li><p><strong>Condition:</strong> Published when <code class="docutils literal notranslate"><span class="pre">enable_accel</span></code> is <code class="docutils literal notranslate"><span class="pre">true</span></code> AND <code class="docutils literal notranslate"><span class="pre">enable_sync_output_accel_gyro</span></code> is <code class="docutils literal notranslate"><span class="pre">false</span></code>.</p></li>
</ul>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/gyro/sample</span></code></p>
<ul>
<li><p>Individual gyroscope data stream.</p></li>
<li><p><strong>Condition:</strong> Published when <code class="docutils literal notranslate"><span class="pre">enable_gyro</span></code> is <code class="docutils literal notranslate"><span class="pre">true</span></code> AND <code class="docutils literal notranslate"><span class="pre">enable_sync_output_accel_gyro</span></code> is <code class="docutils literal notranslate"><span class="pre">false</span></code>.</p></li>
</ul>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/gyro_accel/sample</span></code></p>
<ul>
<li><p>Synchronized data stream containing both accelerometer and gyroscope data in a single message.</p></li>
<li><p><strong>Condition:</strong> Published when <code class="docutils literal notranslate"><span class="pre">enable_sync_output_accel_gyro</span></code> is <code class="docutils literal notranslate"><span class="pre">true</span></code>.</p></li>
</ul>
</li>
</ul>
</section>
<section id="device-status-diagnostics">
<h2><span class="section-number">4.3.4. </span>Device Status &amp; Diagnostics<a class="headerlink" href="#device-status-diagnostics" title="Link to this heading"></a></h2>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/device_status</span></code></p>
<ul>
<li><p>Reports the current status of the camera device.</p></li>
</ul>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/depth_filter_status</span></code></p>
<ul>
<li><p>Reports the status of the depth sensor’s post-processing filters.</p></li>
</ul>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">/diagnostics</span></code></p>
<ul>
<li><p>Publishes diagnostic information about the camera node. Currently, this includes the device temperature.</p></li>
</ul>
</li>
</ul>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="services.html" class="btn btn-neutral float-left" title="4.2. All available services for camera control" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="coordinate_and_tf.html" class="btn btn-neutral float-right" title="4.4. Coordinate Systems and TF Transforms" 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 2026-01-04 01:12:32.
</span></p>
</div>
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>