双目深度估计运行出错

根据你提供的报错信息,这是一个典型的上游节点启动失败导致下游数据断流的问题。核心问题在于 mipi_cam 节点初始化失败(ret -217),导致 StereoNetNode 无法发布图像,进而引发 hobot_codec 和 websocket 的超时错误。

问题诊断

从报错日志可以看出两个关键问题:

  1. 根本原因mipi_cam 初始化失败(ret -217)
  2. 连锁反应:StereoNetNode 无法获取图像 → 不发布 /StereoNetNode/stereonet_visual → hobot_codec 和 websocket 超时

排查步骤

1. 检查相机硬件连接

# 检查 MIPI 相机是否被系统识别
ls /dev/video*

# 查看 dmesg 中相机相关的错误信息
dmesg | grep -i mipi
dmesg | grep -i camera

2. 验证相机配置文件

检查你的 run_cam.sh 中使用的相机配置:

# 查看当前使用的相机配置
cat /opt/tros/humble/lib/mipi_cam/config/*.yaml

# 确认相机型号与配置匹配(SC230AI/其他型号)

常见配置错误:

  • 相机型号与配置文件不匹配
  • 分辨率/帧率设置超出相机支持范围
  • MIPI 通道配置错误

3. 检查节点启动顺序

你的 launch 文件可能存在竞态条件。StereoNetNode 启动时,mipi_cam 可能还未完成初始化。

解决方案:添加启动延迟或依赖

# 修改 run_stereo.sh,在启动 StereoNet 前等待相机就绪
bash run_cam.sh &
CAM_PID=$!

# 等待相机节点发布话题
ros2 topic list | grep /image_raw
while [ $? -ne 0 ]; do
    sleep 0.5
    ros2 topic list | grep /image_raw
done

# 相机就绪后再启动 StereoNet
bash run_stereo.sh

4. 检查话题连接

# 查看话题是否正常发布
ros2 topic list | grep -E "(image_raw|stereonet_visual)"

# 检查话题类型是否匹配
ros2 topic info /image_raw -v
ros2 topic info /StereoNetNode/stereonet_visual -v

# 查看是否有数据流动
ros2 topic hz /image_raw

5. 尝试单独测试相机节点

# 单独启动相机节点,观察是否能正常工作
ros2 launch mipi_cam mipi_cam.launch.py \
    camera_type:=sc230ai \
    width:=640 \
    height:=360 \
    fps:=30

针对 ret -217 错误的特殊处理

错误码 -217 通常表示VFlow 创建失败,可能原因:

  1. 资源冲突:其他进程占用了 MIPI 通道

    # 检查是否有残留进程
    ps aux | grep mipi
    # 清理残留进程
    killall -9 mipi_node
    
  2. 系统版本兼容性问题:3.5.0 系统可能存在已知 bug

    • 建议升级到最新系统版本
    • 或回退到稳定版本 3.4.x
  3. 相机供电不足:检查电源适配器是否满足功率要求

临时解决方案

如果急需测试,可以先跳过相机节点,使用测试图像源:

# 使用静态图像或视频文件作为输入
ros2 launch image_publisher test_image_publisher.launch.py

建议

  1. 优先解决 mipi_cam 初始化问题,这是根源
  2. 检查 RDK-X5 双目深度算法hobot_stereonet精度差 帖子中的配置经验
  3. 如果问题持续,建议提供:
    • 完整的 run_cam.shrun_stereo.sh 内容
    • dmesg | tail -50 的输出
    • 相机型号和连接方式

需要我帮你进一步分析具体的配置文件或启动脚本吗?