问题明确:StereoNet 节点崩溃(exit code -11)
从日志看,StereoNet 节点启动后立即崩溃(段错误),核心原因可能是:
关键问题
use_mipi_cam=True导致资源冲突 - 相机已单独运行,脚本又尝试启动相机节点- 标定文件格式可能不兼容 - SC132gs 标定文件可能是 X5 格式,S100 需要特定格式
完整解决方案
步骤 1:修改 use_mipi_cam=False(关键)
# 编辑 run_stereo.sh
vim run_stereo.sh
# 找到这行(约 55 行):
use_mipi_cam=True
# 改为:
use_mipi_cam=False
# 保存退出
原因:你已经单独运行了 run_cam.sh,相机话题 /image_combine_raw 正常发布 30Hz。如果 use_mipi_cam=True,脚本会尝试再次启动相机节点,导致资源冲突。
步骤 2:检查标定文件格式
# 查看标定文件完整内容
cat /opt/tros/humble/lib/mipi_cam/config/SC132gs_dual_calibration.yaml
S100 需要的标定文件格式(参考 SC230ai):
%YAML:1.0
camera_matrix_1:
rows: 3
cols: 3
data: [fx1, 0, cx1, 0, fy1, cy1, 0, 0, 1]
distortion_1:
rows: 1
cols: 5
data: [k1, k2, p1, p2, k3]
camera_matrix_2:
rows: 3
cols: 3
data: [fx2, 0, cx2, 0, fy2, cy2, 0, 0, 1]
distortion_2:
rows: 1
cols: 5
data: [k1, k2, p1, p2, k3]
rectification_1: ...
rectification_2: ...
projection_1: ...
projection_2: ...
baseline: 0.06
你之前贴出的标定文件只有 R 和 T 矩阵,格式可能不完整。
步骤 3:使用 SC230ai 标定文件临时测试
# 修改 run_stereo.sh
vim run_stereo.sh
# 将标定文件路径改为 SC230ai(格式已知正确):
stereo_calib_file_path="/opt/tros/humble/lib/mipi_cam/config/SC230ai_dual_calibration.yaml"
# 保存后重新运行
bash run_stereo.sh --stereonet_version v2.4 2>&1 | tee stereo_v2.log
步骤 4:查看完整崩溃日志
# 等待 30 秒后按 Ctrl+C,然后查看:
grep -A20 "init StereoNetNode" stereo_v2.log
grep -E "ERROR|died|segmentation" stereo_v2.log | tail -20
快速修复命令(一键执行)
# 1. 修改配置
sed -i 's/use_mipi_cam=True/use_mipi_cam=False/g' run_stereo.sh
sed -i 's|SC132gs_dual_calibration.yaml|SC230ai_dual_calibration.yaml|g' run_stereo.sh
# 2. 确认修改
grep -E "use_mipi_cam|stereo_calib_file_path" run_stereo.sh | head -3
# 3. 清理进程并重新运行
killall stereonet_model_node mipi_cam 2>/dev/null
sleep 2
bash run_stereo.sh --stereonet_version v2.4 2>&1 | tee stereo_v2.log
验证深度输出
# 新开终端检查
ros2 topic list | grep depth
ros2 topic hz /StereoNetNode/stereonet_depth
# 如果有数据,说明成功!
配置总结
| 参数 | 正确值 | 说明 |
|---|---|---|
use_mipi_cam |
False |
相机已单独运行 |
calib_method |
custom |
S100 v2.4 专用 |
stereo_calib_file_path |
绝对路径 | 使用已知正确的标定文件 |
render_type |
"distance" |
字符串格式 |
相关参考
- 基于官方 132GS MIPI 双目相机运行双目 Demo 报错 - 同类问题完整解决
- 132GS MIPI 双目相机如何自行标定 - 标定文件格式详解
优先执行步骤 1(use_mipi_cam=False)+ 步骤 3(用 SC230ai 标定文件测试)。把新的日志输出(特别是 init StereoNetNode 后的内容)补充到帖子,可以帮你精准定位标定文件问题!