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
排查步骤
-
确认输入话题的实际格式:
ros2 topic info /image_combine_raw -v -
查看 hobot_stereonet 的文档或示例:
搜索社区中关于hobot_stereonet的使用案例 -
检查相机驱动是否正常:
从你的/sys/bus/iio/devices/输出来看,IIO 设备已识别,但需要确认相机数据流是否正常
参考资源
建议你查看:
- RDK X5 双目相机使用文档
- 社区中关于 hobot_stereonet 的相关帖子
如果问题仍未解决,请提供:
ros2 topic info /image_combine_raw -v的输出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。
解决步骤
确认实际图像格式
# 查看消息的 encoding 字段
ros2 topic echo /image_combine_raw --field encoding --once
根据实际格式调整参数
如果输出是 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 的配置。
检查 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
查看 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 格式,但参数配置与实际数据流不匹配。
正确解决方案
确认系统版本
首先检查系统版本是否满足要求:
cat /etc/version
# 需要 3.3.3 及以上
如果版本过低,需要升级系统镜像。
使用官方推荐的启动方式
根据文档,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
关键参数说明
| 参数 | 正确值 | 说明 |
|---|---|---|
camera_type |
sc132gs |
GS130W 的传感器型号 |
output_type |
rectify |
输出校正后的双目图像 |
codec_in_format |
nv12 |
必须是 nv12,MIPI 相机默认输出格式 |
完整启动脚本
创建启动脚本 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
验证步骤
# 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 或升级系统版本 |
参考文档
如果按上述步骤操作后仍有问题,请提供:
cat /etc/version输出ros2 topic echo /image_combine_raw --field encoding --once输出- 完整的启动日志