Version
4.5. 压缩图像
OrbbecSDK ROS2 支持通过 image_transport 发布压缩图像话题。常用场景包括降低网络传输带宽、远程查看图像,以及在 color_format:=MJPG 时直接订阅压缩彩色图像以降低主机端解码开销。
4.5.1. 相关启动参数
压缩图像由以下 launch 参数控制:
| 参数 | 默认值 | 说明 |
|---|---|---|
color.image_raw.enable_pub_plugins |
["image_transport/compressed", "image_transport/raw", "image_transport/theora"] |
彩色图像发布插件。 |
depth.image_raw.enable_pub_plugins |
["image_transport/compressedDepth", "image_transport/raw"] |
深度图像发布插件。 |
left_ir.image_raw.enable_pub_plugins |
["image_transport/compressed", "image_transport/raw", "image_transport/theora"] |
左红外图像发布插件。 |
right_ir.image_raw.enable_pub_plugins |
["image_transport/compressed", "image_transport/raw", "image_transport/theora"] |
右红外图像发布插件。 |
如果只需要压缩彩色图像,可以在启动命令中保留 compressed 和 raw 插件,例如:
ros2 launch orbbec_camera gemini_330_series.launch.py \
color.image_raw.enable_pub_plugins:='["image_transport/compressed", "image_transport/raw"]'
如果只需要原始图像,可以只保留 raw 插件,例如:
ros2 launch orbbec_camera gemini_330_series.launch.py \
color.image_raw.enable_pub_plugins:='["image_transport/raw"]'
4.5.2. 常用压缩图像话题
默认相机命名空间为 /camera。如果启动时修改了 camera_name,请将下面话题中的 /camera 替换为实际命名空间。
| 数据流 | 压缩图像话题 |
|---|---|
| 彩色图像 | /camera/color/image_raw/compressed |
| 深度图像 | /camera/depth/image_raw/compressedDepth |
| 左红外图像 | /camera/left_ir/image_raw/compressed |
| 右红外图像 | /camera/right_ir/image_raw/compressed |
查看压缩彩色图像消息:
ros2 topic echo /camera/color/image_raw/compressed --no-arr
查看压缩深度图像消息:
ros2 topic echo /camera/depth/image_raw/compressedDepth --no-arr
4.5.3. color_format:=MJPG 场景
当彩色流使用 color_format:=MJPG 时,ROS wrapper 会直接发布 /camera/color/image_raw/compressed,订阅该话题可以避免在主机侧额外解码 MJPG 图像,通常能降低 CPU 占用。
ros2 launch orbbec_camera gemini_330_series.launch.py color_format:=MJPG
此时建议订阅:
ros2 topic echo /camera/color/image_raw/compressed --no-arr
如果订阅 /camera/color/image_raw,MJPG 图像仍需要在主机侧解码,CPU 占用会更高。更多低 CPU 配置建议请参考 降低 CPU 使用率。
4.5.4. 排查方法
如果没有看到压缩图像话题,请先检查话题列表:
ros2 topic list | grep image_raw
然后确认对应的 *.image_raw.enable_pub_plugins 参数没有被改为只启用 raw,并确认系统已安装 image_transport 相关插件。