# Evaluating performance of ROS2 components with `qrb_ros_benchmark`

[qrb_ros_benchmark](https://github.com/qualcomm-qrb-ros/qrb_ros_benchmark) is a benchmarking tool designed for evaluating the performance of ROS components on Qualcomm robotics platforms. It provides reusable components for benchmarking various message types and ROS nodes, with a focus on zero-copy transport mechanisms.

- `qrb_ros_benchmark` builds on [ros2_benchmark](https://github.com/NVIDIA-ISAAC-ROS/ros2_benchmark) and extends it with specialized components for benchmarking QRB ROS transport types, including:
    - - QRB transport types (Image, IMU, PointCloud2)
- DMABuf transport types (Image, PointCloud2)
- Standard ROS message types

Note

For information about the `qrb_ros_benchmark` pipeline flow and the topics it uses, see [ros2_benchmark](https://github.com/NVIDIA-ISAAC-ROS/ros2_benchmark).

## Prerequisites

- You have **Set up the device** according to [Set up the environment for running sample applications](https://docs.qualcomm.com/doc/80-70023-265/topic/quick_start.html#setup-demo-qs).
- Prepare the benchmark scripts for evaluating your custom ROS2 application. For details, see [Creating custom benchmark](https://github.com/NVIDIA-ISAAC-ROS/ros2_benchmark?tab=readme-ov-file#creating-custom-benchmark).

## Run out-of-the-box `qrb_ros_benchmark`

**Steps**

1. Start two terminals, and run the following commands in each terminal to set up QIR SDK and ROS2 environment on the device.

    Value range of `ROS_DOMAIN_ID`: [0, 232]

ssh root@[ip-addr]
        (ssh) mount -o remount,rw /usr
        (ssh) source /usr/share/qirp-setup.sh
        (ssh) export ROS_DOMAIN_ID=xx
        Copy to clipboard
2. In terminal 1, run your custom ROS2 application.

(ssh) ros2 launch my_application.launch.py
        Copy to clipboard
3. In terminal 2, run your benchmark script for evaluating your custom ROS2 application.

(ssh) launch_test my_benchmark_scripts.py
        Copy to clipboard

> 
> 
> The script outputs the evaluation result in your terminal.

## Build and run `qrb_ros_benchmark`

**Steps**

1. Build `qrb_ros_benchmark` provided by the QIR SDK on the host.

cd <qirp_decompressed_workspace>
        source setup.sh
        
        cd qirp-samples/platform/qrb_ros_benchmark
        colcon build --merge-install --cmake-args ${CMAKE_ARGS}
        Copy to clipboard
2. Push `qrb_ros_benchmark` to the device.

cd qirp-samples/platform/qrb_ros_benchmark/install
        tar czvf qrb_ros_benchmark.tar.gz include lib share
        scp qrb_ros_benchmark.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_benchmark.tar.gz -C /usr/
        Copy to clipboard
3. Start two terminals, and run the following commands in each terminal to set up QIR SDK and ROS2 environment on the device.

    Value range of `ROS_DOMAIN_ID`: [0, 232]

ssh root@[ip-addr]
        (ssh) source /usr/share/qirp-setup.sh
        (ssh) export ROS_DOMAIN_ID=xx
        Copy to clipboard
4. In terminal 1, run your custom ROS2 application.

(ssh) ros2 launch my_application.launch.py
        Copy to clipboard
5. In terminal 2, run your benchmark scripts for evaluating your custom ROS2 application.

(ssh) launch_test my_benchmark_scripts.py
        Copy to clipboard

## Limitation

`qrb_ros_benchmark` supports the following ROS2 message types:

- ROS2 standard message type
- QRB transport types (Image, IMU, PointCloud2)
- DMABuf transport types (Image, PointCloud2)

Last Published: Dec 29, 2025

[Previous Topic
Enable core audio with](https://docs.qualcomm.com/bundle/publicresource/80-70023-265/topics/qrb-ros-audio-service.md) [Next Topic
Execute AI model inference with](https://docs.qualcomm.com/bundle/publicresource/80-70023-265/topics/qrb_ros_nn_inference.md)