qrb_ros_samples is a catalog of reference examples that wire QNN inference and — where applicable — zero‑copy transport into ready‑to‑run ROS 2 launch files. The repo is licensed under BSD‑3‑Clause. The main branch is active development; for stable releases track the jazzy-rel branch.
These are starting points and references — not the only supported way to use Qualcomm robotics platforms. The same primitives (the QNN delegate,
qrb_ros_transport, and models from Qualcomm AI Hub) compose directly with stock ROS 2 / community packages. NPU Workflows is an example of that from‑scratch approach, targeting the same NPU.AI samples
Vision and audio pipelines — depth, pose, segmentation, detection, speech recognition. Inference runs on the NPU via QNN.
Robotics samples
AMR motion, 2D lidar SLAM, Nav2, AprilTag, follow-me, pick-and-place. A mix of on-device and Gazebo simulation.
Reading the support matrix
What do the checkboxes mean?
What do the checkboxes mean?
The upstream README does not define a legend for its support columns, and per‑sample READMEs sometimes disagree with the top‑level table. Here is how this page interprets the data:
Every sample listed in this catalog is buildable from source on the Qualcomm Ubuntu image. Samples that are only available through the Qualcomm Linux / QIRP SDK toolchain are excluded.
| Column | Meaning |
|---|---|
| IQ‑9075 / IQ‑8 Beta EVK | = upstream has validated the sample on this kit. = not validated by upstream — this collapses “won’t work” and “merely untested” together. Upstream provides no signal to distinguish them. |
| Accelerator | The primary compute block the sample targets: NPU (Hexagon HTP via QNN), CPU (Gazebo simulation or pure‑CPU pipeline), or GPU. |
AI samples
Rows are ordered by ease of getting started — least additional hardware first.| Sample | Hardware required | Accelerator | IQ‑9075 EVK | IQ‑8 Beta EVK | Description |
|---|---|---|---|---|---|
| Speech recognition (RT rosnode) | USB microphone | NPU | Real‑time speech‑to‑text over USB mic using Whisper‑Tiny‑En. | ||
sample_object_detection | Any compatible CSI/GMSL camera (or USB via v4l2_camera) | NPU | Real‑time object detection via YOLOv8‑Detection. | ||
sample_object_segmentation | Any compatible CSI/GMSL camera (or USB via v4l2_camera) | NPU | Real‑time instance segmentation via YOLOv8‑Segmentation. | ||
sample_resnet101 | Any compatible CSI/GMSL camera (or USB via v4l2_camera) | NPU | Image classification on ImageNet via ResNet101Quantized. | ||
sample_depth_estimation | Any compatible CSI/GMSL camera (or USB via v4l2_camera) | NPU | Per‑pixel depth via Depth Anything V2. | ||
sample_hrnet_pose_estimation | Any compatible CSI/GMSL camera (or USB via v4l2_camera) | NPU | High‑precision human pose estimation via HRNetPose. | ||
| Face detection | Any compatible CSI/GMSL camera (or USB via v4l2_camera) | NPU | Bounding boxes and keypoints using MediaPipe‑Face‑Detection. | ||
| Hand detection | Any compatible CSI/GMSL camera (or USB via v4l2_camera) | NPU | Bounding boxes and pose skeletons using MediaPipe‑Hand‑Detection. |
Want to build an inference pipeline from scratch on the same primitives these samples wrap? See NPU Workflows for a hand‑rolled depth estimation example using the QNN TFLite delegate directly.
Robotics samples
Rows are ordered by ease of getting started — simulation first, then camera-based, then vendor-specific peripherals.| Sample | Hardware required | Accelerator | IQ‑9075 EVK | IQ‑8 Beta EVK | Description |
|---|---|---|---|---|---|
simulation_sample_amr_simple_motion | None (simulation) | CPU (sim) | Python node that commands simple AMR movements by publishing to /qrb_robot_base/cmd_vel. | ||
simulation_sample_pick_and_place | None (simulation) | CPU (sim) | C++ pick‑and‑place with MoveIt2 motion planning and Gazebo physics. | ||
sample_apriltag | Any compatible camera | CPU | AprilTag pipeline — NV12 camera → color convert → rectify → tag detection → /tf. | ||
sample_followme | Orbbec depth camera | NPU | Real‑world AMR that detects, tracks, and follows a moving person. |

