Skip to main content
qrb_ros_camera 是一个 ROS 包,用于发布来自 Qualcomm CSI 和 GMSL 摄像头的图像。它提供以下功能:
  • 支持并发多路流输出。
  • 支持可组合 ROS 节点。
  • 由 QRB ROS Transport 提供支持的零拷贝传输。
  • 仅支持 NV12 作为输出格式,受 Camera Service 限制。

qrb_ros_camera 的管道流程

下图展示了 qrb_ros_camera 的管道流程。
Camera hardware and a camera info YAML file feeding the qrb_ros_camera ROS node through the camera server, which publishes two output topics.

qrb_ros_camera 管道。

qrb_ros_camera 是一个 ROS 2 包。它使用 qrb_ros_transport 创建了一个用于零拷贝传输的图像发布者。它支持节点组合,能够使用 ROS 进程内通信提升性能。 qrb_camera 是一个 C++ 库。它为 qrb_ros_camera 提供 API 以从下层的 Camera Service 和 CamX 库查询图像。 它包括 2 个模块:
  • camera_manager 模块管理摄像头流,实现多流支持。
  • camera_client 模块调用 Camera Service API 来管理摄像头流。
qrb_ros_transport 是一个 ROS 2 包,使用 Linux DMA 缓冲区支持零拷贝图像传输,并实现 ROS 类型适配。它与进程内和进程间通信都兼容。 Camera Service 是 Qualcomm 的多媒体框架。它导出用于访问 Qualcomm 多媒体硬件的 API。 CamX 为 Qualcomm 驱动的设备上的图像捕获、处理和管理提供基础。

qrb_ros_camera ROS 接口和参数

qrb_ros_camera 节点公开了 ROS 接口和 ROS 参数。使用它们订阅所发布的图像话题并配置摄像头流。

ROS 接口

下表描述了 qrb_ros_camera 提供的 ROS 接口。

ROS 参数

下表描述了 qrb_ros_camera 的 ROS 参数。

qrb_ros_camera 库 API

下表描述了 qrb_ros_camera 调用的 qrb_camera C++ 库函数。

前提条件

你已根据安装 QIR SDK完成设备设置,并在设备上安装了 ROS2 Jazzy 和 Qualcomm Intelligent Robotics (QIR) SDK。

开箱即用运行 qrb_ros_camera

1

安装 qrb_ros_camera 包

Install the packages
2

使用摄像头节点

Launch the camera node
3

在 RVIZ 或 RQT 中通过话题 /cam${camera_id}_${stream_name} 检查 ROS 话题或查看图像

4

启用多路流

通过使用 stream_size 和 stream_name 参数,你可以在启动文件中为一个摄像头配置多路流,例如 /opt/ros/jazzy/share/qrb_ros_camera/launch/qrb_ros_camera_launch.py。
qrb_ros_camera_launch.py
5

启用零拷贝传输

qrb_ros_camera 支持在节点之间直接共享图像 dmabuf_fd,从而可避免通过 DDS 的图像数据内存拷贝。
有关此特性的详细信息,请参阅 ROS documentation。
以下是一个使用 launch(推荐)组合多个节点的示例。

构建并运行 qrb_ros_camera

1

安装依赖

Install the dependencies
2

将仓库克隆到设备上

Download the source code
3

构建并运行 qrb_ros_camera

Build and launch