问题根因:StereoNet 节点持续崩溃
从最新日志看,StereoNet 节点启动后段错误崩溃(exit code -11),深度话题无法发布。
最终解决方案
方案 1:检查 StereoNet 模型文件是否存在
# 1. 确认模型文件存在
ls -la /opt/tros/humble/share/hobot_stereonet/config/dstereo_s100_320_640_352_v2.4.hbm
# 2. 如果文件不存在或损坏,重新安装
apt update
apt install --reinstall hobot-stereonet
方案 2:尝试 StereoNet v2.3 版本(更稳定)
v2.4 版本可能有兼容性问题,尝试 v2.3:
# 修改运行命令
bash run_stereo.sh --stereonet_version v2.3 2>&1 | tee stereo_v23.log
方案 3:检查标定文件字段名称
StereoNet v2.4 对字段名称敏感,必须使用 left_camera_matrix 而非 camera_matrix_1:
# 创建正确格式的标定文件
cat > /opt/tros/humble/lib/mipi_cam/config/SC132gs_dual_calibration.yaml << 'EOF'
%YAML:1.0
image_width: 1280
image_height: 1088
left_camera_matrix: !!opencv-matrix
rows: 3
cols: 3
dt: d
data: [528.6953213954334, 0.0, 621.6598968327049, 0.0, 469.7443489102585, 344.7801912987854, 0.0, 0.0, 1.0]
left_distortion_coefficients: !!opencv-matrix
rows: 1
cols: 8
dt: d
data: [-0.19022404784416216, 0.08737900971037368, -0.00013633102684873613, 2.8387028454768084e-05, 0.037123187744979025, 0.1798687498557986, -0.06820294642386052, 0.10684527621059339]
right_camera_matrix: !!opencv-matrix
rows: 3
cols: 3
dt: d
data: [529.2760196145524, 0.0, 654.6320151265384, 0.0, 470.4236596788936, 318.0571160826385, 0.0, 0.0, 1.0]
right_distortion_coefficients: !!opencv-matrix
rows: 1
cols: 8
dt: d
data: [-0.08168737119014227, 0.051348177058130356, 0.00010479656330654928, -8.819143676712554e-06, 0.024544736926599094, 0.28711736495579887, -0.06268635878956813, 0.07182651571059339]
R: !!opencv-matrix
rows: 3
cols: 3
dt: d
data: [0.9999771405493721, -0.0008865181729254466, -0.006703168223329922, 0.000844157865516232, 0.9999796745904039, -0.006319636347751682, 0.006708634451158759, 0.006313833352156998, 0.9999575639656925]
T: !!opencv-matrix
rows: 3
cols: 1
dt: d
data: [-0.06981825961809152, -0.00031854332254735906, -3.61077528349911e-05]
baseline: 0.06981825961809152
EOF
方案 4:查看完整崩溃日志定位原因
# 1. 运行并保存完整日志
bash run_stereo.sh --stereonet_version v2.4 2>&1 | tee stereo_full.log
# 2. 等待 30 秒后 Ctrl+C,查看:
grep -A50 "init StereoNetNode" stereo_full.log
grep -B5 "process has died" stereo_full.log
快速诊断命令
# 1. 检查模型文件
ls -la /opt/tros/humble/share/hobot_stereonet/config/*.hbm
# 2. 检查 StereoNet 包状态
apt list --installed | grep stereonet
# 3. 查看标定文件
cat /opt/tros/humble/lib/mipi_cam/config/SC132gs_dual_calibration.yaml | head -30
# 4. 检查 run_stereo.sh 配置
grep -E "use_mipi_cam|calib_method|stereo_calib_file_path|stereonet_version" run_stereo.sh | head -10
可能原因分析
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| exit code -11 | 模型文件缺失/损坏 | 重新安装 hobot-stereonet |
| exit code -11 | 标定文件字段名称不匹配 | 使用 left_camera_matrix 格式 |
| exit code -11 | StereoNet v2.4 版本 Bug | 尝试 v2.3 版本 |
| exit code -11 | 内存不足 | 检查 free -h |
相关参考
- 基于官方 132GS MIPI 双目相机运行双目 Demo 报错 - 同类问题完整解决
- 132GS MIPI 双目相机如何自行标定 - 标定文件格式详解
优先执行方案 3(使用 left_camera_matrix 字段名称的标定文件),然后补充以下信息到帖子:
# 1. 模型文件检查结果
ls -la /opt/tros/humble/share/hobot_stereonet/config/*.hbm
# 2. 完整崩溃日志
grep -A50 "init StereoNetNode" stereo_full.log
这样可以精准定位是模型问题还是标定文件格式问题!