> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Enable Orbbec Gemini 335L with orbbec_camera

The `orbbec_camera` sample application enables the Orbbec Gemini camera 335L to work in RGB or depth mode. This application generates the RGB and depth information by topics.

Orbbec-camera is the OrbbecSDK ROS2 Wrapper, which provides seamless integration of Orbbec cameras within the ROS 2 environment.

## Pipeline flow for `orbbec_camera`

The following figure shows the pipeline of `orbbec_camera`.

<img
  src="https://mintcdn.com/qualcomm-prod/IP0o0G5fE3MFmCJ8/SDKs/QIR-SDK-2.0/media/80-65220-2-qirp-sdk-qsg/orbbec-camera-pipeline.svg?fit=max&auto=format&n=IP0o0G5fE3MFmCJ8&q=85&s=7dcbcfe2c0b0336a343e4e0df59b53ec"
  style={{
width: "90%",
display: "block",
margin: "0 auto" }}
  width="562"
  height="322"
  data-path="SDKs/QIR-SDK-2.0/media/80-65220-2-qirp-sdk-qsg/orbbec-camera-pipeline.svg"
/>

<p style={{ textAlign: 'center', fontWeight: 'bold' }}>
  Figure : The orbbec-camera pipeline
</p>

## ROS topics used in the `orbbec_camera` pipeline

<table>
  <thead>
    <tr>
      <th style={{ width: '20%' }}>ROS topic</th>
      <th style={{ width: '25%' }}>Message type</th>
      <th style={{ width: '20%' }}>Published/Subscribed by</th>
      <th style={{ width: '35%' }}>Description</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>`/camera/color/camera_info`</td>
      <td>`sensor_msgs::msg::CameraInfo`</td>
      <td>Published by `orbbec_camera`</td>
      <td>Publishes the color camera information.</td>
    </tr>

    <tr>
      <td>`/camera/color/image_raw`</td>
      <td>`sensor_msgs::msg::Image`</td>
      <td>Published by `orbbec_camera`</td>
      <td>Publishes the color image.</td>
    </tr>

    <tr>
      <td>`/camera/depth/camera_info`</td>
      <td>`sensor_msgs::msg::CameraInfo`</td>
      <td>Published by `orbbec_camera`</td>
      <td>Publishes the depth camera information.</td>
    </tr>

    <tr>
      <td>`/camera/depth/image_raw`</td>
      <td>`sensor_msgs::msg::Image`</td>
      <td>Published by `orbbec_camera`</td>
      <td>Publishes the depth image.</td>
    </tr>

    <tr>
      <td>`/camera/depth/points`</td>
      <td>`sensor_msgs::msg::PointCloud2`</td>
      <td>Published by `orbbec_camera`</td>
      <td>Publishes the depth point cloud.</td>
    </tr>

    <tr>
      <td>`/camera/gyro_accel/sample`</td>
      <td>`sensor_msgs::msg::Imu`</td>
      <td>Published by `orbbec_camera`</td>
      <td>Publishes the gyroscope and accelerometer data.</td>
    </tr>
  </tbody>
</table>

## Prerequisites

* You have **Set up the device** according to [Set up the environment for running sample applications](./set-up-env-for-sample-app).
* Connect the USB port of Orbbec Gemini 335L camera.

<Note>
  A USB 3.0 port is recommended for best performance. When connected using a USB 2.0 port, the Orbbec Gemini 335L camera may not support certain resolutions (for example, 848×480).
</Note>

## Run out-of-the-box `orbbec_camera`

1. Install the udev rules for the Orbbec camera (one-time prerequisite).

   <Note>
     **Note**

     * This step ensures proper device permissions and allows the system to access the camera without requiring root privileges.
     * You need to perform this step only once on a newly setup device.
   </Note>

   ```cpp theme={null}
   (ssh) cd /usr/ros/jazzy/share/orbbec_camera/scripts/
   (ssh) bash install_udev_rules.sh
   (ssh) udevadm control --reload-rules && udevadm trigger
   ```
2. Launch Orbbec camera 335L in the following 3 modes:

   * To set up QIR SDK and ROS2 environment on the device and start the `orbbec_camera` ROS node with the `RGB` module enabled, start a new terminal and run the following commands:
     ```cpp theme={null}
     (ssh) source /usr/share/qirp-setup.sh
     (ssh) cd /usr/ros/jazzy/share/orbbec_camera/scripts/
     (ssh) source ../scripts/dds_config.sh
     (ssh) ros2 launch orbbec_camera gemini_330_series.launch.py depth_registration:=false enable_depth:=false enable_point_cloud:=false color_width:=848 color_height:=480 color_fps:=30 color_qos:=default
     ```
   * To set up QIR SDK and ROS2 environment on the device and start the `orbbec_camera` ROS node with the `Depth` module enabled, start a new terminal and run the following commands:
     ```cpp theme={null}
     (ssh) source /usr/share/qirp-setup.sh
     (ssh) cd /usr/ros/jazzy/share/orbbec_camera/scripts/
     (ssh) ros2 launch orbbec_camera gemini_330_series.launch.py depth_registration:=true enable_depth:=true enable_sync:=true enable_point_cloud:=false color_width:=848 color_height:=480 color_fps:=30 depth_fps:=30
     ```
   * To set up QIR SDK and ROS2 environment on the device and start the `orbbec_camera` ROS node with the `IMU` module enabled, start a new terminal and run the following commands:
     ```cpp theme={null}
     (ssh) source /usr/share/qirp-setup.sh
     (ssh) cd /usr/ros/jazzy/share/orbbec_camera/scripts/
     (ssh) ros2 launch orbbec_camera gemini_330_series.launch.py depth_registration:=false enable_depth:=false enable_point_cloud:=false color_width:=640 color_height:=360 color_fps:=30 color_qos:=default enable_accel:=true enable_gyro:=true enable_sync_output_accel_gyro:=true
     ```
