信息为什么需要使用 QIR SDK 来开发流水线应用?常规开发流程需要丰富的摄像头开发经验和扎实的硬件知识来编写摄像头相关代码并处理图像格式转换,而使用 QIR SDK 可节省时间和精力。以下是常规开发流程(不使用 QIR SDK)与使用 QIR SDK 的对比。
- 使用 QIR SDK:编写一个 launch 文件将现有节点组合成流水线。
- 不使用 QIR SDK:自己编写摄像头相关代码或处理图像格式转换。
流水线应用工作流
要编写流水线应用,你需要遵循以下工作流:- 定义应用的目标。
- 检查 QIR SDK 提供的可用 API。
- 决定流水线。
定义目标
开发一个从设备内置摄像头捕获图像并以 RGB888 格式发布到 ROS 2 topic 的示例。检查 API
- 检查 QIR SDK 提供的 API,参见 QIR SDK API 列表。首先发现 qrb_ros_camera 能够从设备内置摄像头捕获数据并将其发布到
/cam0_stream1topic。但是,此 topic 默认使用 NV12 编码格式,而应用需要 RGB888 格式。 - 分析其他可能有用的 API。由于 qrb_ros_camera 不输出所需格式的图像,进一步检查发现以下匹配的 ROS 节点:qrb_ros_colorspace_convert 能够将图像编码从 NV12 转换为 RGB888。
- 找出实现的关键点。
qrb_ros_camera发布到/cam0_stream1topic,但qrb_ros_colorspace_convert的输入是/image_raw。因此,示例应用需要通过额外处理来处理这个冲突。
决定流水线
以下信息详细分析了流水线应用需求作为示例解决方案。 流水线流程 根据分析,此示例使用以下流水线流程:- 从 qrb_ros_camera 捕获图像并将其发布到
/cam0_stream1topic。 - 使用 qrb_ros_colorspace_convert 将图像从 NV12 转换为 RGB888 格式,并将 RGB888 格式的图像发布到
/imagetopic。
示例实现
以下步骤引导你使用 QIR SDK 基于示例解决方案编写流水线并在设备上运行,以 Qualcomm Dragonwing™ IQ-9075 Evaluation Kit 为例(参见 QIR SDK 快速入门)。设置交叉编译环境
在主机计算机上,进入制品目录并解压 QIR SDK 包:注意QIR SDK 支持在这些 Qualcomm Linux 开发套件上开发流水线应用:
导入示例项目
此示例使用 QIR SDK 包中提供的模板项目来开发流水线。此模板帮助你快速创建基于 Python 的 ROS 2 包。注意或者,你可以在 IQ-9075 设备上使用
ros2 pkg create --build-type ament_python --license Apache-2.0 <pkg-name> --dependencies [deps] 创建一个包,然后将其推送到已在环境中安装 QIR SDK 的主机。自定义 launch 文件
编写 launch 文件-
创建实现以下步骤的 launch 文件。此示例使用两个节点
qrb_ros_camera和qrb_ros_colorspace_convert。它将qrb_ros_camera的/cam0_stream1topic 重映射到/image_rawtopic,然后使用qrb_ros_colorspace_convert将 RGB888 格式的图像发布到/imagetopic。注意有关如何编写 launch 文件的信息,请参见 ROS 2 documentation — Creating a launch file。rgb8_image_publisher_launch.py
-
更新
setup.py文件。setup.py
构建和部署
现在你可以编译该包并将其部署到设备。ros2 launch 命令启动新的流水线,并看到摄像头数据被转换为 RGB888 格式并发布到 /image topic。
后续步骤
要构建更高级的应用:- 使用其他 QIR API,例如传感器数据流、诊断或控制接口。
- 组合多个模块以创建混合应用(例如,自主导航 + 健康监控)。
- 学习如何使用 QIR SDK 开发 AI 流水线应用。参见 QIR SDK 示例应用。
- 查看 QIR SDK API 列表 以获取可用 API 的完整列表。

