# 开发机器人应用程序

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

**前提条件：**

- **所有情况下都需要**

    您已按照[使用 SSH 登录](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-254/how_to.html#use-ssh)中提到的步骤在“Permissive”模式下启用了 `SSH`。
- **使用预编译包时需要**

    - 预编译的机器人镜像已刷新，请参阅[刷写和安装](https://docs.qualcomm.com/doc/80-70018-265Y/topic/flash-and-install_4_3.html#flash-and-install-4-3)。
    - 已下载预编译的 QIRP SDK。

**步骤：**

1. 搭建交叉编译环境。

cd <qirp_decompressed_workspace>/qirp-sdk
        source setup.sh
        Copy to clipboard
2. 获取项目并编写您自己的代码。

    1. 从 GitHub 获取项目。

git clone https://github.com/ros2/demos.git -b jazzy
            cd demos/demo_nodes_cpp
            vim src/topics/talker.cpp
            Copy to clipboard
    2. 开发用户自己的应用程序。以下为示例。

        更改第46行 `demo_nodes_cpp/src/topics/talker.cpp` 消息数据，例如将 “Hello world” 更改为 “get message success”：

46:msg_->data = "get message success " + std::to_string(count_++);
            Copy to clipboard
3. 编译应用程序。

colcon build --merge-install --cmake-args \
         -DPython3_NumPy_INCLUDE_DIR=${OECORE_TARGET_SYSROOT}/usr/lib/python3.10/site-packages/numpy/core/include \
         -DCMAKE_STAGING_PREFIX=$(pwd)/install \
         -DCMAKE_PREFIX_PATH=$(pwd)/install/share \
         -DBUILD_TESTING=OFF \
         --packages-up-to demo_nodes_cpp
        Copy to clipboard
4. 将演示推送到设备。

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 --no-same-owner -zxf /opt/demo_nodes_cpp.tar.gz -C /usr/
        Copy to clipboard
5. 在设备上运行演示程序。

(ssh) export HOME=/opt
        (ssh) source /usr/bin/ros_setup.sh && source /usr/share/qirp-setup.sh
        (ssh shell 1) ros2 run demo_nodes_cpp talker
        (ssh shell 2) ros2 run demo_nodes_cpp listener
        Copy to clipboard

Last Published: May 12, 2025

[Previous Topic
刷写和安装](https://docs.qualcomm.com/bundle/publicresource/80-70018-265Y/topics/flash-and-install_4_3.md) [Next Topic
QIRP SDK 示例应用程序](https://docs.qualcomm.com/bundle/publicresource/80-70018-265Y/topics/qirp-sdk-sample-applications_5.md)