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

在RDK X5上面运行官方的双目深度估计算法时出错。

相机和开发板的连接图:

系统镜像版本和tros均满足要求,执行如下命令时报错:

# 配置tros.b humble环境
source /opt/tros/humble/setup.bash

# 启动双目模型launch文件,其包含了算法和双目相机节点的启动
ros2 launch hobot_stereonet stereonet_model_web_visual_v2.0.launch.py \
mipi_image_width:=640 mipi_image_height:=352 mipi_lpwm_enable:=True mipi_image_framerate:=15.0 \
need_rectify:=False height_min:=-10.0 height_max:=10.0 pc_max_depth:=5.0

错误信息如下:

root@ubuntu:~# ros2 launch hobot_stereonet stereonet_model_web_visual_v2.3.launch.py mipi_image_width:=640 mipi_image_height:=352 mipi_lpwm_enable:=False mipi_image_framerate:=30.0 need_rectify:=False height_min:=-10.0 height_max:=10.0 pc_max_depth:=5.0
[INFO] [launch]: All log files can be found below /root/.ros/log/2025-06-04-19-57-22-645886-ubuntu-10761
[INFO] [launch]: Default logging verbosity is set to INFO
config_file_path is  /opt/tros/humble/lib/mipi_cam/config/
Hobot shm pkg enables zero-copy with fastrtps profiles file: /opt/tros/humble/lib/hobot_shm/config/shm_fastdds.xml
Hobot shm pkg sets RMW_FASTRTPS_USE_QOS_FROM_XML: 1
env of RMW_FASTRTPS_USE_QOS_FROM_XML is  1 , ignore env setting
webserver has launch
config_file_path is  /opt/tros/humble/lib/mipi_cam/config/
env of RMW_FASTRTPS_USE_QOS_FROM_XML is  1 , ignore env setting
env of RMW_FASTRTPS_USE_QOS_FROM_XML is  1 , ignore env setting
webserver has launch
config_file_path is  /opt/tros/humble/lib/mipi_cam/config/
env of RMW_FASTRTPS_USE_QOS_FROM_XML is  1 , ignore env setting
env of RMW_FASTRTPS_USE_QOS_FROM_XML is  1 , ignore env setting
env of RMW_FASTRTPS_USE_QOS_FROM_XML is  1 , ignore env setting
env of RMW_FASTRTPS_USE_QOS_FROM_XML is  1 , ignore env setting
webserver has launch
[INFO] [mipi_cam-1]: process started with pid [10765]
[INFO] [stereonet_model_node-2]: process started with pid [10767]
[INFO] [boost -3]: process started with pid [10769]
[INFO] [boost -3]: process has finished cleanly [pid 10769]
[INFO] [hobot_codec_republish-4]: process started with pid [10771]
[INFO] [websocket-5]: process started with pid [10773]
[hobot_codec_republish-4] [WARN] [1749038243.620288845] [hobot_codec_encoder]: Parameters:
[hobot_codec_republish-4] sub_topic: /StereoNetNode/stereonet_visual
[hobot_codec_republish-4] pub_topic: /image_jpeg
[hobot_codec_republish-4] channel: 1
[hobot_codec_republish-4] in_mode: ros
[hobot_codec_republish-4] out_mode: ros
[hobot_codec_republish-4] in_format: bgr8
[hobot_codec_republish-4] out_format: jpeg
[hobot_codec_republish-4] enc_qp: 10
[hobot_codec_republish-4] jpg_quality: 60
[hobot_codec_republish-4] input_framerate: 30
[hobot_codec_republish-4] output_framerate: -1
[hobot_codec_republish-4] dump_output: 0
[hobot_codec_republish-4] [WARN] [1749038243.635777179] [HobotCodecImpl]: platform x5
[websocket-5] [WARN] [1749038243.650471679] [websocket]: 
[websocket-5] Parameter:
[websocket-5]  image_topic: /image_jpeg
[websocket-5]  image_type: mjpeg
[websocket-5]  only_show_image: 1
[websocket-5]  output_fps: 0
[mipi_cam-1] [WARN] [1749038243.656694595] [mipi_node]: dual_combine value: 1
[mipi_cam-1] [WARN] [1749038243.656869304] [mipi_node]: frame_ts_type value: sensor
[mipi_cam-1] [WARN] [1749038243.670308929] [mipi_factory]: board_type X5_RDK
[mipi_cam-1] 
[mipi_cam-1] [WARN] [1749038243.671344970] [mipi_cam]: this board support mipi:
[mipi_cam-1] [WARN] [1749038243.671558720] [mipi_cam]: host 0
[mipi_cam-1] [WARN] [1749038243.671611845] [mipi_cam]: host 2
[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, cmd '/opt/tros/humble/lib/mipi_cam/mipi_cam --ros-args --log-level warn --ros-args --params-file /tmp/launch_params_5d1larq2 --params-file /tmp/launch_params_iimezsv7 --params-file /tmp/launch_params_4py7topp --params-file /tmp/launch_params_kbcsl4xj --params-file /tmp/launch_params_t4vjwh4z --params-file /tmp/launch_params_ux_o54c7 --params-file /tmp/launch_params_1xwe6oan --params-file /tmp/launch_params_ar70d9ny --params-file /tmp/launch_params_zplu0ejc --params-file /tmp/launch_params_5rkeomp4 --params-file /tmp/launch_params_29n3_avs --params-file /tmp/launch_params_um7nm4i7 --params-file /tmp/launch_params_krov8ad7 --params-file /tmp/launch_params_1rdth37o --params-file /tmp/launch_params_wn1_gr20 --params-file /tmp/launch_params_fl0knce3 --params-file /tmp/launch_params_ibumiji6 --params-file /tmp/launch_params_b99d_b6h'].
[stereonet_model_node-2] [BPU_PLAT]BPU Platform Version(1.3.6)!
[stereonet_model_node-2] [HBRT] set log level as 0. version = 3.15.55.0
[stereonet_model_node-2] [DNN] Runtime version = 1.24.5_(3.15.55 HBRT)
[stereonet_model_node-2] [19:57:23:914:642] pid=10767 tid=10767 [HBRT 3.15.55.0] (line 265 in alloc_bpu_mem_usage from file=d1d314f3db5c18dae0d474f72ebb3d2844afca41) hbrt memory allocation fails, this memory allocation: 7536640, current total usage: 0, max total usage: 0
[stereonet_model_node-2] [19:57:23:919:609] pid=10767 tid=10767 [HBRT 3.15.55.0] (line 265 in alloc_bpu_mem_usage from file=d1d314f3db5c18dae0d474f72ebb3d2844afca41) hbrt memory allocation fails, this memory allocation: 7536640, current total usage: 0, max total usage: 0
[stereonet_model_node-2] hbrtErrorBPUMemAllocFail
[stereonet_model_node-2] file=d1d314f3db5c18dae0d474f72ebb3d2844afca41
[stereonet_model_node-2] 1194
[stereonet_model_node-2] hbrtErrorBPUMemAllocFail 3.15.55 file=7b0c25e023bb537c72d2b9349b00937143a7e5f8 2074
[stereonet_model_node-2] hbrtErrorBPUMemAllocFail 3.15.55 file=7b0c25e023bb537c72d2b9349b00937143a7e5f8 2097
[stereonet_model_node-2] hbrtErrorBPUMemAllocFail 3.15.55 file=7b0c25e023bb537c72d2b9349b00937143a7e5f8 2376
[stereonet_model_node-2] hbrtErrorBPUMemAllocFail 3.15.55 file=7b0c25e023bb537c72d2b9349b00937143a7e5f8 2509
[stereonet_model_node-2] hbrtErrorIllegalHBMHandle 3.15.55 file=7b0c25e023bb537c72d2b9349b00937143a7e5f8 2948
[stereonet_model_node-2] hbrtErrorIllegalHBMHandle 3.15.55 file=7b0c25e023bb537c72d2b9349b00937143a7e5f8 3023
[stereonet_model_node-2] [A][DNN][packed_model.cpp:247][Model](2025-06-04,19:57:23.833.490) [HorizonRT] The model builder version = 1.24.3
[stereonet_model_node-2] [ERROR][][utils/mem_log.c:94] [7646.83469][10767:10767][ION_ALLOCATOR] <mem_ion_alloc_internal:601> Fail to do ION_IOC_ALLOC(ret=Cannot allocate memory)!
[stereonet_model_node-2] [ERROR][][utils/mem_log.c:94] [7646.83469][10767:10767][ION_ALLOCATOR] <mem_alloc_handle_and_buf:750> Fail to allocate ion memory(ret=-12).
[stereonet_model_node-2] [ERROR][][utils/mem_log.c:94] [7646.83469][10767:10767][ION_ALLOCATOR] <mem_osal_alloc_com_buf:945> Fail to allocate handle and buf(ret=-16777211).
[stereonet_model_node-2] [ERROR][][utils/mem_log.c:94] [7646.83469][10767:10767][MEM_ALLOCATOR] <mem_try_alloc_com_buf_locked:297> Fail to allocate memory(Insufficient memory).
[stereonet_model_node-2] [ERROR][][utils/mem_log.c:94] [7646.83469][10767:10767][MEM_ALLOCATOR] <hb_mem_alloc_com_buf_with_lable:491> Fail to allocate common buffer(ret=-16777211).
[stereonet_model_node-2] [ERROR][][utils/mem_log.c:94] [7646.83520][10767:10767][HBMEM] <hbmem_alloc:246> Fail to allocate buffer(ret=-16777211).
[stereonet_model_node-2] [ERROR][][utils/mem_log.c:94] [7646.83520][10767:10767][MEM_ALLOCATOR] <hb_mem_invalidate_buf_with_vaddr:3470> Invalid NULL virtual address.
[stereonet_model_node-2] [ERROR][][utils/mem_log.c:94] [7646.83520][10767:10767][HBMEM] <hbmem_cache_invalid:601> Fail to invalidate buffer(ret=-16777214).
[stereonet_model_node-2] [ERROR][][utils/mem_log.c:94] [7646.83981][10767:10767][ION_ALLOCATOR] <mem_ion_alloc_internal:601> Fail to do ION_IOC_ALLOC(ret=Cannot allocate memory)!
[stereonet_model_node-2] [ERROR][][utils/mem_log.c:94] [7646.83981][10767:10767][ION_ALLOCATOR] <mem_alloc_handle_and_buf:750> Fail to allocate ion memory(ret=-12).
[stereonet_model_node-2] [ERROR][][utils/mem_log.c:94] [7646.83981][10767:10767][ION_ALLOCATOR] <mem_osal_alloc_com_buf:945> Fail to allocate handle and buf(ret=-16777211).
[stereonet_model_node-2] [ERROR][][utils/mem_log.c:94] [7646.83981][10767:10767][MEM_ALLOCATOR] <mem_try_alloc_com_buf_locked:297> Fail to allocate memory(Insufficient memory).
[stereonet_model_node-2] [ERROR][][utils/mem_log.c:94] [7646.83981][10767:10767][MEM_ALLOCATOR] <hb_mem_alloc_com_buf_with_lable:491> Fail to allocate common buffer(ret=-16777211).
[stereonet_model_node-2] [ERROR][][utils/mem_log.c:94] [7646.83981][10767:10767][HBMEM] <hbmem_alloc:246> Fail to allocate buffer(ret=-16777211).
[stereonet_model_node-2] [ERROR][][utils/mem_log.c:94] [7646.84032][10767:10767][MEM_ALLOCATOR] <hb_mem_invalidate_buf_with_vaddr:3470> Invalid NULL virtual address.
[stereonet_model_node-2] [ERROR][][utils/mem_log.c:94] [7646.84032][10767:10767][HBMEM] <hbmem_cache_invalid:601> Fail to invalidate buffer(ret=-16777214).
[stereonet_model_node-2]  [E][DNN][packed_model.cpp:437][Model](2025-06-04,19:57:23.921.217) hybrid model init fail 
[stereonet_model_node-2]  [E][DNN][packed_model.cpp:170][Model](2025-06-04,19:57:23.923.268) Load model failed, model file:/opt/tros/humble/share/hobot_stereonet/config/V22_disp96.bin 
[stereonet_model_node-2] [BPU ERROR]hbDNNInitializeFromFiles failederror code: 
[stereonet_model_node-2]  [E][DNN][hb_dnn.cpp:116][Model](2025-06-04,19:57:23.923.770) packed dnn handle is invalid 
[stereonet_model_node-2] [BPU ERROR]hbDNNGetModelNameList failederror code: 
[stereonet_model_node-2] Modle count <= 0
[stereonet_model_node-2]  [E][DNN][hb_dnn.cpp:116][Model](2025-06-04,19:57:23.923.825) packed dnn handle is invalid 
[stereonet_model_node-2] [BPU ERROR]hbDNNGetModelNameList failederror code: 
[stereonet_model_node-2] Modle count <= 0
[stereonet_model_node-2] [FATAL] [1749038243.923863720] [StereoNetNode]: stereonet model init failed
[stereonet_model_node-2] [FATAL] [1749038243.924661720] [StereoNetNode]: Node start failed
[hobot_codec_republish-4] [ERROR] [1749038248.636239681] [hobot_codec_encoder]: Hobot_Codec has not received image for more than 5 seconds! Please check whether the image publisher still exists by 'ros2 topic info /StereoNetNode/stereonet_visual'!
[websocket-5] [ERROR] [1749038248.670798973] [websocket]: Websocket did not receive image data! Please check whether the image publisher still exists by 'ros2 topic info /image_jpeg'!
[hobot_codec_republish-4] [ERROR] [1749038253.636203767] [hobot_codec_encoder]: Hobot_Codec has not received image for more than 5 seconds! Please check whether the image publisher still exists by 'ros2 topic info /StereoNetNode/stereonet_visual'!
[websocket-5] [ERROR] [1749038253.670777933] [websocket]: Websocket did not receive image data! Please check whether the image publisher still exists by 'ros2 topic info /image_jpeg'!
^Z
[10]+  Stopped                 ros2 launch hobot_stereonet stereonet_model_web_visual_v2.3.launch.py mipi_image_width:=640 mipi_image_height:=352 mipi_lpwm_enable:=False mipi_image_framerate:=30.0 need_rectify:=False height_min:=-10.0 height_max:=10.0 pc_max_depth:=5.0

你好,我相信您对系统软件版本的判断,但是,目前社区发布的最新的系统都经过了完整的QA测试,原则上不会出现低级的问题,所以还请按照发帖规范提供板卡信息来进一步排查。-
https://developer.d-robotics.cc/forumDetail/266442573995170050-

另外,手册中也有关于这部分的内容,在我们文档的右上角的搜索框中,搜索关键字,可以搜到相关信息,希望这条回复可以帮到您,祝您生活愉快!-
https://developer.d-robotics.cc/rdk_doc/RDK

遇到相同的问题,楼主问题解决了吗?

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


: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 模型时对内存要求较高,建议在非生产环境下优先使用低分辨率、低帧率模式进行调试,避免系统崩溃。