> ## 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.

# QRB ROS Ecosystem

**QRB ROS** is Qualcomm's upstream collection of ROS 2 Jazzy packages for robotics platforms — currently the Qualcomm Dragonwing™ IQ‑9075 EVK and IQ‑8 (Beta) EVK. This page is a tour for evaluators and architects: *what does Qualcomm + ROS give you for robotics, and how do I try each piece?*

```mermaid theme={null}
flowchart LR
    EVAL(["<b>Qualcomm + ROS</b><br/>for robotics"])
    EVAL --> NPU["<b>NPU inference</b><br/>samples · nn_inference · npu-workflows"]
    EVAL --> ZC["<b>Zero-copy data plane</b><br/>qrb_ros_transport"]
    EVAL --> VAL["<b>Validation tooling</b><br/>benchmark · DDS optimizer"]
    EVAL --> SIM["<b>Try without hardware</b><br/>qrb_ros_simulation"]

    classDef hero fill:#31017D,stroke:#31017D,color:#fff,stroke-width:1.5px;
    classDef pkg fill:#F4EFFA,stroke:#31017D,color:#31017D,stroke-width:1.5px;
    class EVAL hero;
    class NPU,ZC,VAL,SIM pkg;
```

<CardGroup cols={2}>
  <Card title="NPU inference" icon="brain" href="./qrb-ros-nn-inference">
    Load a `.tflite` / `.so` / `.bin` model and run it on the Hexagon HTP NPU from a ROS 2 node.
  </Card>

  <Card title="Zero-copy transport" icon="bolt" href="./qrb-ros-transport">
    DMA-buf fd passing instead of payload memcpy. `Image` and `PointCloud2` types.
  </Card>

  <Card title="Reference samples" icon="cubes" href="./qrb-ros-samples">
    Working AI (detection, segmentation, pose, depth) and robotics (Nav2, AprilTag, pick-and-place) pipelines.
  </Card>

  <Card title="Gazebo simulation" icon="computer" href="./qrb-ros-simulation">
    Evaluate QRB ROS without buying a board. Pre-built AMR and manipulator configs.
  </Card>

  <Card title="Benchmark harness" icon="gauge-high" href="./qrb-ros-benchmark">
    Measure zero-copy wins apples-to-apples against stock `sensor_msgs`.
  </Card>

  <Card title="DDS auto-tuner" icon="wand-magic-sparkles" href="./qrb-ros-dds-optimizer">
    LLM-driven FastDDS QoS tuner — works on any ROS 2 setup, no Qualcomm hardware required.
  </Card>
</CardGroup>

## How this differs from stock ROS 2

* **Hexagon HTP NPU access.** Stock TFLite / ONNX ROS nodes run inference on CPU or OpenCL GPU only. Targeting the HTP NPU requires the Qualcomm **QNN delegate** (or QNN SDK) — there is no community equivalent.
* **DMA-buf camera sharing.** Stock `image_transport` + `sensor_msgs::Image` always serialize and memcpy the payload between nodes. [`qrb_ros_transport`](./qrb-ros-transport) passes a DMA-buf file descriptor instead, so the frame the camera ISP wrote stays where it was until the next hardware consumer reads it.
* **Packaged accelerator-correct pipelines.** [`qrb_ros_samples`](./qrb-ros-samples) bundles camera ingest, QNN inference, and pre/post‑processing into launch files so you don't have to wire the plumbing yourself.

## Choosing your level of abstraction

You don't have to pick "QRB samples" or "stock ROS" — the primitives compose. Pick the level of wiring that fits your goal:

| Level                  | What you use                                                                    | Example in this section                                                                                                      |
| ---------------------- | ------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| **From scratch**       | QNN delegate + stock ROS 2 packages + AI Hub model, wired yourself              | [NPU Workflows](./npu-workflows) — the hand‑rolled depth pipeline                                                            |
| **Generic NPU node**   | [`qrb_ros_nn_inference`](./qrb-ros-nn-inference) + your own model from AI Hub   | Drop-in QNN inference on any topic                                                                                           |
| **Reference pipeline** | [`qrb_ros_samples`](./qrb-ros-samples) catalog entry, as‑is or lightly modified | [`sample_depth_estimation`](https://github.com/qualcomm-qrb-ros/qrb_ros_samples/tree/main/ai_vision/sample_depth_estimation) |

All three are valid production paths. They target the same silicon and can interoperate on the same ROS graph.

## Repositories

| Repo                                                                                             | Purpose                                  | License      |
| ------------------------------------------------------------------------------------------------ | ---------------------------------------- | ------------ |
| [`qrb_ros_transport`](https://github.com/qualcomm-qrb-ros/qrb_ros_transport)                     | Zero-copy ROS 2 transport types          | BSD‑3‑Clause |
| [`qrb_ros_nn_inference`](https://github.com/qualcomm-qrb-ros/qrb_ros_nn_inference)               | Generic QNN inference ROS node           | BSD‑3‑Clause |
| [`qrb_ros_samples`](https://github.com/qualcomm-qrb-ros/qrb_ros_samples)                         | AI + robotics sample pipelines           | BSD‑3‑Clause |
| [`qrb_ros_simulation`](https://github.com/qualcomm-qrb-ros/qrb_ros_simulation)                   | Gazebo sim of QRB AMRs and arms          | BSD‑3‑Clause |
| [`qrb_ros_benchmark`](https://github.com/qualcomm-qrb-ros/qrb_ros_benchmark)                     | `ros2_benchmark` extension for QRB types | BSD‑3‑Clause |
| [`ROS2-DDSConfig-Optimizer`](https://github.com/qualcomm-qrb-ros/ROS2-DDSConfig-Optimizer)       | LLM-driven FastDDS auto-tuner            | BSD‑3‑Clause |
| [`qrb_ros_tensor_process`](https://github.com/qualcomm-qrb-ros/qrb_ros_tensor_process)           | YOLO pre/post-processing nodes           | BSD‑3‑Clause |
| [`qrb_ros_color_space_convert`](https://github.com/qualcomm-qrb-ros/qrb_ros_color_space_convert) | NV12 ↔ RGB8 GPU-accelerated converter    | BSD‑3‑Clause |
| [`qrb_ros_image_resize`](https://github.com/qualcomm-qrb-ros/qrb_ros_image_resize)               | EVA-accelerated NV12 downscaler          | BSD‑3‑Clause |

The full org is at [github.com/qualcomm-qrb-ros](https://github.com/qualcomm-qrb-ros) — it includes additional packages tied to specific robot chassis, sensor subsystems, or device services that aren't highlighted here.

<Note>
  The QRB ROS org also contributes upstream packages that work on any Linux SoC with a DMA heap — [`dmabuf_transport`](https://github.com/qualcomm-qrb-ros/dmabuf_transport) (portable REP 2007 adapted types) and [`lib_mem_dmabuf`](https://github.com/qualcomm-qrb-ros/lib_mem_dmabuf) (userspace DMA-buf helper). `qrb_ros_transport` is built on top of both, so you don't need to touch them directly — the pointers are here for readers who want the full stack.
</Note>

<Note>
  QRB ROS targets **Qualcomm Ubuntu for IoT** with **ROS 2 Jazzy**. The packages are distributed through the Qualcomm IoT PPAs (`ppa:ubuntu-qcom-iot/qcom-ppa` and `ppa:ubuntu-qcom-iot/qirp`). For Qualcomm Linux, refer to the [QIRP SDK](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-265/introduction_1.html?vproduct=1601111740013072\&version=1.4\&facet=Qualcomm%20Intelligent%20Robotics%20Product%20\(QIRP\)%20SDK) documentation instead.
</Note>
