- 支持并发多路流输出。
- 支持可组合 ROS 节点。
- 由 QRB ROS Transport 提供支持的零拷贝传输。
- 仅支持 NV12 作为输出格式,受 Camera Service 限制。
qrb_ros_camera 的管道流程
下图展示了 qrb_ros_camera 的管道流程。
qrb_ros_camera 管道。
qrb_ros_transport 创建了一个用于零拷贝传输的图像发布者。它支持节点组合,能够使用 ROS 进程内通信提升性能。
qrb_camera 是一个 C++ 库。它为 qrb_ros_camera 提供 API 以从下层的 Camera Service 和 CamX 库查询图像。
它包括 2 个模块:
-
camera_manager模块管理摄像头流,实现多流支持。 -
camera_client模块调用 Camera Service API 来管理摄像头流。
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。
构建并运行 qrb_ros_camera
1
安装依赖
Install the dependencies
2
将仓库克隆到设备上
Download the source code
3
构建并运行 qrb_ros_camera
Build and launch

