ORB-slam2编译问题修改

1. orb-slam2文件下与其thirdparty/DBoW2文件下的cmakelist.txt中的opencv3.0等修改为你所使用的opencv版本,我使用的是opencv4.4,所以都修改成4.4

2.orb_slam2中的include/ORBextractor.h文件打开#include <opencv/cv.h>
替换为

#include "opencv2/imgcodecs/legacy/constants_c.h"

#include <opencv2/highgui/highgui_c.h>

3. 在orb_slam2/include中的LoopClosing.h文件
typedef map<KeyFrame*,g2o::Sim3,std::less<KeyFrame*>,
        Eigen::aligned_allocator<std::pair<const KeyFrame*, g2o::Sim3> > > KeyFrameAndPose;
修改为
typedef map<KeyFrame*,g2o::Sim3,std::less<KeyFrame*>,
        Eigen::aligned_allocator<std::pair<KeyFrame *const, g2o::Sim3> > > KeyFrameAndPose;

4.  出现error: ‘CV_LOAD_IMAGE_UNCHANGED’ was not declared in this scope错误
将CV_LOAD_IMAGE_UNCHANGED换成IMREAD_UNCHANGED并在代码头文件下面添加命名空间using namespace cv;

需要的文件有:
Examples/Monocular/mono_euroc.cc
Examples/Monocular/mono_kitti.cc
Examples/Monocular/mono_tum.cc
Examples/Stereo/stereo_euroc.cc
Examples/Stereo/stereo_kitti.cc
Examples/RGB-D/rgbd_tum.cc

 需要增加#include <unistd.h>的文件有:
Examples/Monocular/mono_euroc.cc
Examples/Monocular/mono_kitti.cc
Examples/Monocular/mono_tum.cc
Examples/RGB-D/rgbd_tum.cc
Examples/Stereo/stereo_euroc.cc
Examples/Stereo/stereo_kitti.cc
src/LocalMapping.cc
src/LoopClosing.cc
src/System.cc
src/Tracking.cc
src/Viewer.cc

这些都是在slam3中的文件进行修改,只要把以上修改完成之后就能够往后运行基本不会出错。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 您好,可能是由于您的环境配置或者依赖库不完整导致的编译失败。建议您检查一下环境配置和依赖库是否正确安装,并且可以尝试重新下载ORB-SLAM2并重新编译。如果问题仍然存在,可以提供更具体的错误信息以便更好地帮助您解决问题。 ### 回答2: ORB-SLAM2是一款基于ORB特征以及单目、双目、RGB-D相机的实时稀疏SLAM系统,常用于机器人导航、增强现实等领域。该系统的编译过程需要经过多个步骤,其中可以使用build.sh脚本自动完成编译,但在实际操作中也可能会出现编译失败的情况。 下面我将就ORB-SLAM2编译build.sh失败的几种可能原因进行一一分析: 1. 缺少必要环境 在编译ORB-SLAM2之前,需要准备好一些必要的库和环境,例如:CMake、OpenCV、Eigen、Pangolin、g2o、OpenBLAS、Boost等。如果某些库没有安装、或者版本不对,就会影响编译过程。可以通过查看控制台输出信息,看看是不是缺少了哪些依赖项,进而尝试安装和配置这些环境。 2. 编译选项不正确 在使用build.sh脚本编译时,需要手动设置编译选项,例如“-DOPENCV_INCLUDE_DIRS”、“-DPangolin_INCLUDE_DIRS”等。如果这些选项设置不正确,就会导致编译失败。可以查看编译选项是否正确,或者尝试在命令行模式下手动编译,并指定正确的编译选项。 3. 文件权限问题 在Linux系统中,有些文件需要有执行权限才能执行,否则就会提示编译错误。如果使用build.sh脚本编译失败,有可能是由于没有给脚本文件赋予执行权限。可以使用“chmod +x build.sh”命令为脚本文件添加可执行权限,并再次进行编译。 4. 安装路径问题 编译ORB-SLAM2时,需要指定安装路径,如果指定的路径不存在或没有权限,则会编译失败。可以查看安装路径是否正确,并确保有相应的写入权限。 在实际操作时,如果编译build.sh失败,可以根据上述几种可能原因逐一排查,解决问题。此外,还可以查看终端控制台打印的错误信息,以便更快地定位问题。同时,建议参考ORB-SLAM2编译指南,详细了解编译过程中可能遇到的问题和解决方法,提高编译的成功率。 ### 回答3: ORB-SLAM2是一种用于实时定位与地图构建(SLAM)的开源代码库,适用于单个移动摄像头或带有RGB-D传感器的机器人。在安装和使用ORB-SLAM2时,经常会出现build.sh编译失败的情况。下面是解决这个问题的一些常见方法: 1. 检查CUDA和OpenCV等依赖库是否已正确安装。在编译ORB-SLAM2之前,请务必确保CUDA和OpenCV等依赖库已正确安装,并正确设置了环境变量。 2. 检查CMakeLists.txt文件是否正确。在编译ORB-SLAM2之前,请检查CMakeLists.txt文件中的路径是否正确,特别是OpenCV库的路径。 3. 创建一个干净的构建目录。如果使用的是原始版本的ORB-SLAM2,请尝试在一个新的构建目录中重新编译代码,以确保缓存和配置文件的问题编译造成的影响最小。 4. 尝试重新克隆代码。如果在以上步骤下仍然无法解决问题,请尝试重新克隆最新版本的ORB-SLAM2代码,并在干净的构建目录中编译代码。 5. 寻求帮助。如果您已经尝试了以上步骤但仍然无法解决问题,请尝试在ORB-SLAM2社区或其他相应论坛上寻求帮助。可能会有其他使用者遇到过相似的问题,或者有经验的人可以提供更深入的帮助。 总之,编译ORB-SLAM2的过程中可能会出现各种各样的问题,需要耐心地逐一查找。通过仔细检查环境变量、CMakeLists.txt文件、构建目录和代码库等方面,以及求助其他人的帮助,您应该能够处理编译失败的问题,并成功运行ORB-SLAM2。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值