<liclass="toctree-l3"><aclass="reference internal"href="../3_quickstarts/quickstart.html#build-your-first-camera-application">3.1.2. Build your First Camera Application</a><ul>
<liclass="toctree-l4"><aclass="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>
<liclass="toctree-l4"><aclass="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>
<liclass="toctree-l4"><aclass="reference internal"href="../3_quickstarts/quickstart.html#step-3-visualize-in-rviz2">3.1.2.3. Step 3: Visualize in RViz2</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../3_quickstarts/quickstart.html#list-available-topics-services-parameters">3.1.3.1. List available topics / services/ parameters</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../3_quickstarts/quickstart.html#echo-a-topic">3.1.3.2. Echo a topic</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../3_quickstarts/quickstart.html#call-a-service">3.1.3.3. Call a service</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../3_quickstarts/quickstart.html#record-with-rosbag2">3.1.3.4. Record with rosbag2</a></li>
<liclass="toctree-l3"><aclass="reference internal"href="../3_quickstarts/orbbecviewer.html#connect-the-device">3.2.2. Connect the device</a></li>
<liclass="toctree-l3"><aclass="reference internal"href="../3_quickstarts/orbbecviewer.html#camera-control">3.2.3. Camera Control</a></li>
<liclass="toctree-l3"><aclass="reference internal"href="../3_quickstarts/orbbecviewer.html#device-information-and-firmware-upgrade">3.2.4. Device information and firmware upgrade</a></li>
<liclass="toctree-l3"><aclass="reference internal"href="../4_application_guide/launch_parameters.html#basic-general-parameters">4.1.4. Basic & General Parameters</a><ul>
<liclass="toctree-l4"><aclass="reference internal"href="../4_application_guide/launch_parameters.html#firmware-backend">4.1.4.1. Firmware & Backend</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../4_application_guide/launch_parameters.html#tf-extrinsics-calibration">4.1.4.2. TF, Extrinsics & Calibration</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../4_application_guide/launch_parameters.html#time-synchronization">4.1.4.3. Time Synchronization</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../4_application_guide/launch_parameters.html#logging-diagnostics">4.1.4.4. Logging & Diagnostics</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../4_application_guide/services.html#ir-stream">4.2.1.3. IR Stream</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../4_application_guide/services.html#all-streams">4.2.1.4. All Streams</a></li>
</ul>
</li>
<liclass="toctree-l3"><aclass="reference internal"href="../4_application_guide/services.html#sensor-emitter-control">4.2.2. Sensor & Emitter Control</a></li>
<liclass="toctree-l3"><aclass="reference internal"href="../4_application_guide/services.html#device-information-management">4.2.3. Device Information & Management</a></li>
<liclass="toctree-l3"><aclass="reference internal"href="../4_application_guide/services.html#synchronization-triggering">4.2.4. Synchronization & Triggering</a></li>
<liclass="toctree-l3"><aclass="reference internal"href="../4_application_guide/services.html#data-capture-calibration-management">4.2.6. Data Capture & Calibration Management</a></li>
</ul>
</li>
<liclass="toctree-l2"><aclass="reference internal"href="../4_application_guide/topics.html">4.3. Available Topics</a><ul>
<liclass="toctree-l3"><aclass="reference internal"href="../4_application_guide/topics.html#device-status-diagnostics">4.3.4. Device Status & Diagnostics</a></li>
<liclass="toctree-l2"><aclass="reference internal"href="../4_application_guide/coordinate_systems.html">4.4. ROS2(Robot) vs Optical(Camera) Coordination Systems</a></li>
<liclass="toctree-l2"><aclass="reference internal"href="../4_application_guide/camera_sensor_structure.html">4.5. Camera sensor structure</a></li>
<liclass="toctree-l2"><aclass="reference internal"href="../4_application_guide/tf_transformations.html">4.6. TF from coordinate A to coordinate B:</a></li>
<liclass="toctree-l2"><aclass="reference internal"href="../4_application_guide/point_cloud.html">4.8. Enabling and Visualizing Point Cloud in ROS 2</a><ul>
<liclass="toctree-l3"><aclass="reference internal"href="../4_application_guide/point_cloud.html#enabling-depth-point-cloud">4.8.1. Enabling Depth Point Cloud</a><ul>
<liclass="toctree-l4"><aclass="reference internal"href="../4_application_guide/point_cloud.html#command-to-enable-depth-point-cloud">4.8.1.1. Command to Enable Depth Point Cloud</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../4_application_guide/point_cloud.html#visualizing-depth-point-cloud-in-rviz2">4.8.1.2. Visualizing Depth Point Cloud in RViz2</a></li>
<liclass="toctree-l3"><aclass="reference internal"href="../4_application_guide/point_cloud.html#enabling-colored-point-cloud">4.8.2. Enabling Colored Point Cloud</a><ul>
<liclass="toctree-l4"><aclass="reference internal"href="../4_application_guide/point_cloud.html#command-to-enable-colored-point-cloud">4.8.2.1. Command to Enable Colored Point Cloud</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../4_application_guide/point_cloud.html#visualizing-colored-point-cloud-in-rviz2">4.8.2.2. Visualizing Colored Point Cloud in RViz2</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../5_advanced_guide/multi_camera/multi_camera.html#no-data-stream-from-multiple-cameras">5.1.1.1. No Data Stream from Multiple Cameras</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../5_advanced_guide/multi_camera/multi_camera.html#image-topic-frame-rate-too-low-from-multiple-cameras">5.1.1.2. Image topic frame rate too low from Multiple Cameras</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../5_advanced_guide/multi_camera/multi_camera_synced.html#checking-camera-port-with-orbbecsdk-ros2">5.1.2.2. Checking camera port with OrbbecSDK_ROS2</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../5_advanced_guide/multi_camera/multi_camera_synced.html#run-the-following-command-to-start-the-multi-camera-synced">5.1.2.4. Run the following command to start the multi-camera synced</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../5_advanced_guide/multi_camera/multi_camera_synced_verification_tool.html#preparation-for-operation">5.1.3.2. Preparation for operation</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../5_advanced_guide/multi_camera/multi_camera_synced_verification_tool.html#run-this-example">5.1.3.3. Run this example</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../5_advanced_guide/multi_camera/multi_camera_synced_verification_tool.html#files-that-need-to-be-changed">5.1.3.4. Files that need to be changed</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../5_advanced_guide/multi_camera/gmsl_camera.html#single-gmsl-camera">5.1.4.1. Single GMSL camera</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../5_advanced_guide/multi_camera/gmsl_camera.html#multi-gmsl-camera">5.1.4.2. Multi GMSL camera</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../5_advanced_guide/multi_camera/gmsl_camera.html#multi-gmsl-camera-synced">5.1.4.3. Multi GMSL camera synced</a></li>
<liclass="toctree-l2"><aclass="reference internal"href="../5_advanced_guide/advanced_guide.html#configuration-modes">5.2. Configuration & Modes</a><ul>
<liclass="toctree-l3"><aclass="reference internal"href="../5_advanced_guide/configuration/align_depth_color.html">5.2.1. Aligning Depth to Color in ROS 2</a><ul>
<liclass="toctree-l4"><aclass="reference internal"href="../5_advanced_guide/configuration/align_depth_color.html#commands-to-align-and-view-depth-and-color-images">5.2.1.1. Commands to Align and View Depth and Color Images</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../5_advanced_guide/configuration/align_depth_color.html#selecting-topics-in-rviz2">5.2.1.2. Selecting Topics in RViz2</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../5_advanced_guide/configuration/align_depth_color.html#example-of-depth-to-color-overlay">5.2.1.3. Example of Depth to Color Overlay</a></li>
<liclass="toctree-l3"><aclass="reference internal"href="../5_advanced_guide/configuration/configuration_of_depth_NFOV_and_WFOV_modes.html">5.2.2. Configuration of depth NFOV and WFOV modes</a></li>
<liclass="toctree-l3"><aclass="reference internal"href="../5_advanced_guide/configuration/depth_work_mode_switch.html">5.2.3. Depth work mode switch</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../5_advanced_guide/configuration/disparity_search_offset.html#function-introduction">5.2.4.1. Function Introduction</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../5_advanced_guide/configuration/disparity_search_offset.html#run-the-launch">5.2.4.3. Run the launch</a></li>
<liclass="toctree-l3"><aclass="reference internal"href="../5_advanced_guide/configuration/interleave_ae_mode.html">5.2.5. Using interleave_ae with Gemini330 series cameras</a><ul>
<liclass="toctree-l4"><aclass="reference internal"href="../5_advanced_guide/configuration/interleave_ae_mode.html#run-the-launch">5.2.5.2. Run the launch</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../5_advanced_guide/configuration/net_camera.html#femto-mega-gemini-435le">5.2.7.1. Femto Mega & Gemini 435Le</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../5_advanced_guide/configuration/net_camera.html#multi-net-camera">5.2.7.3. Multi Net camera</a></li>
<liclass="toctree-l3"><aclass="reference internal"href="../6_benchmark/introduction.html#common-benchmark-node">6.1.1. common benchmark node</a></li>
<liclass="toctree-l3"><aclass="reference internal"href="../6_benchmark/introduction.html#service-benchmark-node">6.1.2. service benchmark node</a></li>
<liclass="toctree-l3"><aclass="reference internal"href="../6_benchmark/benchmark_usage.html#using-common-benchmark-node">6.2.1. Using common benchmark node</a></li>
<liclass="toctree-l3"><aclass="reference internal"href="../6_benchmark/benchmark_usage.html#using-service-benchmark-node">6.2.2. Using service benchmark node</a><ul>
<liclass="toctree-l4"><aclass="reference internal"href="../6_benchmark/performance.html#camera-configuration-launch-files">6.4.1.2. Camera configuration (launch files)</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../6_benchmark/performance.html#running-the-ob-benchmark-tool">6.4.1.3. Running the ob_benchmark tool</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../6_benchmark/performance.html#output-data-files">6.4.1.4. Output Data Files</a></li>
</ul>
</li>
<liclass="toctree-l3"><aclass="reference internal"href="../6_benchmark/performance.html#reducing-cpu-usage-with-orbbec-ros-package">6.4.2. Reducing CPU Usage with Orbbec ROS Package</a><ul>
<liclass="toctree-l4"><aclass="reference internal"href="../6_benchmark/performance.html#recommended-settings-for-lower-cpu-usage">6.4.2.1. Recommended Settings for Lower CPU Usage</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../6_benchmark/performance.html#launch-files-used-for-testing">6.4.2.2. Launch Files Used for Testing</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../6_benchmark/performance.html#test-environment">6.4.2.3. Test environment</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../6_benchmark/performance.html#test-setup">6.4.2.4. Test Setup</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../6_benchmark/performance.html#test-results">6.4.2.5. Test Results</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../6_benchmark/performance.html#further-optimizationa">6.4.2.6. Further Optimizationa</a></li>
<liclass="toctree-l3"><aclass="reference internal"href="../6_benchmark/performance.html#fast-dds-optimization-for-orbbec-camera-with-ros2">6.4.4. Fast DDS Optimization for Orbbec Camera with ROS2</a><ul>
<liclass="toctree-l4"><aclass="reference internal"href="../6_benchmark/performance.html#adjusting-system-parameters">6.4.4.1. Adjusting System Parameters</a></li>
<liclass="toctree-l4"><aclass="reference internal"href="../6_benchmark/performance.html#fast-dds-configuration">6.4.4.2. Fast DDS Configuration</a></li>
<liclass="toctree-l2"><aclass="reference internal"href="../7_developer_guide/building_a_Debian_Package.html">7.1. Building a Debian Package</a><ul>
<liclass="toctree-l3"><aclass="reference internal"href="../7_developer_guide/building_a_Debian_Package.html#preparing-the-environment">7.1.1. Preparing the Environment</a></li>
<liclass="toctree-l3"><aclass="reference internal"href="../7_developer_guide/building_a_Debian_Package.html#building-the-package">7.1.3. Building the Package</a></li>
<liclass="toctree-l2"><aclass="reference internal"href="../8_FAQ/FAQ.html#no-data-stream-from-multiple-cameras">8.2. No Data Stream from Multiple Cameras</a></li>
<liclass="toctree-l2"><aclass="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>
<h1><spanclass="section-number">1.2. </span>Orbbec SDK Overview<aclass="headerlink"href="#orbbec-sdk-overview"title="Link to this heading"></a></h1>
<p>This section introduces the Orbbec SDK in C++. Its architecture and concepts are consistent with those of the Python Wrapper.</p>
<sectionid="terms">
<h2><spanclass="section-number">1.2.1. </span>Terms<aclass="headerlink"href="#terms"title="Link to this heading"></a></h2>
<tableborder="1"class="docutils">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Explain</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>USB</td>
<td>Universal Serial Bus</td>
</tr>
<tr>
<td>2</td>
<td>UVC</td>
<td>USB Video Class</td>
</tr>
<tr>
<td>3</td>
<td>Firmware</td>
<td>Firmware of 3D camera</td>
</tr>
<tr>
<td>4</td>
<td>Disparity</td>
<td>Disparity is to observe the direction difference of the same target from two points with a certain distance.</td>
</tr>
<tr>
<td>5</td>
<td>D2D (Disparity to depth)</td>
<td>Disparity to depth is an image processing technique used to convert disparity information into depth information.</td>
</tr>
<tr>
<td>6</td>
<td>Hardware D2D</td>
<td>Disparity to depth is implemented internally in the device, without occupying the computational power of the host computer.</td>
</tr>
<tr>
<td>7</td>
<td>Software D2D</td>
<td>Disparity to depth, implemented in Orbbec SDK</td>
</tr>
<tr>
<td>8</td>
<td>Depth point cloud</td>
<td>Depth point cloud, the coordinates of points in a three-dimensional world coordinate system, can be transformed into a point cloud using the intrinsic parameters of a Depth camera.</td>
</tr>
<tr>
<td>9</td>
<td>RGBD point cloud</td>
<td>Point cloud with overlaid RGB information</td>
</tr>
<tr>
<td>10</td>
<td>D2C</td>
<td>The translation of "Depth to Color" is a feature that performs per-pixel geometric transformation on a depth image. Its result is aligning the depth image with its corresponding color image through the D2C transformation, allowing us to locate the depth information of a color pixel by using the same image coordinate position of that pixel in the transformed depth image. After the D2C transformation, we generate a depth image of the same size as the target color image, where the image content represents depth data in the coordinate system of the color camera. In other words, it reconstructs a depth image "captured" using the origin and dimensions of the color camera, where each pixel matches the corresponding pixel coordinates of the color camera.</td>
</tr>
<tr>
<td>11</td>
<td>Hardware D2C</td>
<td>Hardware D2C refers to the functionality of performing Depth to Color transformation within the camera itself, with the camera directly outputting the result of the D2C transformation.</td>
</tr>
<tr>
<td>12</td>
<td>Software D2C</td>
<td>Performing D2C computation on the host computer side using an SDK.</td>
</tr>
<tr>
<td>13</td>
<td>Frame aggregation (FrameSet)</td>
<td>Combining Depth, IR, and Color frames into a Frameset and invoking it through a pipeline.</td>
</tr>
<tr>
<td>14</td>
<td>C2D</td>
<td>The translation of "Color to Depth" is a feature that performs per-pixel geometric transformation on a color image. Its result is aligning the color image with its corresponding depth image through the C2D transformation.</td>
</tr>
<tr>
<td>15</td>
<td>MetaData</td>
<td>Frame metadata is a set of parameters (or attributes) that provide a snapshot of the sensor configuration and/or system state present during the frame’s generation.</td>
</tr>
<tr>
<td>16</td>
<td>HDR</td>
<td>High Dynamic Range (HDR) imaging allows imaging systems to capture images in extremely dark and bright scenes alike. We propose a software solution running on the host CPU to implement this feature. It utilizes data from two consecutive frames and directly synthesizes these two depth images, thereby enhances the dynamic range of 16-bit depth images.</td>
</tr>
<tr>
<td>17</td>
<td>LDP</td>
<td>Laser close-range protection</td>
</tr>
</tbody>
</table></section>
<sectionid="orbbec-sdk-v2-architecture-overview">
<h2><spanclass="section-number">1.2.2. </span>Orbbec SDK v2 Architecture Overview<aclass="headerlink"href="#orbbec-sdk-v2-architecture-overview"title="Link to this heading"></a></h2>
<p>OrbbecViewer, Sample, and User Application Implementation.</p>
<ulclass="simple">
<li><p>Interfaces and Encapsulation Layer</p></li>
</ul>
<p>OrbbecSDK Interface Encapsulation and Wrapper Encapsulation.</p>
<ulclass="simple">
<li><p>High-level Layer</p></li>
</ul>
<p>HighLevel encapsulates the core business components and provides interfaces to the outside using a pipeline.</p>
<ulclass="simple">
<li><p>Basic business layer</p></li>
</ul>
<p>The realization of the core business logic framework.</p>
<ulclass="simple">
<li><p>Platform abstraction layer</p></li>
</ul>
<p>Cross-platform components abstract operating system differences and provide a unified access interface.</p>
<ulclass="simple">
<li><p>Platform implementation layer</p></li>
</ul>
<p>The driver implementation of each platform.</p>
</section>
<sectionid="sdk-concept-overview">
<h2><spanclass="section-number">1.2.3. </span>SDK Concept Overview<aclass="headerlink"href="#sdk-concept-overview"title="Link to this heading"></a></h2>
<ulclass="simple">
<li><p>Context</p></li>
</ul>
<p>Context which provides a set of settings includes settings such as device state change callbacks, log levels, and more. The Context can access multiple devices.</p>
<ulclass="simple">
<li><p>Device</p></li>
</ul>
<p>One actual hardware device corresponds to one Device object, which is used to obtain relevant information of the device and control its attributes.</p>
<ulclass="simple">
<li><p>Pipeline</p></li>
</ul>
<p>The HighLevel corresponding object encapsulates the interface for quick access to the SDK. It has simple functions that allow users to quickly get started and use the SDK.</p>
<ulclass="simple">
<li><p>Config</p></li>
</ul>
<p>Provides configuration for enabling data streams, alignment modes, and frame aggregation modes, It is used to control the behavior of the data output.</p>
<ulclass="simple">
<li><p>StreamProfile</p></li>
</ul>
<p>Stream configuration that defines parameters such as resolution, frame rate, and encoding format, It also provides management of camera parameters.</p>
<ulclass="simple">
<li><p>Frame</p></li>
</ul>
<p>Represents a frame of data in the Stream, and also contains relevant information about that frame of data, such as timestamp, type, etc.</p>
<ulclass="simple">
<li><p>Filter</p></li>
</ul>
<p>It mainly refers to some algorithmic processing modules for the composite stream FrameSet, such as point cloud algorithm processing.</p>
<ulclass="simple">
<li><p>Record</p></li>
</ul>
<p>Recording functionality that captures data streams and saves them as files for later analysis or playback.</p>
<ulclass="simple">
<li><p>Playback</p></li>
</ul>
<p>Playback functionality that plays recorded files and supports control over playback speed and other related parameters.</p>
</section>
<sectionid="sdk-programming-model">
<h2><spanclass="section-number">1.2.4. </span>SDK Programming Model<aclass="headerlink"href="#sdk-programming-model"title="Link to this heading"></a></h2>
<p>Here is the C++ programming logic flow chart. Python’s programming logic is the same as it.</p>