132gs 模组双目深度问题

:bullseye: 问题根因:StereoNet 节点未正常启动

从错误日志看,codec 和 websocket 报错了,但这只是表象。真正的问题是 StereoNet 节点没有发布 stereonet_visual 话题,说明节点要么没启动,要么启动后崩溃了。


:white_check_mark: 最终排查方案(按顺序执行)

步骤 1:确认 StereoNet 节点状态

# 1. 检查节点是否在运行
ros2 node list | grep -i stereo

# 2. 检查 stereonet_visual 话题
ros2 topic info /StereoNetNode/stereonet_visual

# 3. 检查进程
ps aux | grep stereonet

如果 ros2 node list 没有 /StereoNetNode,说明节点已崩溃。

步骤 2:运行并捕获完整崩溃日志

# 1. 清理进程
killall mipi_cam stereonet_model_node hobot_codec_republish websocket 2>/dev/null
sleep 3

# 2. 运行并保存完整日志
cd /userdata/data/test/
bash run_stereo.sh --stereonet_version v2.4 2>&1 | tee stereo_full.log

# 3. 等待 20 秒后按 Ctrl+C

步骤 3:查看关键错误信息

# 1. 查看 StereoNet 初始化部分
grep -A50 "init StereoNetNode" stereo_full.log

# 2. 查看崩溃信息
grep -E "ERROR|died|segmentation|exit code" stereo_full.log | tail -30

# 3. 查看标定文件加载
grep -i "calib\|custom\|left_camera" stereo_full.log | tail -20

把以上输出补充到帖子,这是定位问题的关键!


:wrench: 快速修复尝试(3 个方案)

方案 A:尝试 StereoNet v2.3 版本(更稳定)

# 修改运行命令
bash run_stereo.sh --stereonet_version v2.3 2>&1 | tee stereo_v23.log

方案 B:关闭可视化,减少节点负担

# 编辑 run_stereo.sh
vim run_stereo.sh

# 修改以下配置:
publish_visual_enabled=False
stereonet_pub_web=False

# 重新运行
bash run_stereo.sh --stereonet_version v2.4

方案 C:使用命令行参数直接启动 StereoNet

绕过脚本,手动启动节点测试:

source /opt/tros/humble/setup.bash

ros2 run hobot_stereonet stereonet_model_node \
  --ros-args \
  -p calib_method:=custom \
  -p stereo_calib_file_path:=/opt/tros/humble/lib/mipi_cam/config/SC132gs_dual_calibration.yaml \
  -p stereo_image_topic:=/image_combine_raw \
  -p camera_info_topic:=/image_combine_raw/right/camera_info \
  -p render_type:=distance \
  --log-level info

:clipboard: 关键配置检查清单

配置项 正确值 检查命令
use_mipi_cam False grep use_mipi_cam run_stereo.sh
calib_method "custom" grep calib_method run_stereo.sh
stereo_calib_file_path 绝对路径 grep stereo_calib_file_path run_stereo.sh
标定文件字段 left_camera_matrix head -20 SC132gs_dual_calibration.yaml
StereoNet 版本 v2.4 或 v2.3 grep stereonet_version run_stereo.sh

:books: 请补充以下诊断信息

# 1. StereoNet 节点状态
ros2 node list | grep -i stereo

# 2. 完整崩溃日志关键部分
grep -A50 "init StereoNetNode" stereo_full.log

# 3. 标定文件前 30 行
head -30 /opt/tros/humble/lib/mipi_cam/config/SC132gs_dual_calibration.yaml

# 4. 系统内存状态
free -h

:light_bulb: 同类问题参考


优先执行步骤 1+2,把 grep -A50 "init StereoNetNode" stereo_full.log 的输出补充到帖子,这样可以精准定位是标定文件问题还是节点本身问题!