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

> A tour of the QRB ROS packages in the QIR SDK: NPU inference, zero-copy camera, colorspace conversion, audio, benchmarking, and sample pipelines on Qualcomm Linux.

**QRB ROS** is Qualcomm's collection of ROS 2 packages and hardware-accelerated nodes for robotics on Qualcomm platforms. On Qualcomm Linux, these packages ship in the robotics image and are documented in the [QIR SDK](/SDKs/QIR-SDK-2.0/qir-sdk-overview). This page is a tour for evaluators and architects: what does Qualcomm plus ROS give you for robotics, and where do you try each piece?

```mermaid theme={null}
flowchart LR
    EVAL(["<b>Qualcomm + ROS</b><br/>for robotics"])
    EVAL --> NPU["<b>NPU inference</b><br/>qrb_ros_nn_inference"]
    EVAL --> ZC["<b>Zero-copy camera</b><br/>qrb_ros_camera · colorspace"]
    EVAL --> VAL["<b>Validation tooling</b><br/>qrb_ros_benchmark"]
    EVAL --> SIM["<b>Robotics samples</b><br/>SLAM · Nav2 · pick-and-place"]

    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="/SDKs/QIR-SDK-2.0/execute-ai-model-inference-with-qrb-ros-nn-inference">
    Run a neural-network model on the Hexagon NPU from a ROS 2 node with `qrb_ros_nn_inference`.
  </Card>

  <Card title="Zero-copy camera" icon="bolt" href="/SDKs/QIR-SDK-2.0/run-a-zero-copy-camera-with-qrb-ros-camera">
    Publish camera frames with zero-copy from the camera server to reduce inter-node latency.
  </Card>

  <Card title="Color space convert" icon="wand-magic-sparkles" href="/SDKs/QIR-SDK-2.0/convert-between-nv-12-and-rgb-888-with-qrb-ros-colorspace-convert">
    Convert between NV12 and RGB888 with `qrb_ros_colorspace_convert`.
  </Card>

  <Card title="Core audio" icon="volume-high" href="/SDKs/QIR-SDK-2.0/enable-core-audio-with-qrb-ros-audio-service">
    Add playback and recording for robotics with `qrb_ros_audio_service`.
  </Card>

  <Card title="Benchmark harness" icon="gauge-high" href="/SDKs/QIR-SDK-2.0/evaluating-performance-of-ros-2-components-with-qrb-ros-benchmark">
    Measure ROS 2 component performance on Qualcomm platforms.
  </Card>

  <Card title="Robotics samples" icon="robot" href="/SDKs/QIR-SDK-2.0/run-robotics-sample-applications">
    AMR motion, SLAM, AprilTag, pick-and-place, and navigation in the simulator.
  </Card>
</CardGroup>

## How this differs from stock ROS 2

* **Hexagon NPU access.** Stock TFLite or ONNX ROS nodes run inference on the CPU or the OpenCL GPU only. Targeting the Hexagon NPU requires the Qualcomm QNN backend, which has no community equivalent. [`qrb_ros_nn_inference`](/SDKs/QIR-SDK-2.0/execute-ai-model-inference-with-qrb-ros-nn-inference) runs models on the NPU from a ROS 2 node.
* **Zero-copy camera sharing.** Stock `image_transport` and `sensor_msgs::Image` serialize and copy the payload between nodes. The QRB ROS transport types pass a DMA-buf file descriptor instead, so the frame the camera ISP wrote stays in place until the next hardware consumer reads it.
* **Packaged, accelerator-correct pipelines.** The QIR SDK [sample applications](/SDKs/QIR-SDK-2.0/qir-sdk-sample-applications) bundle camera ingest, inference, and pre- and post-processing into launch files, so you do not have to wire the plumbing yourself.

## Choosing your level of abstraction

The primitives compose. Pick the level of wiring that fits your goal:

| Level              | What you use                                                      | Where to look                                                                                        |
| ------------------ | ----------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| Generic NPU node   | `qrb_ros_nn_inference` with your own model                        | [Execute AI model inference](/SDKs/QIR-SDK-2.0/execute-ai-model-inference-with-qrb-ros-nn-inference) |
| Platform node      | A single `qrb_ros` node (camera, audio, colorspace, or benchmark) | [Platform sample applications](/SDKs/QIR-SDK-2.0/run-platform-sample-applications)                   |
| Reference pipeline | A complete robotics sample, as-is or lightly modified             | [Robotics sample applications](/SDKs/QIR-SDK-2.0/run-robotics-sample-applications)                   |

All three target the same silicon and can interoperate on the same ROS graph.

## Repositories

The QRB ROS packages are developed in the open at [github.com/qualcomm-qrb-ros](https://github.com/qualcomm-qrb-ros).

| 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 NPU inference ROS node           | BSD-3-Clause |
| [`qrb_ros_samples`](https://github.com/qualcomm-qrb-ros/qrb_ros_samples)                         | AI and robotics sample pipelines         | BSD-3-Clause |
| [`qrb_ros_simulation`](https://github.com/qualcomm-qrb-ros/qrb_ros_simulation)                   | Gazebo simulation of QRB robots          | BSD-3-Clause |
| [`qrb_ros_benchmark`](https://github.com/qualcomm-qrb-ros/qrb_ros_benchmark)                     | `ros2_benchmark` extension for QRB types | BSD-3-Clause |
| [`qrb_ros_color_space_convert`](https://github.com/qualcomm-qrb-ros/qrb_ros_color_space_convert) | NV12 and RGB8 GPU-accelerated converter  | BSD-3-Clause |
| [`qrb_ros_image_resize`](https://github.com/qualcomm-qrb-ros/qrb_ros_image_resize)               | Hardware-accelerated NV12 downscaler     | BSD-3-Clause |

<Note>
  On Qualcomm Linux, the QRB ROS packages are delivered in the robotics image, not installed onto a stock image. The proprietary nodes (camera, video, audio, and colorspace conversion) ship in `qcom-robotics-proprietary-image`. See [Robotics image and overlays](./robotics-image-and-overlays) for how the image is composed.
</Note>

<Note>
  The QRB ROS org also contributes portable upstream packages that work on any Linux SoC with a DMA heap, such as [`dmabuf_transport`](https://github.com/qualcomm-qrb-ros/dmabuf_transport) and [`lib_mem_dmabuf`](https://github.com/qualcomm-qrb-ros/lib_mem_dmabuf). `qrb_ros_transport` is built on top of both, so you do not need to touch them directly.
</Note>
