问题根因:StereoNet 节点未正常启动
从错误日志看,codec 和 websocket 报错了,但这只是表象。真正的问题是 StereoNet 节点没有发布 stereonet_visual 话题,说明节点要么没启动,要么启动后崩溃了。
最终排查方案(按顺序执行)
步骤 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
把以上输出补充到帖子,这是定位问题的关键!
快速修复尝试(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
关键配置检查清单
| 配置项 | 正确值 | 检查命令 |
|---|---|---|
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 |
请补充以下诊断信息
# 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
同类问题参考
- 自定义标定:RDK X5 + SC230ai 双目运行 run_stereo.sh 必现 exit code -11 - 字段名称问题
- 基于官方 132GS MIPI 双目相机运行双目 Demo 报错 - 完整解决案例
优先执行步骤 1+2,把 grep -A50 "init StereoNetNode" stereo_full.log 的输出补充到帖子,这样可以精准定位是标定文件问题还是节点本身问题!