快看,那个学SLAM 的崩溃了!

本文列举了当前优秀的SLAM开源方案,包括纯视觉、多传感器融合和与深度学习结合的方案。同时指出SLAM学习者在看论文、跑代码、测试等阶段面临诸多困境,浪费大量时间。计算机视觉life欲解读流行开源方案,助学习者少踩坑,还邀请研究者加入。

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

点“计算机视觉life”关注,置顶更快接收消息!


本文列举了当前优秀SLAM方案,点出了SLAM学习者的困境,最后打算搞点大事

请把此文转发给你认识的SLAM大神,愿你头发浓密,心想事成

当前优秀SLAM方案一览

研究SLAM的小伙伴入门的时候都经历过痛苦阶段,这是因为SLAM是个系统工程,算法比较难实现。但好在有不少优秀的开源代码可以借鉴,这里列举一些目前比较流行的开源SLAM方案(分类方式不一定科学,凑合看哈):

纯视觉SLAM开源方案:

稀疏地图

  • ORB SLAM v2 (单目、双目、RGB-D)

半稠密地图

  • LSD SLAM (单目、双目、RGB-D)
  • DSO (单目)
  • SVO(单目, 仅VO)

稠密地图

  • RGB-D SLAM V2 (RGB-D)
  • Kintinuous (RGB-D)
  • Elastic Fusion (RGB-D)
  • Bundle Fusion (RGB-D)
  • InfiniTAM (RGB-D)
  • RTAB-Map (RGB-D,双目,LIDAR)

多传感器融合

  • VINS (单目+IMU、双目+IMU)
  • OKVIS (单目+IMU、双目+IMU)
  • ROVIO (单目+IMU)
  • RKSLAM (单目+IMU)
  • Cartographer (LIDAR + IMU)
  • V-LOAM (单目+LIDAR)

和深度学习结合

  • CNN-SLAM: 将LSD-SLAM里的深度估计和图像匹配都替换成基于CNN的方法,并可以融合语义
  • VINet : Visual-inertial odometry as a sequence-to-sequence learning problem: 利用CNN和RNN构建了一个VIO,即输入image和IMU信息,直接输出估计的pose
  • 3DMV: Joint 3D-Multi-View Prediction for 3D Semantic Scene Segmentation: 联合3D多视图预测网络在室内环境中进行RGB-D扫描的3D语义场景分割
  • ScanComplete: Large-Scale Scene Completion and Semantic Segmentation for 3D Scans: 将场景的不完整3D扫描作为输入,能够预测出完整的3D模型以及每个体素的语义标签
  • DeepVO: A Deep Learning approach for Monocular Visual Odometry
  • Lightweight Unsupervised Deep Loop Closure: 用CNN解决闭环问题

以上不全,还请大神留言补充哈

下面是重点~

那些年有没有哭晕在厕所?

很多研究SLAM的小伙伴通常会经历以下阶段:

  1. 看SLAM相关的论文,发现很多公式、理论看不懂,好不容易努力看了个大概,也不知道具体怎么用。
  2. 于是去跑开源代码,安装调试出错,网上也找不到解决方案。不知道是环境配置问题还是代码有bug。
  3. 好不容易跑通了代码。在实际测试时发现问题很多,远不如论文里写的那么牛逼,不知道这个算法的适用场景是什么。抓不住重点瞎折腾,浪费了时间。
  4. 没办法,硬着头皮去看代码,代码量又非常大,看起来非常痛苦,急需大牛帮忙梳理思路。
  5. 摸索了很久,终于发现有几个点(藏的很深)好像比较影响算法性能,还发现了一些trick的东西。自己也不会改进,感觉被骗了,纠结要不要换个开源试试。
  6. 反反复复好不容易找到适合自己的开源方案,发现上面过程要再来一遍,想要理清代码,搞懂原理也要花费大量精力,更别提改进代码了。
  7. 哭晕在SLAM的汪洋大海里。。。

学习SLAM中经历上述阶段是令人痛苦的,关键是浪费了很多宝贵的时间,即使是SLAM大神,我估计或多或少都经历过上述阶段。如果一开始有大神指点一下,肯定能绕开不少坑吧

希望在这里

基于此,计算机视觉life想要做一件事情,就是解读目前流行的开源SLAM方案(包括但不限于上述列表),帮助SLAM学习者少踩坑。如果你是一位SLAM研究者,对目前SLAM流行的开源方案有一定研究,可以加入我们,一起搞点大事。

加入方法:

请简单介绍一下自己的基本信息,如果能直接附上简历(可选)就更好啦,基本信息包括但不限于:

姓名、微信号、所在学校/公司、熟悉哪个SLAM框架,可以详细描述一下特长:比如对xx开源算法熟悉原理应用,做过xx项目,发表过xx论文,主导过xx产品等。

以上越详细越好,请务必留下微信号,方便取得联系

本文长期有效,请将上述信息发送至 simiter@126.com,邮件标题「开源SLAM」。不管是否通过筛选,一周内都会收到回复。

最后,请把此文转发给你认识的SLAM大神,愿你头发浓密,心想事成

推荐阅读

从零开始一起学习SLAM | 为什么要学SLAM?
从零开始一起学习SLAM | 学习SLAM到底需要学什么?
从零开始一起学习SLAM | SLAM有什么用?
从零开始一起学习SLAM | C++新特性要不要学?
从零开始一起学习SLAM | 为什么要用齐次坐标?
从零开始一起学习SLAM | 三维空间刚体的旋转
从零开始一起学习SLAM | 为啥需要李群与李代数?
从零开始一起学习SLAM | 相机成像模型
从零开始一起学习SLAM | 不推公式,如何真正理解对极约束?
从零开始一起学习SLAM | 神奇的单应矩阵
从零开始一起学习SLAM | 你好,点云
从零开始一起学习SLAM | 给点云加个滤网
从零开始一起学习SLAM | 点云平滑法线估计
从零开始一起学习SLAM | 点云到网格的进化
从零开始一起学习SLAM | 理解图优化,一步步带你看懂g2o代码
零基础小白,如何入门计算机视觉?
SLAM领域牛人、牛实验室、牛研究成果梳理
我用MATLAB撸了一个2D LiDAR SLAM
可视化理解四元数,愿你不再掉头发
最近一年语义SLAM有哪些代表性工作?
视觉SLAM技术综述
汇总 | VIO、激光SLAM相关论文分类集锦

<think>好的,我现在需要解决用户在ORB-SLAM3中遇到的cv::Exception错误导致程序终止的问题。根据用户提供的引用内容,这个问题通常与路径错误有关。首先,我应该回顾用户提供的四个引用,看看有没有共同点和解决方案。 引用1提到加载模块失败,导致抛出cv::Exception异常。引用2指出路径不正确是可能的原因,并提到Windows和Linux下的不同解决方法。引用3中的例子是在运行视觉SLAM十四讲中的例子时,路径错误导致的问题,解决办法是调整运行命令中的路径或图片位置。引用4同样强调图片路径的问题,建议将图片放在可执行文件目录下。 综合这些信息,用户的问题很可能出在ORB-SLAM3的配置文件或启动命令中的路径设置不正确。例如,配置文件中的图像路径、词汇文件路径或者相机参数文件路径可能没有正确指定,或者在运行程序时没有传递正确的参数。 接下来,我应该分步骤考虑可能的解决方案: 1. **检查文件路径**:确保所有在配置文件中提到的文件(如YAML参数文件、词汇表vocabulary文件、图像或数据集路径)都正确无误。特别是绝对路径和相对路径的使用是否正确,尤其是在不同的操作系统下,路径分隔符可能不同(Windows用反斜杠,Linux用正斜杠)。 2. **运行命令中的路径参数**:用户可能在运行ORB-SLAM3的可执行文件时,没有正确传递参数。例如,需要指定配置文件的路径、词汇文件的路径等。如果可执行文件在build目录下,而配置文件在上一级目录,可能需要使用相对路径如../EuRoC.yaml。 3. **检查文件是否存在和权限**:确认所有需要的文件确实存在于指定的路径,并且应用程序有权限读取这些文件。有时候文件可能被误删或移动,或者权限设置不正确导致无法访问。 4. **环境变量和依赖库**:虽然引用中没有提到,但OpenCV的版本兼容性问题也可能导致异常。用户应检查ORB-SLAM3所需的OpenCV版本是否正确安装,并且环境变量配置正确,例如LD_LIBRARY_PATH是否包含OpenCV的库路径。 5. **示例中的具体解决步骤**:根据引用3和4,将图片或数据文件复制到可执行文件所在目录,或者在运行命令中正确指定相对路径可能解决问题。在ORB-SLAM3中,可能需要类似的操作,比如调整配置文件中的路径或运行命令中的参数。 6. **错误信息的具体内容**:用户应该详细查看异常信息,OpenCV通常会提示具体的错误原因,如无法打开文件、找不到模块等。根据具体的错误信息可以更快定位问题所在。 7. **代码中的硬编码路径**:检查ORB-SLAM3的源代码中是否有硬编码的文件路径,可能在编译时或运行时需要修改这些路径以适应本地环境。 总结下来,用户需要逐步检查路径配置、文件存在性、权限以及依赖库,并根据具体的错误信息调整路径设置。如果用户能提供更详细的错误日志,可以更精确地定位问题,但基于现有信息,路径错误是最可能的原因,需要重点排查。</think>### ORB-SLAM3中`cv::Exception`导致程序终止的解决方案 #### 问题分析 `terminate called after throwing an instance of 'cv::Exception'`错误通常由以下原因导致: 1. **文件路径错误**:OpenCV无法读取配置文件、数据集或词汇表文件[^3][^4]。 2. **依赖库版本冲突**:OpenCV版本与ORB-SLAM3不兼容。 3. **权限问题**:程序无权访问文件或摄像头设备。 --- ### 逐步解决方案 #### 1. **检查文件路径配置** ORB-SLAM3依赖多个外部文件(如相机参数文件、词汇表文件等),需确保路径正确。 - **配置文件路径**:检查`*.yaml`文件中图像路径、相机参数等是否为**绝对路径**或**正确的相对路径**。例如: ```yaml # EuRoC.yaml 示例 Camera.xxx: ... ImageFolder: "/home/user/data/MH_01_easy/mav0/cam0/data" # 需替换为实际路径 ``` - **启动命令参数**:运行可执行文件时,需按顺序传递参数: ```bash ./Examples/Monocular/mono_euroc Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml /数据集路径 ``` 若可执行文件在`build`目录下,需使用`../`调整路径层级。 #### 2. **验证文件存在性** 使用`ls`或文件管理器确认以下文件存在: - 词汇表文件:`ORBvoc.txt`(通常需从ORB-SLAM3官方下载)。 - 相机参数文件:如`EuRoC.yaml`、`TUM1.yaml`。 - 数据集/图像文件:检查路径中是否包含空格或特殊字符(建议路径纯英文)。 #### 3. **调整文件权限** 若在Linux系统下运行,需赋予可执行文件和数据集**读取权限**: ```bash chmod +x ./Examples/Monocular/mono_euroc chmod -R 755 /path/to/dataset ``` #### 4. **检查OpenCV版本兼容性** ORB-SLAM3需与OpenCV 3.x或4.x兼容,可通过以下命令查看版本: ```bash pkg-config --modversion opencv ``` 若版本冲突,需重新编译ORB-SLAM3并指定OpenCV路径: ```bash cmake -D OpenCV_DIR=/usr/local/opencv-3.4.15 .. ``` #### 5. **调试具体错误信息** 通过`gdb`定位异常抛出位置: ```bash gdb ./Examples/Monocular/mono_euroc run Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml /数据集路径 ``` 若错误提示`imread failed`,则确认图像路径;若提示`failed to open camera`,检查摄像头设备号[^2]。 --- ### 示例解决方案 **问题场景**:运行单目EUROC数据集时崩溃。 1. 修改`EuRoC.yaml`中的`ImageFolder`为实际数据集路径。 2. 将词汇表文件`ORBvoc.txt`复制到`build`目录下。 3. 运行命令: ```bash ./Examples/Monocular/mono_euroc ../Vocabulary/ORBvoc.txt ../Examples/Monocular/EuRoC.yaml /home/user/data/MH_01 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值