# 使用 QIR SDK 开发应用程序

本信息将指导您使用 QIR SDK 开发自己的机器人和 ROS 应用程序。

`QIR SDK` 安装包不仅提供了开箱即用的 runtime 安装包，还提供了交叉编译工具链。它位于 `<decompressed_workspace>/target/<dev-kit-name>/qirpsdk_artifacts/<dev-kit-name>` 目录中。

例如，`qcs6490-rb3gen2-vision-kit` 交叉编译工具链位于：

<decompressed_workspace>/target/qcs6490-rb3gen2-vision-kit/qirpsdk_artifacts/qcs6490-rb3gen2-vision-kit
    Copy to clipboard

以下是该工具链的目录结构和说明：

tree qirp-sdk -L 1
    ├── runtime
    ├── setup.sh
    ├── sample-code
    └── toolchain
    Copy to clipboard

| 名称 | 说明 |
| --- | --- |
| `runtime` | 此目录包含执行使用 QIR SDK 开发的应用程序所需的 run-time 环境。它通常包括支持在目标平台上运行应用程序的库和二进制文件。 |
| `setup.sh` | 此 shell 脚本设置了 QIR SDK 的开发环境。运行此脚本通常会配置必要的环境变量和路径，以确保 SDK 的库在应用程序开发和编译时能够正确访问。 |
| `sample-code` | 此目录包含 QIR SDK 提供的示例应用程序和代码片段。 |
| `toolchain` | 此目录包含交叉编译工具链QIR SDK 的一部分。该工具链包括编译器、链接器以及为目标平台编译应用程序所需的其他实用程序。该工具链使开发者能够在开发机器（主机）上编译应用程序，以便在目标设备（目标）上执行。 |

## 开发示例 ROS2 应用程序

以下示例提供了使用 QIR SDK 开发 ROS 应用程序的一般过程，使用GitHub 上的 ROS2 演示程序作为范例。

### 将预编译的 `QIR SDK` 安装到主机

在主机上，导航到 artifact 目录，并使用 `tar` 命令解压 `QIR SDK`：

> 
> 
> cd <decompressed_workspace>/target/qcs6490-rb3gen2-vision-kit/qirpsdk_artifacts/qcs6490-rb3gen2-vision-kit
>     tar -zxvf qirp-sdk_<qirp_version>.tar.gz
>     Copy to clipboard
> 
> 
> 此命令将生成 `qirp-sdk` 目录。

Note

`qirp-sdk_<qirp_version>.tar.gz` 位于 QIR artifact 的部署路径中。`<qirp_version>` 会随着每个版本的发布而变化，例如 2.0.0、2.0.1。例如，完整的软件包名称可以是 `qirp-sdk_2.3.0.tar.gz`.有关所有已发布版本，请参阅 [Qualcomm® Intelligent Robotics SDK (QIR SDK) 2.0 发布说明](https://docs.qualcomm.com/bundle/publicresource/topics/80-75695-1)。

### 使用 QIR SDK 开发应用程序

1. 搭建交叉编译环境。

cd <decompressed_workspace>/target/qcs6490-rb3gen2-vision-kit/qirpsdk_artifacts/qcs6490-rb3gen2-vision-kit/qirp-sdk
        source setup.sh
        Copy to clipboard
2. 获取项目作为代码基准。

git clone https://github.com/ros2/demos.git -b jazzy
        Copy to clipboard
3. 使用 C++ 或 Python 开发您自己的应用程序。

Tab 使用 C++ 开发 ROS 应用程序
Tab 使用 Python 开发 ROS 应用程序

1. 开发用户自己的应用程序。以下是一个示例。

cd demos/demo_nodes_cpp
            vim src/topics/talker.cpp +46
            Copy to clipboard

        更改 `demo_nodes_cpp/src/topics/talker.cpp` 中第 46 行的 msg 数据：

msg_->data = "Hello World : Qualcomm : " + std::to_string(count_++);
            Copy to clipboard
    2. 设置必要的环境变量并使用 colcon 工具编译 ROS2 包 demo\_nodes\_cpp 及其依赖项。

colcon build --merge-install --packages-up-to demo_nodes_cpp --cmake-args ${CMAKE_ARGS}
            Copy to clipboard
    3. 将演示推送到设备。

cd demo_nodes_cpp/install
            tar -czvf demo_nodes_cpp.tar.gz lib share
            scp demo_nodes_cpp.tar.gz root@[ip-addr]:/opt/
            ssh root@[ip-addr]
            (ssh) mount -o remount,rw /usr
            (ssh) tar -zxf /opt/demo_nodes_cpp.tar.gz -C /usr/
            Copy to clipboard
    4. 在设备上运行演示程序。

(ssh) source /usr/share/qirp-setup.sh
            (ssh) ros2 run demo_nodes_cpp talker
            
            open a new terminal, and run the following commands:
            (ssh) source /usr/share/qirp-setup.sh
            (ssh) ros2 run demo_nodes_cpp listener
            Copy to clipboard
    5. 检查输出。

The terminal 1 output is as follows:
            [INFO] [1739864779.759719598] [talker]: Publishing: 'Hello World : Qualcomm : 1'
            [INFO] [1739864780.759687179] [talker]: Publishing: 'Hello World : Qualcomm : 2'
            [INFO] [1739864781.760812014] [talker]: Publishing: 'Hello World : Qualcomm : 3'
            ...
            
            The terminal 2 output is as follows:
            
            [INFO] [1739864779.760348380] [listener]: I heard: [Hello World : Qualcomm : 1]
            [INFO] [1739864780.760276535] [listener]: I heard: [Hello World : Qualcomm : 2]
            [INFO] [1739864781.762066296] [listener]: I heard: [Hello World : Qualcomm : 3]
            ...
            Copy to clipboard

1. 开发用户自己的应用程序。以下是一个示例。

cd demos/demo_nodes_py
            vim demo_nodes_py/topics/talker.py +33
            Copy to clipboard

        更改 `demo_nodes_py/topics/talker.py` 中第 33 行的 msg 数据：

msg.data = 'Hello World : Qualcomm : {0}'.format(self.i)
            Copy to clipboard
    2. 设置必要的环境变量，并使用 colcon 工具编译 ROS 2 软件包 demo\_nodes\_py 及其依赖项。

colcon build --merge-install --packages-up-to demo_nodes_py
            Copy to clipboard
    3. 将演示推送到设备。

cd demo_nodes_py/install
            tar -czvf demo_nodes_py.tar.gz lib share
            scp demo_nodes_py.tar.gz root@[ip-addr]:/opt/
            ssh root@[ip-addr]
            (ssh) mount -o remount,rw /usr
            (ssh) tar -zxf /opt/demo_nodes_py.tar.gz -C /usr/
            Copy to clipboard
    4. 在设备上运行演示程序。

(ssh) export HOME=/home
            (ssh) source /usr/bin/ros_setup.sh && source /usr/share/qirp-setup.sh
            (ssh) ros2 run demo_nodes_py talker
            
            open a new terminal, and run the following commands:
            (ssh) export HOME=/home
            (ssh) source /usr/bin/ros_setup.sh && source /usr/share/qirp-setup.sh
            (ssh) ros2 run demo_nodes_py listener
            Copy to clipboard
    5. 检查输出。

The terminal 1 output is as follows:
            [INFO] [1739864779.759719598] [talker]: Publishing: 'Hello World : Qualcomm : 1'
            [INFO] [1739864780.759687179] [talker]: Publishing: 'Hello World : Qualcomm : 2'
            [INFO] [1739864781.760812014] [talker]: Publishing: 'Hello World : Qualcomm : 3'
            ...
            
            The terminal 2 output is as follows:
            
            [INFO] [1739864779.760348380] [listener]: I heard: [Hello World : Qualcomm : 1]
            [INFO] [1739864780.760276535] [listener]: I heard: [Hello World : Qualcomm : 2]
            [INFO] [1739864781.762066296] [listener]: I heard: [Hello World : Qualcomm : 3]
            ...
            Copy to clipboard

Last Published: Oct 13, 2025

[Previous Topic
Orbbec-camera](https://docs.qualcomm.com/bundle/publicresource/80-70020-265Y/topics/orbbec-camera_5_2_8.md) [Next Topic
可选的开发者工作流](https://docs.qualcomm.com/bundle/publicresource/80-70020-265Y/topics/optional-workflows.md)