使用VSCODE跑orbslam2踩的坑

我用的是ubuntu22.04,opencv是4.7,使用其他的库感觉就算版本不一样,也能跑。

一、运行build.sh能够产生可执行文件遇到的问题

1.由于opencv版本高带来的问题

这些问题怎么定位出现在哪些文件中,你通过命令行,运行下面三句话,然后看报的错的文件

cd ORB_SLAM2
chmod +x build.sh
./build.sh
问题1:找不到opencv/cv.h

由于我用的是cv4,代码用的cv3,而cv4没有opencv/cv.h,网上查了查用其他的库替代

替代方式:

 如果还有类似的错就根据提示去查找问题的地方,然后进行修改。有两处需要多次修改的是当出现类似

问题2:出现类似error: ‘cvSolve’ was not declared in this scope

此时就在出错的文件里前面加上包含头文件:

 注意这个错误出现过好多次,需要修改的地方比较多

问题3:未定义标识符“CV_BGR2GRAY“
  • 错误原因:在新版本中,CV_BGR2GRAY被COLOR_BGR2GRAY替换。只需将CV改成COLOR就行。

在新版本中,CV基本都被COLOR替换。

问题4:error: ‘CV_LOAD_IMAGE_UNCHANGED’ was not declared in this scope

解决方案:CV_LOAD_IMAGE_UNCHANGED 改为 cv::IMREAD_UNCHANGED

2.c++ error: ‘decay_t’ is not a member of ‘std’

大概是c++版本的问题,在主目录下的CMakeLIists.txt上修改支持C++14标准

 3.ORB_SLAM安装问题error: ‘std::chrono::monotonic_clock’ has not been declared

4.报错“没有规则可制作目标” 以及报opencv>2.4.3找不到的问题

修改CMakeList.txt

注意不只是修改一部分,还有那个thirdparty里面的CMakeList.txt也需要修改!!

我遇到的大体上是这些错误,遇到其他错误不要慌,找找总会有解决方法!

二、在vscode上配置第三方库

 1. 首先是在c_cpp_properties.json增加库

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**",
                "/usr/local/include",
                "/usr/include/eigen3",
                "/usr/local/include/opencv4",
                "/home/gallagher/cpp_all/slam/ORB_SLAM2/include",
                "/usr/local/include/pangolin"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "windowsSdkVersion": "10.0.18362.0",
            "compilerPath": "/usr/bin/g++-11",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "msvc-x64"
        }
    ],
    "version": 4
}

运行任何一个Example里面的cc文件就会生成tasks.json和launch.json,其中tasks.json的配置如下(主要是-L和-I以及后面的连接库):

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++ 生成活动文件",
            "command": "/usr/bin/g++",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}",
                "-L",
                "/usr/local/lib",
                "-L",
                "/usr/lib",
                "-L",
                "/home/gallagher/cpp_all/slam/ORB_SLAM2/lib",
                "-I",
                "/usr/include/eigen3",
                "-I",
                "${workspaceFolder}/",
                "-I",
                "/usr/local/include/",
                "-I",
                "/usr/local/include/opencv4/",
                "-I",
                "/usr/local/include/sophus/",
                "-I",
                "/usr/include/suitesparse",
                "-I",
                "/usr/local/include/pangolin/",
                "-I",
                "/home/gallagher/cpp_all/slam/ORB_SLAM2/include",
                "/usr/local/lib/libpangolin.so",
                "/usr/local/lib/libopencv_*",
                "/usr/local/lib/libgstgl-1.0.so.0",
                "/usr/local/lib/libSophus.so",
                "/home/gallagher/cpp_all/slam/ORB_SLAM2/lib/libORB_SLAM2.so"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        },
        {
            "type": "cppbuild",
            "label": "C/C++: g++-11 生成活动文件",
            "command": "/usr/bin/g++-11",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}

三、点击调试按钮遇到的问题

1.由于pangolin版本带来的问题

这个库版本太高会带来下图中类似的问题,一般安装这个版本会带来这个问题:

GitHub - stevenlovegrove/Pangolin: Pangolin is a lightweight portable rapid development library for managing OpenGL display / interaction and abstracting video input.

 但是如果安装低版本又会带来编译不通过的结果,即会报下面的错误:

于是我在github上找打了一个折中的版本:

GitHub - zzx2GH/Pangolin: It's a correct package.

但是也会遇到【视觉slam14讲】第三章 Ubuntu18.04安装pangolin出现的问题_-dcpp11_no_boosr=1_qin__han的博客-CSDN博客但是遇到的问题上面链接可以解决,最终总算是解决了这个库带来的问题

2.第三方库Eigen问题

这是因为eigen的版本太高所导致的,去Eigen下载3.2.1

安装完成后出现

 但这个文件在目录中存在,这是因为你没有把工程文件下的libORB_SLAM2.so给移动到/usr/local/lib下面,运行下面的cp命令即可

 最终看下能够调试的结果:

以及命令行跑一个测试集的效果 

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
要在VSCode上运行高翔的SLAM,你需要按照以下步骤进行设置和配置: 1. 首先,确保你已经安装了VSCode和必要的插件。根据引用中提到的要求,你需要安装以下插件:C/C++,CMake,CMake Tools,Code Runner,Tabnine Auto-complete AI,One Dark Pro 黑暗主题以及Chinese(Simplified) Language 中文。 2. 然后,你需要将SLAM代码以及相关文件添加到你的工作目录中。根据引用中提到的路径,你可以将SLAM代码放在一个文件夹中,如"./examples/"。 3. 在VSCode中打开你的SLAM代码文件夹,确保你正在使用正确的工作目录。 4. 接下来,你需要配置CMake和编译器。根据引用中的描述,你在VSCode中无法编译和运行SLAM代码。为了解决这个问题,你可以打开VSCode的设置,找到"C/C++: Edit Configurations (JSON)"选项,并添加以下配置到"configurations"部分: ```json { "name": "Linux", "includePath": [ "${workspaceFolder}/**", "/usr/include", "/usr/local/include", "/usr/include/eigen3", "/path/to/pangolin" // 替换成你的pangolin头文件路径 ], "defines": [], "compilerPath": "/usr/bin/g++", // 替换成你的编译器路径 "cStandard": "gnu17", "cppStandard": "gnu++14", "intelliSenseMode": "gcc-x64" } ``` 请注意替换配置中的"/path/to/pangolin"为你的pangolin头文件的路径,以及"/usr/bin/g++"为你的编译器路径。 5. 保存配置文件,并重新打开你的SLAM代码文件夹。 6. 现在你应该能够在VSCode中编译和运行SLAM代码了。你可以使用Code Runner插件来运行代码,或者使用CMake插件进行更多高级的配置。 希望以上步骤能帮助你在VSCode上成功运行高翔的SLAM代码。如果你遇到任何问题,请及时查看引用中提供的链接或参考相关文档来获取更多帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GallagherZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值