> ## 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 integration of Orbbec cameras within the ROS 2 environment.

## Pipeline flow for `orbbec_camera`

The following figure shows the pipeline flow for `orbbec_camera`.

<Frame caption="The orbbec_camera pipeline.">
  <img src="https://mintcdn.com/qualcomm-prod/EDJV-hu6qJhZi4pm/SDKs/QIR-SDK-Ubuntu/images/image3.png?fit=max&auto=format&n=EDJV-hu6qJhZi4pm&q=85&s=b45e0c4ce58d02cfd577741068ec0ab5" alt="Orbbec Camera 335L feeding the orbbec_camera ROS node, which publishes color, depth, point cloud, and gyro-accel topics." width="2248" height="1288" data-path="SDKs/QIR-SDK-Ubuntu/images/image3.png" />
</Frame>

## ROS topics used in the `orbbec_camera` pipeline

The following table lists the ROS topics used in the `orbbec_camera` pipeline, with the message type and a description of each topic.

| ROS topic                   | Type                              | Description                            |
| --------------------------- | --------------------------------- | -------------------------------------- |
| `/camera/color/camera_info` | `<sensor_msgs::msg::CameraInfo>`  | Published by the `orbbec_camera` node. |
| `/camera/color/image_raw`   | `<sensor_msgs::msg::Image>`       | Published by the `orbbec_camera` node. |
| `/camera/depth/camera_info` | `<sensor_msgs::msg::CameraInfo>`  | Published by the `orbbec_camera` node. |
| `/camera/depth/image_raw`   | `<sensor_msgs::msg::Image>`       | Published by the `orbbec_camera` node. |
| `/camera/depth/points`      | `<sensor_msgs::msg::PointCloud2>` | Published by the `orbbec_camera` node. |
| `/camera/gyro_accel/sample` | `<sensor_msgs::msg::Imu>`         | Published by the `orbbec_camera` node. |

## Prerequisites

* You have set up the device, installed ROS2 Jazzy and the Qualcomm Intelligent Robotics (QIR) SDK on the device according to [Install the QIR SDK](./install-the-qir-sdk).

* Connect the USB port of Orbbec Gemini 335L camera.

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

<Steps>
  <Step title="Install the orbbec_camera packages">
    ```bash Install the packages theme={null}
    sudo apt install ros-jazzy-image-transport-plugins
    sudo apt install ros-jazzy-orbbec-camera
    ```
  </Step>

  <Step title="Install udev rules">
    ```bash Install the udev rules theme={null}
    sudo cp /opt/ros/jazzy/share/orbbec_camera/udev/99-obsensor-libusb.rules /etc/udev/rules.d/
    sudo udevadm control --reload-rules && sudo udevadm trigger
    ```
  </Step>

  <Step title="Run the orbbec_camera ROS node in one of three modes, each requiring a new terminal window">
    <CodeGroup>
      ```bash Enable the RGB module theme={null}
       source /opt/ros/jazzy/setup.bash
       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
      ```

      ```bash Enable the depth module theme={null}
      source /opt/ros/jazzy/setup.bash
      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
      ```

      ```bash Enable the IMU module theme={null}
      source /opt/ros/jazzy/setup.bash
      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
      ```
    </CodeGroup>

    If the image frequency doesn't meet the set value, perform a fast DDS optimization:

    a. Perform the steps according to [Fast DDS Optimization](https://orbbec.github.io/OrbbecSDK_ROS2/en/source/camera_devices/5_advanced_guide/performance/fastdds_tuning.html).

    b. Restart the camera.
  </Step>
</Steps>
