# Run a zero-copy camera with `qrb_ros_camera`
The `qrb_ros_camera` sample application implements a camera ROS2 node to enable zero-copy performance when data is coming out of the camera-server. This sample greatly reduces the latency between ROS nodes.
Note
The Dragonwing IQ-9075 Evaluation Kit only supports these cameras:
>
>
> - ov9282
> - LI-VENUS-OX03F10-96717-120H camera
> - LI-VENUS-OX03F10-OAX40-GM2A-118H camera
## Pipeline flow for `qrb_ros_camera`
The Qualcomm Camera-Server provides camera data that's obtained from the camera sensor. `qrb_ros_camera` uses this camera-server to get the latest camera data.
**Figure : `qrb_ros_camera` pipeline**
## ROS nodes used in the `qrb_ros_camera` pipeline
| ROS node | Description |
| --- | --- |
| CAMERA Copy to clipboard | Publishes the `/image /camera_info` ROS topic. |
## ROS topics used in the `qrb_ros_camera` pipeline
| ROS topic | Message type | Published/Subscribed by | Description |
| --- | --- | --- | --- |
| `/image` | `sensor_msgs::msg::Image` | Published by `camera` | Publishes the NV12 encoded image. |
| `/image_info` | `sensor_msgs::msg::CameraInfo` | Published by `camera` | Publishes the camera information. |
## Prerequisites
You have **Set up the device** according to [Set up the environment for running sample applications](https://docs.qualcomm.com/doc/80-70022-265/topic/quick_start.html#setup-demo-qs).
## Run out-of-the-box `qrb_ros_camera`
**Steps**
1. In terminal 1, run the camera ROS node.
1. Set up the QIR SDK and ROS2 environment on the device.
(ssh) mount -o remount,rw /usr
(ssh) source /usr/share/qirp-setup.sh
(ssh) export ROS_DOMAIN_ID=xx (Value range of ``ROS_DOMAIN_ID``: [0, 232])
Copy to clipboard
2. Run the `qrb_ros_camera` node.
(ssh) ros2 launch qrb_ros_camera qrb_ros_camera_launch.py
Copy to clipboard
2. In terminal 2, get the camera image data.
1. Set up the QIR SDK and ROS2 environment on the device.
ssh root@[ip-addr]
(ssh) source /usr/share/qirp-setup.sh
(ssh) export ROS_DOMAIN_ID=xx
Copy to clipboard
2. Verify the ROS topic.
(ssh) ros2 topic echo /cam0_stream1
Copy to clipboard
## Build and run `qrb_ros_camera`
**Steps**
1. Build `qrb_ros_camera` provided by the QIR SDK on the host.
cd
source setup.sh
cd qirp-samples/platform/qrb_ros_camera
colcon build --merge-install --cmake-args ${CMAKE_ARGS} -DBUILD_TESTING=ON
Copy to clipboard
2. Push `qrb_ros_camera` to the device.
cd qirp-samples/platform/platform/qrb_ros_camera/install
tar czvf qrb_ros_camera.tar.gz lib share include
scp qrb_ros_camera.tar.gz root@[ip-addr]:/opt/
ssh root@[ip-addr]
(ssh) mount -o remount,rw /usr
(ssh) tar --no-overwrite-dir --no-same-owner -zxf /opt/qrb_ros_camera.tar.gz -C /usr/
Copy to clipboard
3. Run `qrb_ros_camera` on the device by referring to [Run out-of-the-box qrb\_ros\_camera](https://docs.qualcomm.com/doc/80-70022-265/topic/qrb-ros-camera.html#case1-ros-camera).
## Limitation
The supported format is NV12 in camera ROS node. Currently, dynamic changes to the image size aren't supported.
Last Published: Nov 05, 2025
[Previous Topic
Run basic OCR with](https://docs.qualcomm.com/bundle/publicresource/80-70022-265/topics/ocr-service_5_2_7.md) [Next Topic
Publish the battery state with](https://docs.qualcomm.com/bundle/publicresource/80-70022-265/topics/qrb-ros-battery.md)