RGBDSLAM 运行出错:terminate called after throwing an instance of 'pcl::IOException'

本文记录了在使用高博士的RGBDSLAM2过程中遇到的问题及解决方案,特别是在安装了OpenCV3.2.0后如何正确配置编译路径,并解决了因为空指针操作导致的点云数据异常错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


在学习高博士一起做RGBDSLAM2时,遇到一些问题,现在记录下来:


由于安装了OpenCV 3.2.0,所以在编译的时候,每次需要添加一下cmake路径:

cmake -DCMAKE_PREFIX_PATH=/home/limz/Cmake_module/opencv-3.2.0/build ..

中间的路径是opencv安装的路径;


运行时出错,提示:

point cloud size = 0
terminate called after throwing an instance of 'pcl::IOException'
  what():  : [pcl::PCDWriter::writeASCII] Input point cloud has no data!
已放弃 (核心已转储)

出现问题的原因是对空指针进行操作,分析之后发现,没有对图像进行处理,所以没有对点云赋值,点云指针就是空指针。

解决办法,在包含data文件夹路径下运行程序

<think>好的,用户在使用lmdeploy时遇到了错误:terminate called after throwing an instance of 'std::runtime_error'。我需要先分析这个问题的可能原因,并给出解决方法。 首先,这个错误提示是C++程序中的异常,std::runtime_error通常是运行时发生的错误,可能的原因有很多。我需要分步骤考虑可能的因素。 第一步,检查环境依赖。lmdeploy可能依赖某些库或工具,比如CUDA版本是否正确,动态库是否缺失。用户需要确认CUDA是否正确安装,版本是否符合要求。运行nvidia-smi和nvcc --version可以查看驱动和CUDA版本是否一致。另外,使用ldd命令检查可执行文件依赖的库是否存在,特别是CUDA相关库如libcudart.so。 第二步,检查模型文件。模型文件损坏或路径错误可能导致加载失败。用户需要确认模型路径是否正确,文件是否完整。如果是下载的模型,可能需要重新下载或校验哈希值。 第三步,检查配置参数。配置文件中的参数错误,比如batch_size过大,或者显存不足,也可能引发运行时错误。建议用户检查配置文件,适当调整参数,或者尝试减小batch_size看看问题是否解决。 第四步,查看完整错误日志。这个错误信息可能只是最后的结果,前面可能有更详细的错误描述。用户需要检查终端输出的完整日志,或者查看是否有生成的日志文件,里面可能包含具体的错误原因,比如某个库加载失败或者显存不足。 第五步,更新软件版本。lmdeploy本身可能存在bug,或者用户的环境中有过时组件。建议用户升级lmdeploy到最新版本,同时确保依赖库如PyTorch、Transformers等也是兼容的版本。 第六步,权限问题。有时候文件或目录的权限不正确,导致程序无法访问必要的资源。需要检查模型文件和相关目录的读写权限,确保当前用户有权限访问。 第七步,社区支持。如果以上步骤都无法解决问题,建议用户查阅lmdeploy的官方文档、GitHub的Issues页面,或者向开发者社区提交问题,附上详细的错误日志和环境信息,以便更精准地获得帮助。 总结,用户需要逐步排查环境依赖、模型文件、配置参数、日志信息等方面的问题,并结合更新软件和寻求社区支持来解决这个错误。</think>遇到`std::runtime_error`错误时,说明`lmdeploy`在运行过程中触发了C++层的异常。以下是分步排查方案: --- ### **步骤1:检查环境依赖** *⚠️ 80%的类似错误由环境问题引起* ```bash # 确认CUDA可用性 nvidia-smi # 检查GPU驱动是否正常 nvcc --version # 检查CUDA版本是否匹配lmdeploy要求 ldd $(which lmdeploy) | grep "not found" # 检查动态库是否缺失 ``` 若发现类似`libcudart.so.11: not found`的提示,需重新安装对应版本的CUDA工具包。 --- ### **步骤2:验证模型完整性** *常见于模型文件损坏或路径错误* ```bash # 检查模型文件哈希值(需对比官方提供值) md5sum your_model.bin # 检查模型加载命令格式是否正确 lmdeploy serve api_server ./your_model --model-format=hf --tp=2 ``` --- ### **步骤3:显存监控** *通过`watch -n 0.1 nvidia-smi`实时观察显存占用,如果显存峰值超过物理显存容量,需:* 1. 减小`--max_batch_size` 2. 降低`--max_seq_len` 3. 启用`--use_dynamic_ntk`扩展上下文 --- ### **步骤4:获取完整错误栈** *通过gdb获取C++层堆栈信息(需安装debug符号):* ```bash gdb --args python3 -m lmdeploy.serve.client 2>&1 | tee error.log (gdb) run # 运行至崩溃 (gdb) bt full # 打印完整堆栈 ``` --- ### **典型错误场景对照表** | 错误特征 | 解决方案 | |-----------------------------------|------------------------------| | `CUDA error: out of memory` | 减少batch size或使用量化版本 | | `Failed to load tokenizer` | 检查`tokenizer.model`路径 | | `Invalid model format` | 添加`--model-format=hf/awq` | | `ncclCommInitRank failed` | 检查多卡通信环境变量 | --- ### **高级调试方案** 若仍无法解决,建议: 1. 提交GitHub Issue时附带: ```bash lmdeploy debug --env # 生成环境诊断报告 ``` 2. 最小化复现代码示例 3. 提供`/var/log/syslog`中cuda相关错误日志 --- 请按上述步骤排查后,将关键信息补充到问题描述中,以便进一步分析。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值