# 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.
camera_info
/image
Camera server
Camera hardware
Camera
ROS node
(qrb_ros_camera)
External module
Hardware
Topic
Camera info yaml
ROS node
**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)