双目深度估计算法运行出错

根据您提供的错误日志和社区讨论,我为您整理了以下关键信息和解决方案建议:


:magnifying_glass_tilted_left: 问题核心分析

从您的日志中可以清晰看到两个主要错误:

1. MIPI 相机初始化失败:There are no available host.

[mipi_cam-1] [ERROR] [1749038243.671936137] [mipi_cam]: There are no available host.
[mipi_cam-1] [ERROR] [mipi_cam-1]: process has died [pid 10765, exit code -11]

→ 这表明 MIPI 摄像头驱动无法识别或访问任何 MIPI Host(主机通道),可能是:

  • 硬件连接问题(如摄像头未正确插入或引脚接触不良)
  • 驱动未加载或版本不兼容
  • 系统内存/资源不足导致设备初始化失败

2. BPU 内存分配失败:Insufficient memory / Cannot allocate memory

[DNN] Runtime version = 1.24.5_(3.15.55 HBRT)
hbrtErrorBPUMemAllocFail
ION_ALLOCATOR: Fail to do ION_IOC_ALLOC(ret=Cannot allocate memory)!
hb_mem_alloc_com_buf_with_lable: Fail to allocate common buffer(ret=-16777211).
...
Load model failed, model file:/opt/tros/humble/share/hobot_stereonet/config/V22_disp96.bin

→ 这是深度学习模型加载失败的根本原因。BPU(AI加速芯片)无法分配足够的内存来加载模型,可能是因为:

  • 系统总内存不足(尤其是 RDK X5 通常为 4GB RAM,运行双目+算法易爆内存)
  • 内存池被其他进程占用
  • 模型过大,超出 BPU 可用显存(HBM)
  • 系统未正确配置 ION 内存池大小(Android/Linux 的内存管理机制)

:white_check_mark: 解决方案建议

:hammer_and_wrench: 1. 检查硬件连接与电源

  • 确认双目摄像头是否正确插入 RDK X5 的 MIPI 接口(通常是 J1 或 J2)
  • 检查摄像头供电是否稳定(部分摄像头需要额外 5V 供电)
  • 尝试更换摄像头或接口测试,排除硬件故障

:light_bulb: 提示:在文档《RDK X5 基础应用开发》中提到,MIPI 接口支持 host 0host 2,但需确保固件和驱动支持。


:brain: 2. 释放系统内存 & 优化 BPU 内存分配

:white_check_mark: 方法一:重启系统并清空缓存

sudo sync && sudo echo 3 > /proc/sys/vm/drop_caches
sudo reboot

:white_check_mark: 方法二:检查当前内存使用情况

free -h
cat /proc/meminfo | grep MemTotal

→ 如果 MemTotal 显示只有 3.5GB 左右,说明系统内存紧张,必须优化内存使用

:white_check_mark: 方法三:修改 ION 内存池大小(Linux 内核参数)

/boot/config.txt 中添加以下内容(适用于 RDK X5):

# 增加 ION 内存池大小(单位:MB)
dtoverlay=ion,mem_size=256

然后重启:

sudo rdk-reboot

:warning: 注意:此设置需根据实际硬件调整,过大可能导致系统卡顿。


:package: 3. 检查并更新系统与算法包

:white_check_mark: 更新 TROS 和算法包

sudo apt update
sudo apt upgrade -y
sudo apt install -y tros-humble-hobot-stereonet

:white_check_mark: 检查模型文件是否存在

ls /opt/tros/humble/share/hobot_stereonet/config/V22_disp96.bin

→ 如果文件不存在,说明安装不完整,需重新安装:

sudo apt remove tros-humble-hobot-stereonet
sudo apt install -y tros-humble-hobot-stereonet

:white_check_mark: 查看当前系统版本

rdkos_info
cat /etc/version

→ 确保系统版本 ≥ 3.4.1(最新版),旧版本可能存在内存管理 bug。


:test_tube: 4. 简化启动参数以降低内存压力

尝试减少分辨率或帧率,例如:

ros2 launch hobot_stereonet stereonet_model_web_visual_v2.3.launch.py \
    mipi_image_width:=320 \
    mipi_image_height:=180 \
    mipi_lpwm_enable:=False \
    mipi_image_framerate:=10.0 \
    need_rectify:=False \
    height_min:=-10.0 \
    height_max:=10.0 \
    pc_max_depth:=5.0

→ 降低分辨率可显著减少 BPU 内存占用。


:books: 5. 参考官方文档与社区指南


:sos_button: 如果以上方法无效?

请提供以下信息以便进一步排查:

  1. 系统版本号

    rdkos_info
    
  2. 内存总量与可用量

    free -h
    cat /proc/meminfo | grep MemAvailable
    
  3. MIPI 摄像头型号(如 SC132GS、OV5647 等)

  4. 是否使用了自定义启动脚本或修改过 launch 文件?

  5. 是否有其他后台进程占用了大量内存?


:bullseye: 总结

问题 原因 解决方案
There are no available host. MIPI 驱动未初始化或硬件连接异常 检查硬件连接、重启、更新驱动
Insufficient memory BPU 内存不足,模型加载失败 降低分辨率、增加 ION 内存池、清理缓存、升级系统
模型加载失败 文件缺失或权限问题 重新安装 tros-humble-hobot-stereonet

:white_check_mark: 推荐操作顺序

  1. 重启系统 + 清理缓存
  2. 检查摄像头连接和供电
  3. 修改 config.txt 增加 ION 内存
  4. 降低分辨率运行测试
  5. 升级系统和算法包
  6. 如仍失败,请提供系统版本和内存详情

如果您能提供上述补充信息,我可以为您定制更精确的解决方案!
祝您调试顺利,早日解决双目深度估计问题!:rocket:


:pushpin: 温馨提示:RDK X5 是一款高性能开发板,但在运行 AI 模型时对内存要求较高,建议在非生产环境下优先使用低分辨率、低帧率模式进行调试,避免系统崩溃。