NPU inference
Load a
.tflite / .so / .bin model and run it on the Hexagon HTP NPU from a ROS 2 node.Zero-copy transport
DMA-buf fd passing instead of payload memcpy.
Image and PointCloud2 types.Reference samples
Working AI (detection, segmentation, pose, depth) and robotics (Nav2, AprilTag, pick-and-place) pipelines.
Gazebo simulation
Evaluate QRB ROS without buying a board. Pre-built AMR and manipulator configs.
Benchmark harness
Measure zero-copy wins apples-to-apples against stock
sensor_msgs.DDS auto-tuner
LLM-driven FastDDS QoS tuner — works on any ROS 2 setup, no Qualcomm hardware required.
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::Imagealways serialize and memcpy the payload between nodes.qrb_ros_transportpasses 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_samplesbundles 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 — the hand‑rolled depth pipeline |
| Generic NPU node | qrb_ros_nn_inference + your own model from AI Hub | Drop-in QNN inference on any topic |
| Reference pipeline | qrb_ros_samples catalog entry, as‑is or lightly modified | sample_depth_estimation |
Repositories
| Repo | Purpose | License |
|---|---|---|
qrb_ros_transport | Zero-copy ROS 2 transport types | BSD‑3‑Clause |
qrb_ros_nn_inference | Generic QNN inference ROS node | BSD‑3‑Clause |
qrb_ros_samples | AI + robotics sample pipelines | BSD‑3‑Clause |
qrb_ros_simulation | Gazebo sim of QRB AMRs and arms | BSD‑3‑Clause |
qrb_ros_benchmark | ros2_benchmark extension for QRB types | BSD‑3‑Clause |
ROS2-DDSConfig-Optimizer | LLM-driven FastDDS auto-tuner | BSD‑3‑Clause |
qrb_ros_tensor_process | YOLO pre/post-processing nodes | BSD‑3‑Clause |
qrb_ros_color_space_convert | NV12 ↔ RGB8 GPU-accelerated converter | BSD‑3‑Clause |
qrb_ros_image_resize | EVA-accelerated NV12 downscaler | BSD‑3‑Clause |
The QRB ROS org also contributes upstream packages that work on any Linux SoC with a DMA heap —
dmabuf_transport (portable REP 2007 adapted types) and 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.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 documentation instead.
