平台使用RDK X5,RDK GS130W(I)官方双目全局快门相机

root@ubuntu:/userdata# ll /sys/bus/iio/devices/
total 0
drwxr-xr-x 2 root root 0 Jun 4 2025 ./
drwxr-xr-x 4 root root 0 Jun 4 2025 ../
lrwxrwxrwx 1 root root 0 Jun 4 2025 iio:device0 → ../../../devices/platform/soc/34000000.a55_apb0/34190000.adc/iio:device0/
lrwxrwxrwx 1 root root 0 Apr 20 17:02 iio:device1 → ../../../devices/platform/soc/34000000.a55_apb0/341d0000.i2c/i2c-6/6-0068/iio:device1/
lrwxrwxrwx 1 root root 0 Apr 20 17:02 iio:device2 → ../../../devices/platform/soc/34000000.a55_apb0/341d0000.i2c/i2c-6/6-0068/iio:device2/
lrwxrwxrwx 1 root root 0 Jun 4 2025 trigger0 → ../../../devices/platform/soc/34000000.a55_apb0/34190000.adc/trigger0/
root@ubuntu:/userdata#
root@ubuntu:/userdata#
root@ubuntu:/userdata# ros2 launch hobot_stereonet codec_web_visual.launch.py codec_sub_topic:=/image_combine_raw
codec_in_format:=nv12
[INFO] [launch]: All log files can be found below /root/.ros/log/2026-04-20-17-37-12-312880-ubuntu-8131
[INFO] [launch]: Default logging verbosity is set to INFO
Hobot shm pkg enables zero-copy with fastrtps profiles file: /opt/tros/humble/lib/hobot_shm/config/shm_fastdds.xml
Hobot shm pkg sets RMW_FASTRTPS_USE_QOS_FROM_XML: 1
webserver has launch
env of RMW_FASTRTPS_USE_QOS_FROM_XML is 1 , ignore env setting
env of RMW_FASTRTPS_USE_QOS_FROM_XML is 1 , ignore env setting
webserver has launch
[INFO] [hobot_codec_republish-1]: process started with pid [8134]
[INFO] [websocket-2]: process started with pid [8136]
[hobot_codec_republish-1] [WARN] [1776677832.749595665] [hobot_codec_encoder]: Parameters:
[hobot_codec_republish-1] sub_topic: /image_combine_raw
[hobot_codec_republish-1] pub_topic: /image_jpeg
[hobot_codec_republish-1] channel: 1
[hobot_codec_republish-1] in_mode: ros
[hobot_codec_republish-1] out_mode: ros
[hobot_codec_republish-1] in_format: bgr8
[hobot_codec_republish-1] out_format: jpeg
[hobot_codec_republish-1] jpg_quality: 60.00
[hobot_codec_republish-1] input_framerate: 30
[hobot_codec_republish-1] output_framerate: -1
[hobot_codec_republish-1] dump_output: false
[hobot_codec_republish-1] dump_file_prefix: ./dump_codec_output
[hobot_codec_republish-1] dump_frame_count: -1 (unlimited)
[hobot_codec_republish-1] [WARN] [1776677832.755793143] [HobotCodecImpl]: platform x5
[hobot_codec_republish-1] [WARN] [1776677832.823147120] [hobot_codec_encoder]: [in_ros_topic_cb]->infmt err bgr8-nv12
[hobot_codec_republish-1] [WARN] [1776677832.829642345] [hobot_codec_encoder]: [in_ros_topic_cb]->infmt err bgr8-nv12
[hobot_codec_republish-1] [WARN] [1776677832.837511264] [hobot_codec_encoder]: [in_ros_topic_cb]->infmt err bgr8-nv12
[hobot_codec_republish-1] [WARN] [1776677832.842555837] [hobot_codec_encoder]: [in_ros_topic_cb]->infmt err bgr8-nv12
[hobot_codec_republish-1] [WARN] [1776677832.849792972] [hobot_codec_encoder]: [in_ros_topic_cb]->infmt err bgr8-nv12
[hobot_codec_republish-1] [WARN] [1776677832.867119086] [hobot_codec_encoder]: [in_ros_topic_cb]->infmt err bgr8-nv12
[hobot_codec_republish-1] [WARN] [1776677832.894547721] [hobot_codec_encoder]: [in_ros_topic_cb]->infmt err bgr8-nv12
[hobot_codec_republish-1] [WARN] [1776677832.931859631] [hobot_codec_encoder]: [in_ros_topic_cb]->infmt err bgr8-nv12
[hobot_codec_republish-1] [WARN] [1776677832.969321122] [hobot_codec_encoder]: [in_ros_topic_cb]->infmt err bgr8-nv12
[hobot_codec_republish-1] [WARN] [1776677833.007039277] [hobot_codec_encoder]: [in_ros_topic_cb]->infmt err bgr8-nv12
[hobot_codec_republish-1] [WARN] [1776677833.034008042] [hobot_codec_encoder]: [in_ros_topic_cb]->infmt err bgr8-nv12
[hobot_codec_republish-1] [WARN] [1776677833.061311512] [hobot_codec_encoder]: [in_ros_topic_cb]->infmt err bgr8-nv12
[hobot_codec_republish-1] [WARN] [1776677833.100314778] [hobot_codec_encoder]: [in_ros_topic_cb]->infmt err bgr8-nv12
[hobot_codec_republish-1] [WARN] [1776677833.138445929] [hobot_codec_encoder]: [in_ros_topic_cb]->infmt err bgr8-nv12
无法正常显示图像

问题分析

从你的日志可以看到核心错误:

[in_ros_topic_cb]->infmt err bgr8-nv12

结论:图像格式不匹配hobot_codec_republish 节点期望输入格式是 nv12,但你订阅的 /image_combine_raw 话题实际发布的是 bgr8 格式。

解决方案

方案一:修改启动参数(推荐)

GS130W 双目相机通过 hobot_stereonet 发布的数据格式需要确认。先检查实际发布的图像格式:

# 查看话题信息
ros2 topic info /image_combine_raw -v

# 或者使用 rostopic hz 查看
ros2 topic hz /image_combine_raw

然后修改启动命令,将 codec_in_format 改为实际格式:

# 如果实际是 bgr8 格式
ros2 launch hobot_stereonet codec_web_visual.launch.py \
  codec_sub_topic:=/image_combine_raw \
  codec_in_format:=bgr8 \
  input_framerate:=30

方案二:检查 stereonet 的图像发布配置

如果 hobot_stereonet 本身支持配置输出格式,查看其参数:

# 查看 hobot_stereonet 的参数
ros2 param dump /hobot_stereonet_node 2>/dev/null | grep -i format

# 或者查看 launch 文件的参数定义
find /opt/tros -name "*.launch.py" | xargs grep -l "stereonet" | head -5

方案三:使用中间节点转换格式

如果必须使用 nv12 格式进行编码,可以添加格式转换节点:

# 使用 image_transport 或自定义节点进行格式转换
ros2 run image_transport republish \
  raw in:=/image_combine_raw \
  compressed out:=/image_nv12

排查步骤

  1. 确认输入话题的实际格式

    ros2 topic info /image_combine_raw -v
    
  2. 查看 hobot_stereonet 的文档或示例
    搜索社区中关于 hobot_stereonet 的使用案例

  3. 检查相机驱动是否正常
    从你的 /sys/bus/iio/devices/ 输出来看,IIO 设备已识别,但需要确认相机数据流是否正常

参考资源

建议你查看:

如果问题仍未解决,请提供:

  1. ros2 topic info /image_combine_raw -v 的输出
  2. hobot_stereonet 节点的完整启动命令和参数

这样可以更精确地定位格式配置问题。

root@ubuntu:/userdata# ros2 topic info /image_combine_raw -v
Type: sensor_msgs/msg/Image

Publisher count: 1

Node name: mipi_cam
Node namespace: /
Topic type: sensor_msgs/msg/Image
Endpoint type: PUBLISHER
GID: 01.0f.34.ba.f0.0e.11.ad.00.00.00.00.00.00.18.03.00.00.00.00.00.00.00.00
QoS profile:
Reliability: RELIABLE
History (Depth): UNKNOWN
Durability: VOLATILE
Lifespan: Infinite
Deadline: Infinite
Liveliness: AUTOMATIC
Liveliness lease duration: Infinite

Subscription count: 0

root@ubuntu:/userdata# ros2 launch hobot_stereonet codec_web_visual.launch.py
codec_sub_topic:=/image_combine_raw
codec_in_format:=bgr8
input_framerate:=30
[INFO] [launch]: All log files can be found below /root/.ros/log/2026-04-20-17-39-54-434474-ubuntu-8473
[INFO] [launch]: Default logging verbosity is set to INFO
Hobot shm pkg enables zero-copy with fastrtps profiles file: /opt/tros/humble/lib/hobot_shm/config/shm_fastdds.xml
Hobot shm pkg sets RMW_FASTRTPS_USE_QOS_FROM_XML: 1
webserver has launch
env of RMW_FASTRTPS_USE_QOS_FROM_XML is 1 , ignore env setting
env of RMW_FASTRTPS_USE_QOS_FROM_XML is 1 , ignore env setting
webserver has launch
[INFO] [hobot_codec_republish-1]: process started with pid [8484]
[INFO] [websocket-2]: process started with pid [8486]
[hobot_codec_republish-1] [WARN] [1776677994.888894493] [hobot_codec_encoder]: Parameters:
[hobot_codec_republish-1] sub_topic: /image_combine_raw
[hobot_codec_republish-1] pub_topic: /image_jpeg
[hobot_codec_republish-1] channel: 1
[hobot_codec_republish-1] in_mode: ros
[hobot_codec_republish-1] out_mode: ros
[hobot_codec_republish-1] in_format: bgr8
[hobot_codec_republish-1] out_format: jpeg
[hobot_codec_republish-1] jpg_quality: 60.00
[hobot_codec_republish-1] input_framerate: 30
[hobot_codec_republish-1] output_framerate: -1
[hobot_codec_republish-1] dump_output: false
[hobot_codec_republish-1] dump_file_prefix: ./dump_codec_output
[hobot_codec_republish-1] dump_frame_count: -1 (unlimited)
[hobot_codec_republish-1] [WARN] [1776677994.897033024] [HobotCodecImpl]: platform x5
[hobot_codec_republish-1] [WARN] [1776677994.942428082] [hobot_codec_encoder]: [in_ros_topic_cb]->infmt err bgr8-nv12
[hobot_codec_republish-1] [WARN] [1776677994.958241399] [hobot_codec_encoder]: [in_ros_topic_cb]->infmt err bgr8-nv12
[hobot_codec_republish-1] [WARN] [1776677994.974114924] [hobot_codec_encoder]: [in_ros_topic_cb]->infmt err bgr8-nv12
[hobot_codec_republish-1] [WARN] [1776677994.977660050] [hobot_codec_encoder]: [in_ros_topic_cb]->infmt err bgr8-nv12
[hobot_codec_republish-1] [WARN] [1776677994.980350977] [hobot_codec_encoder]: [in_ros_topic_cb]->infmt err bgr8-nv12
[hobot_codec_republish-1] [WARN] [1776677995.010393213] [hobot_codec_encoder]: [in_ros_topic_cb]->infmt err bgr8-nv12
[hobot_codec_republish-1] [WARN] [1776677995.036863864] [hobot_codec_encoder]: [in_ros_topic_cb]->infmt err bgr8-nv12
[hobot_codec_republish-1] [WARN] [1776677995.064201423] [hobot_codec_encoder]: [in_ros_topic_cb]->infmt err bgr8-nv12
[hobot_codec_republish-1] [WARN] [1776677995.101650365] [hobot_codec_encoder]: [in_ros_topic_cb]->infmt err bgr8-nv12
[hobot_codec_republish-1] [WARN] [1776677995.129398210] [hobot_codec_encoder]: [in_ros_topic_cb]->infmt err bgr8-nv12
[hobot_codec_republish-1] [WARN] [1776677995.166839527] [hobot_codec_encoder]: [in_ros_topic_cb]->infmt err bgr8-nv12
[hobot_codec_republish-1] [WARN] [1776677995.204607589] [hobot_codec_encoder]: [in_ros_topic_cb]->infmt err bgr8-nv12
[hobot_codec_republish-1] [WARN] [1776677995.235223652] [hobot_codec_encoder]: [in_ros_topic_cb]->infmt err bgr8-nv12
[hobot_codec_republish-1] [WARN] [1776677995.262929289] [hobot_codec_encoder]: [in_ros_topic_cb]->infmt err bgr8-nv12
[websocket-2] [WARN] [1776677995.294861170] [websocket]:
[websocket-2] Parameter:
[websocket-2] image_topic: /image_jpeg
[websocket-2] image_type: mjpeg
[websocket-2] only_show_image: 1
[websocket-2] output_fps: 0

问题定位

修改参数后错误依旧,说明实际数据格式与参数配置不匹配。从错误日志 infmt err bgr8-nv12 来看:

  • 编码器配置期望:bgr8
  • 实际收到数据:nv12

需要确认 /image_combine_raw 话题实际发布的图像 encoding。

解决步骤

:one: 确认实际图像格式

# 查看消息的 encoding 字段
ros2 topic echo /image_combine_raw --field encoding --once

:two: 根据实际格式调整参数

如果输出是 nv12(最可能的情况):

ros2 launch hobot_stereonet codec_web_visual.launch.py \
  codec_sub_topic:=/image_combine_raw \
  codec_in_format:=nv12 \
  input_framerate:=30

如果输出是 bgr8
那问题可能在编码器内部逻辑,需要检查 hobot_stereonet 的配置。

:three: 检查 hobot_stereonet 的图像输出配置

# 查看 stereonet 节点的参数
ros2 param dump /hobot_stereonet_node 2>/dev/null | grep -i format

# 或者查看正在运行的节点
ros2 node list | grep stereo
ros2 param get <节点名> output_format 2>/dev/null

:four: 查看 hobot_stereonet 的 launch 文件

# 找到 stereonet 的 launch 文件
find /opt/tros -name "*stereonet*.launch.py" 2>/dev/null

# 查看是否有图像格式相关参数
grep -i "format\|encoding" $(find /opt/tros -name "*stereonet*.launch.py" 2>/dev/null) | head -20

快速测试

直接尝试用 nv12 格式启动(GS130W 通过 MIPI 传输通常是 RAW/NV12 格式):

ros2 launch hobot_stereonet codec_web_visual.launch.py \
  codec_sub_topic:=/image_combine_raw \
  codec_in_format:=nv12 \
  input_framerate:=30

参考案例

从社区搜索结果看,GS130W 在 RDK X5 上的使用需要注意:

  • 传感器分辨率配置(之前有案例需要 -w 1088 -h 1280
  • MIPI 通道配置
  • 图像格式转换链路

请先执行 步骤 1 确认实际 encoding,然后告诉我结果,我可以给出更精确的配置建议。

你好,可以参考最新的手册来使用:

根据官方文档,GS130W(sc132gs 传感器)在 RDK X5 上的使用有特定配置要求。

问题根因

错误 infmt err bgr8-nv12 表明:编码器内部实际期望 NV12 格式,但参数配置与实际数据流不匹配。

正确解决方案

:one: 确认系统版本

首先检查系统版本是否满足要求:

cat /etc/version
# 需要 3.3.3 及以上

如果版本过低,需要升级系统镜像。

:two: 使用官方推荐的启动方式

根据文档,GS130W 相机的正确启动流程是:

步骤 1:启动 MIPI 相机节点

# 对于 sc132gs 传感器(GS130W)
ros2 launch hobot_mipi_cam mipi_cam.launch.py \
  camera_type:=sc132gs \
  output_type:=rectify

步骤 2:启动双目深度算法 + Web 可视化

ros2 launch hobot_stereonet codec_web_visual.launch.py \
  codec_sub_topic:=/image_combine_raw \
  codec_in_format:=nv12 \
  input_framerate:=30

:three: 关键参数说明

参数 正确值 说明
camera_type sc132gs GS130W 的传感器型号
output_type rectify 输出校正后的双目图像
codec_in_format nv12 必须是 nv12,MIPI 相机默认输出格式

:four: 完整启动脚本

创建启动脚本 start_gs130w.sh

#!/bin/bash
source /opt/tros/humble/setup.bash

# 启动 MIPI 相机
ros2 launch hobot_mipi_cam mipi_cam.launch.py \
  camera_type:=sc132gs \
  output_type:=rectify &

sleep 2

# 启动 Web 可视化
ros2 launch hobot_stereonet codec_web_visual.launch.py \
  codec_sub_topic:=/image_combine_raw \
  codec_in_format:=nv12 \
  input_framerate:=30

:five: 验证步骤

# 1. 确认话题有数据
ros2 topic hz /image_combine_raw

# 2. 确认图像 encoding
ros2 topic echo /image_combine_raw --field encoding --once
# 应该输出:nv12

# 3. 访问 Web 界面
# 浏览器打开:http://<RDK_IP>:8080

常见问题排查

问题 排查方法
相机不识别 检查 MIPI 排线方向(CAM 端接相机,RDK 端接开发板)
图像花屏 确认 camera_type 参数正确
Web 无法访问 检查防火墙设置,确认 8080 端口开放
帧率过低 降低 input_framerate 或升级系统版本

参考文档

如果按上述步骤操作后仍有问题,请提供:

  1. cat /etc/version 输出
  2. ros2 topic echo /image_combine_raw --field encoding --once 输出
  3. 完整的启动日志