> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# QRB ROS Benchmark

[`qrb_ros_benchmark`](https://github.com/qualcomm-qrb-ros/qrb_ros_benchmark) 扩展了上游的 [`ros2_benchmark`](https://github.com/qualcomm-qrb-ros/ros2_benchmark) 框架，对 QRB 传输类型和 `dmabuf_transport` 类型提供了一等支持——因此您可以将零拷贝带来的收益与标准 `sensor_msgs` 进行**同等条件**的对比测量。

<Note>
  如果您正在为机器人项目评估 Qualcomm，这就是验证性能声明的方法。相同的测试框架、相同的方法论、三种传输类型——选择能告诉您所需信息的那一个。
</Note>

## 它测量什么

该软件包开箱即用地支持对以下内容进行基准测试：

| 传输                                                                         | 类型                                                              |
| -------------------------------------------------------------------------- | --------------------------------------------------------------- |
| [`qrb_ros_transport`](./qrb-ros-transport)                                 | `Image`、`Imu`、`PointCloud2`、`TensorList`                        |
| [`dmabuf_transport`](https://github.com/qualcomm-qrb-ros/dmabuf_transport) | `Image`、`PointCloud2`                                           |
| 标准 ROS                                                                     | `sensor_msgs/Image`、`sensor_msgs/Imu`、`sensor_msgs/PointCloud2` |

这种针对每种类型的支持正是实现同等条件对比的关键——使用相同的生产者和消费者，先对 `sensor_msgs::Image` 再对 `qrb_ros::transport::type::Image` 运行 `ros2_benchmark`，就能将序列化 + memcpy 的开销与其他因素隔离开来。

## 快速开始

<Steps>
  <Step title="在 Qualcomm® IoT 平台的 Ubuntu 上安装">
    ```bash theme={null}
    sudo add-apt-repository ppa:ubuntu-qcom-iot/qcom-ppa
    sudo add-apt-repository ppa:ubuntu-qcom-iot/qirp
    sudo apt update
    sudo apt install ros-jazzy-qrb-ros-benchmark
    ```
  </Step>

  <Step title="运行基准测试">
    用法遵循上游 `ros2_benchmark` 的约定——完整流程请参见[上游 README](https://github.com/qualcomm-qrb-ros/qrb_ros_benchmark#-usage)。典型模式是一个 launch 文件，将待测节点与 `ros2_benchmark` 的数据加载器和监控节点连接起来，再加上一个运行测量流程的 Python 驱动程序。
  </Step>
</Steps>

## 为什么它有帮助

| 替代方案                                  | 简评                                   |
| ------------------------------------- | ------------------------------------ |
| 标准 `ros2_benchmark`（NVIDIA Isaac ROS） | 上游基线；对 QRB 传输类型或 DMA-buf fd 一无所知。    |
| 手工编写的延迟/吞吐量循环                         | 可行，但无法在项目或团队之间共享方法论——每个团队都要重新发明测量方式。 |
| `ros2 topic hz` / `ros2 topic bw`     | 适合抽查，不适合结构化的多轮报告或回归 CI。              |

它以对 QRB 传输类型和 DMA-buf 类型的支持扩展了 `ros2_benchmark`——将零拷贝收益与标准 `sensor_msgs` 进行同等条件的对比测量。它与 [`qrb-ros-dds-optimizer.mdx`](./qrb-ros-dds-optimizer) 自然配合，后者使用 `ros2_benchmark` 作为其测量框架。

## 相关内容

* [`qrb-ros-transport.mdx`](./qrb-ros-transport) — 被测量的传输。
* [`qrb-ros-dds-optimizer.mdx`](./qrb-ros-dds-optimizer) — 使用 `ros2_benchmark` 作为其测量循环，因此您在这里搭建的基准测试也可以驱动 DDS 优化器。
* 上游：[`qualcomm-qrb-ros/qrb_ros_benchmark`](https://github.com/qualcomm-qrb-ros/qrb_ros_benchmark)、[`ros2_benchmark`](https://github.com/qualcomm-qrb-ros/ros2_benchmark)。
