• 自学SLAM(2)---保姆教程教你如何使用自己的视频运行ORB-SLAM2


    前言

    在这里插入图片描述

    如果你是新手入门,仅仅只会Linux的基本操作,并看了高翔老师视觉SLAM视屏的第一讲,那么你需要准备一整天的时间,可能还不一定能运行出来!运行ORB-SLAM2将会安装很多很多东西。那么,我们准备开始!!

    我是默认你已经装了虚拟机和Ubuntu系统的!!

    首先先展示一下成果吧,我只能说网上那么多教程都是有漏洞不完整,要么就是一本正经的胡写,有很多问题,我花了整整一天的时间才解决,那么就来看看这个最详细的保姆级教程吧。
    在这里插入图片描述


    1.安装能使Linux和你电脑交互的软件(Xshell和Xftp)

    我之前的博客:
    链接: Linux使用之xshell、xftp保姆教学(含安装包,详细使用方法,连接失败解决方法)

    如果你有其他工具,用你的工具即可。

    为了实际运⾏ ORB-SLAM2,你需要安装它的依赖项,并通过它本⾝的编译。它的依赖项见它⾃⼰的 github主页,请按照主页上的提⽰安装好 ORB-SLAM2 的依赖项。具体来说,对于 pangolin(⼀个 GUI库),你需要下载并安装它,它同样是个 cmake ⼯程,所以我不必谈怎么编译安装的细节了。对于 opencv 和eigen3,你可以简单的⽤⼀⾏命令来解决:

    sudo apt-get install libopencv-dev libeigen3-dev libqt4-dev qt4-qmake libqglviewer-dev libsuitesparse-devlibcxsparse3.1.2 libcholmod-dev
    这行代码现在已经用不了了,请大家不要使用,按照下面我的第二步,安装环境慢慢来!!!

    2.安装环境,以及运行ORB_SLAM2的必备软件

    安装cmake,git ,gcc ,g++,vim编辑器,ORB_SLAM2源码,Pangolin , OpenCV , Eigen,TUM 数据集等等。
    一步一步来,安装这几个软件可能花费你几个小时的时间,甚至更多。

    # 更新apt库,更新软件列表
    sudo apt-get update
    
    • 1
    • 2
    # 安装git,用于从Github上克隆项目到本地
    sudo apt-get install git
    # 安装cmake,用于程序的编译
    sudo apt-get install cmake
    # 安装gcc和g++,安装c和c++编译器
    sudo apt-get install gcc g++
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    #安装vim编辑器,我使用的是vim,如果你使用gedit也可以
    sudo apt-get install vim
    
    • 1
    • 2
    //直接在高翔博士的github上拷贝ORB_SLAM2源码
    git clone https://github.com/raulmur/ORB_SLAM2 
    
    • 1
    • 2

    下面是安装几个大应用环境
    1.安装Pangolin
    1.1安装依赖项

    sudo apt-get install libgl1-mesa-dev
    sudo apt-get install libglew-dev
    sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev
    sudo apt-get install libpython2.7-dev
    
    • 1
    • 2
    • 3
    • 4

    下面需要大家下载pangolin,然后使用Xftp传输到linux系统中,后面几个需要下载的文件也在这个连接中。
    链接:https://pan.baidu.com/s/1vdJwa4TZBjwwPAKBXPSMQQ
    提取码:lusq

    解压什么的我就不再说了,自己操作

    # 解压并重命名为Pangolin
    unzip Pangolin-0.6.zip && mv Pangolin-0.6 Pangolin
    
    • 1
    • 2
    # 开始编译和安装
    cd Pangolin
    mkdir build && cd build 
    cmake -DCPP11_NO_BOOST=1 ..
    sudo make install
    
    • 1
    • 2
    • 3
    • 4
    • 5
    # 验证是否安装成功
    cd ../examples/HelloPangolin
    mkdir build && cd build
    cmake ..
    make
    ./HelloPangolin
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    安装新东西之前记得返回主目录!!
    2.安装openCV
    2.1安装依赖项

    # 解决:Unmet dependencies.Try'apt--fix-broken install'with no packages(or specify a solution)
    sudo apt --fix-broken install
    sudo apt-get update
    sudo apt-get upgrade
    
    sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev
    sudo apt-get install libtiff5.dev libswscale-dev
    
    # 解决:add-apt-repository: command not found
    sudo apt-get install software-properties-common
    
    sudo apt-get update
    sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
    sudo apt-get update
    sudo apt-get install libjasper1 libjasper-dev
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    下面需要大家下载openCV,然后使用Xftp传输到linux系统中,后面几个需要下载的文件也在这个连接中。
    链接:https://pan.baidu.com/s/1vdJwa4TZBjwwPAKBXPSMQQ
    提取码:lusq

    # 解压并重命名为opencv
    tar -xvf opencv-3.4.5.tar.gz && mv opencv-3.4.5 opencv
    # 开始编译和安装
    cd opencv
    mkdir build && cd build 
    cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
    # 4线程数量,根据电脑性能选择合适的数字
    make -j4
    sudo make install
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    提示:安装openCV的时候你大概概率会遇到ippicv下载问题,线:ippicv_2019_lnx_intel64_general_20180723.tgz你可以参考如下:
    链接: 解决ippicv_2019问题

    # 查询OpenCV版本
    pkg-config --modversion opencv
    # 查询OpenCV库
    pkg-config --cflags opencv
    # 查询头文件目录
    pkg-config --libs   opencv
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    # 验证是否安装成功
    cd opencv/samples/cpp/example_cmake
    cmake .
    make
    ./opencv_example
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述
    安装新东西之前记得返回主目录!!
    3.安装Eigen
    下面需要大家下载Eigen,然后使用Xftp传输到linux系统中,后面几个需要下载的文件也在这个连接中。
    链接:https://pan.baidu.com/s/1vdJwa4TZBjwwPAKBXPSMQQ
    提取码:lusq

    # 解压并重命名为opencv
    tar -xvf eigen-3.3.7.tar.gz && mv eigen-3.3.7 eigen
    # 开始编译和安装
    cd eigen
    mkdir build && cd build
    cmake ..
    make
    sudo make install
    
    # 在很多程序中include时经常使用#include <Eigen/Dense>而不是使用#include <eigen3/Eigen/Dense>
    # 因此安装后需要将头文件从 /usr/local/include/eigen3/ 复制到 /usr/local/include
    # 后续小节会有C++测试代码说明
    sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    # 建立 test 测试文件
    touch test_eigen.cpp
    # 用vim打开此测试文件,添加C++代码用于测试
    vim test_eigen.cpp
    # 编译后生成一个test_eigen的可执行文件
    g++ test_eigen.cpp -o test_eigen
    # 在test_eigen可执行文件目录下执行以下命令,证明eigen库安装完成
    ./test_eigen
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在test_eigen.cpp文件中添加的C++测试代码如下:

    #include 
    //需要将头文件从 /usr/local/include/eigen3/ 复制到 /usr/local/include
    #include 
    //using Eigen::MatrixXd;
    using namespace Eigen;
    using namespace Eigen::internal;
    using namespace Eigen::Architecture;
    using namespace std;
    int main()
    {
            cout<<"*******************1D-object****************"<<endl;
            Vector4d v1;
            v1<< 1,2,3,4;
            cout<<"v1=\n"<<v1<<endl;
     
            VectorXd v2(3);
            v2<<1,2,3;
            cout<<"v2=\n"<<v2<<endl;
     
            Array4i v3;
            v3<<1,2,3,4;
            cout<<"v3=\n"<<v3<<endl;
     
            ArrayXf v4(3);
            v4<<1,2,3;
            cout<<"v4=\n"<<v4<<endl;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    在这里插入图片描述

    3.运行前准备工作

    这是给大家准备的视频,在ORB_SLAM2中运行的就是这个

    链接:https://pan.baidu.com/s/1MRtDGEavtWjJYQLAkE_-AA
    提取码:p5df

    在这里插入图片描述

    add_executable(myvideo Examples/Monocular/myvideo.cpp)
    target_link_libraries(myvideo ${PROJECT_NAME})
    
    • 1
    • 2

    注意了,上面的myvideo后面的只是路径而已没什么难的,如果有问题的话可以看一下我的上一篇博客,学习一下:
    链接: 自学SLAM(1)

    将code中其中三个文件都拷贝到 ORB_SLAM2/Examples/Monocular 中
    在这里插入图片描述
    然后修改myvideo.cpp
    在这里插入图片描述
    注意需要将Vocabulary也拷贝进去
    在这里插入图片描述

    还有一件事!!
    在这里插入图片描述
    j后面的数字就是你虚拟机的运行内存,有的人配置太低了j4也会卡死,根据你虚拟机的配置来!

    这时候我们就可以准备编译了

    4.编译工作

    编译的时候我们可能会有几个错误
    错误1:

    一个是出现usleep的错误:这个错误解决方法如下:
    直接在 ORB_SLAM2/include/System.h 中加上 #include 即可

    错误2:关于Loop的问题
    在LoopCloseing.h中将代码:

    typedef map,
    Eigen::aligned_allocator > > KeyFrameAndPose;

    改为

    typedef map,
    Eigen::aligned_allocator > > KeyFrameAndPose;

    因为我只遇到了这两个问题,所以其他问题大家可以多搜搜,然后还有一个需要注意的地方:
    !!!如果不是第一次编译运行的话(即在./build.sh编译之前)
    !!!在运行之前,手动进到Thirdparty里的g2o和DboW2两个文件都把你新建的build删了(是的,删了),再把ORB-SLAM下面那个build文件夹删了(不是删build.sh).

    开始编译:

    cd ORB_SLAM2
    # 赋予shell文件运行权限
    chmod +x build.sh
    ./build.sh
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

     ./myvideo
    
    • 1

    在这里插入图片描述
    我们就运行成功了
    下一期,我会写如何调用摄像头来运行ORB_SLAM2,觉得有用的小伙伴可以关注我哦,我是一个在读研究生,研究方向是视觉SLAM,在不断自学中,也希望有能力的小伙伴多多帮助我!
    在这里插入图片描述

  • 相关阅读:
    centos 上安装 kafka 与 python 调用
    OpenCV图像处理学习五,图像的线性混合叠加
    SpringBoot 拦截org.thymeleaf.exceptions.TemplateInputException异常
    minio拉取的时候报错了
    C语言——写一个函数,每调用一次这个函数,就会将num的值增加1
    算法篇-------贪心2
    数据分析思维(一)|信度与效度思维
    解锁新姿势,揭秘如何通过公众号迁移方式给自己的爱号开通留言板功能
    软件测试之测试程序开发
    NNDL:作业3:分别使用numpy和pytorch实现FNN例题
  • 原文地址:https://blog.csdn.net/qq_57425280/article/details/133579544