Skip to main content

SDK 与最小应用

本页说明如何在主机上准备用于构建 reCamera Pro 原生应用的环境,以及完整的构建与部署循环是如何工作的。文中以 Visual Wake and Offline Speech Recognition 项目为示例,这是一个完全在设备上运行的真实 RKNN + GStreamer 应用。

有关通用开发约定(工具链版本、模型格式、编程语言),请参阅 选择开发路径。如果你更希望由 AI 编码代理驱动此工作流,请参阅 使用 AI 编码代理开发。

前置条件​

  • 一台可通过 USB 虚拟以太网(默认 192.168.42.1)或局域网访问的 reCamera Pro(RV1126B,aarch64)
  • 一台 Linux 电脑,或带有 WSL 的 Windows 电脑,用于模型转换和交叉编译
  • 主机上已安装可用的 reCamera Pro SDK
  • RKNN-Toolkit2 2.3.2 和 RKNN Runtime 2.3.2 —— 不要混用任意 RKNN Runtime 版本

配置 SDK 路径​

reCamera Pro 项目中的构建脚本通常通过环境变量定位 SDK。对于 Visual Wake 项目,scripts/build_recamera.sh 会在默认本地路径查找 SDK;请将其指向你自己的 SDK 检出目录:

export RECAMERA_PRO_SDK=/absolute/path/to/recamera-pro-sdk

构建脚本还会验证 librknnrt.so。如果你的 SDK 或 runtime 将其存放在其他位置,请在脚本中将 qualified_rknnrt 路径更新为已验证的 RKNN 2.3.2 runtime,同时保留校验和验证步骤。

获取项目并交叉编译​

克隆项目仓库,并在项目根目录运行其交叉构建脚本:

git clone https://github.com/yyling0101-a11y/recamera_pro_face_stt.git
cd recamera_pro_face_stt
bash scripts/build_recamera.sh

脚本会验证 SDK,加载其构建环境,并生成一个部署包:

build-recamera/deploy/
├── visual_wake_app
├── models/
│ ├── scrfd_500m_640_fp16.rknn
│ ├── pfld_98_112_fp16.rknn
│ └── stt/ # encoder, decoder, joiner, and vocabulary
└── web/dashboard.html

你自己编写的最小应用也遵循相同结构:一个 aarch64 可执行文件、其 RKNN 模型文件,以及任意 Web 或配置资源,全部放在同一个目录中。

部署到设备​

将部署目录中的内容复制到设备上的某个单一目录中,然后通过 SSH 连接并将二进制文件设为可执行:

scp -r build-recamera/deploy/* [email protected]:/userdata/visual-wake/
ssh [email protected]
cd /userdata/visual-wake
chmod +x visual_wake_app
tip

保持 models/ 和 web/ 目录的相对路径不变。应用会使用这些默认相对路径加载其资源。

运行与验证​

从部署目录中运行该应用:

./visual_wake_app

在正常运行期间,可执行的事件会显示在终端中:

VISUAL_WAKE track=1
STT_RESULT 打开灯

使用 --help 可列出所有运行时选项。例如,下面的命令仅验证视觉处理流水线并禁用网络服务:

./visual_wake_app --no-stt --no-rtsp --no-web --debug

成功部署意味着:二进制文件能在设备上启动,加载其 RKNN 模型,打开摄像头,并打印可识别的事件或推理输出。

常见环境问题​

问题可能原因解决方案
构建时找不到 OpenCV 或 RKNNSDK 环境缺失或 runtime 不兼容验证 RECAMERA_PRO_SDK,加载 SDK 的 env.sh,并使用 RKNN 2.3.2
运行时找不到模型文件部署目录结构未被保留确认执行目录中存在 models/ 和 web/
可执行文件是 x86-64使用了主机编译器而非 aarch64 交叉编译器使用与目标兼容的编译器和 reCamera Pro sysroot 重新构建
二进制文件无法加载某个库Sysroot、ABI 或 runtime 搜索路径与开发板不匹配检查 ELF 依赖,并将每个目标库与设备上的库进行对比

后续步骤​

技术支持与产品讨论​

感谢你选择我们的产品!我们将为你提供多种支持,确保你在使用我们产品的过程中尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。

Loading Comments...