• 05-旭日X3派测评——Open Cv &Pangolin等库安装&ORB_SLAM2 安装运行


    环境配置

    1.安装依赖项

    sudo apt-get install libglew-dev
    sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev
    sudo apt-get install ffmpeg libavcodec-dev libavutil-dev libavformat-dev libswscale-dev
    sudo apt-get install libpng-dev
    
    • 1
    • 2
    • 3
    • 4

    2.安装Pangolin

    根据经验运行ORB——SLAM2,Pangolin不能太高,选择05版本,下载地址如下:

    https://github.com/stevenlovegrove/Pangolin/releases/tag/v0.5
    
    • 1

    编译运行

    cd Pangolin-0.5
    mkdir build && cd build
    cmake -DCPP11_NO_BOOST=1 ..
    make -j2
    sudo make install
    
    • 1
    • 2
    • 3
    • 4
    • 5

    (没有使用make-j,使用了2个线程,避免系统卡死)

    验证

    cd ..
    cd examples/HelloPangolin
    mkdir build && cd build
    cmake ..
    make
    ./HelloPangolin
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    安装成功的话,会出现以下图片:

    安装05版本遇到的问题,例如:

    //1.error: ‘AV_PIX_FMT_XVMC_MPEG2_MC’ was not declared in this scope
    /home/andy/Downloads/Pangolin/src/video/drivers/ffmpeg.cpp: In function ‘std::__cxx11::string pangolin::FfmpegFmtToString(AVPixelFormat):
    /home/andy/Downloads/Pangolin/src/video/drivers/ffmpeg.cpp:41:41: error: ‘AV_PIX_FMT_XVMC_MPEG2_MC’ was not declared in this scope
    
    //2.error: ‘AVFMT_RAWPICTURE’ was not declared in this scope
    #define TEST_PIX_FMT_RETURN(fmt) case AV_PIX_FMT_##fmt: return #fmt; /home/andy/Downloads/Pangolin/src/video/drivers/ffmpeg.cpp: In member
    function ‘void
    pangolin::FfmpegVideoOutputStream::WriteFrame(AVFrame*):
    /home/andy/Downloads/Pangolin/src/video/drivers/ffmpeg.cpp:572:39:
    error: ‘AVFMT_RAWPICTURE’ was not declared in this scope
    if (recorder.oc->oformat->flags & AVFMT_RAWPICTURE) {
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    都可以参考如下帖子解决:
    视觉SLAM十四讲 Ubuntu20.04 Pangolin 环境配置

    3.安装 Eigen(负责矩阵运算)

    可以通过一下命令来安装Eigen库。

    sudo apt-get install libeigen3-dev
    
    • 1

    4.安装opencv-3.4.5

    这里给出官方的地址
    https://github.com/opencv/opencv/archive/3.4.5.zip

    在终端下进入该文件夹


    安装依赖

    sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
    sudo apt update
    sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff5.dev libswscale-dev libjasper-dev 
    sudo apt install libcanberra-gtk-module libcanberra-gtk3-module 
    
    • 1
    • 2
    • 3
    • 4

    发现第一个命令就报错:

    add-apt-repository: command not found
    
    • 1

    输入以下指令解决:

    sudo apt-get install software-properties-common
    sudo apt-get update
    
    • 1
    • 2

    重新执行sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main",又报错 E: Failed to fetch
    使用命令

    sudo vim /etc/apt/sources.list
    
    • 1

    用下面替换全部内容(,替换了两次源,最后换成中科大的源,很成功!!!!)

    deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
    deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
    deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe
    deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
    deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe
    deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
    deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
    deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe
    deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
    deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    (这是重写的内容,发现写的直接发表没有更新,码的几页全没了)
    (第三次重写)
    又重新尝试了 清华的源,但是反反复复的报各种错,最后发现这是一个大坑,切记无脑换源
    先查看自己板卡是什么系统,如下:

    bullseye/sid 20190706日,Debian代号为“buster”发布Stable稳定版本,同日Debian代号为“bullseye”进入testing版本通道,20191024日,Ubuntu20.04LTS建立代号“FocalFossa”,所以Ubuntu20.04LTS基于Debian代号为“bullseye”的Testing通道,而不是基于Unstable通道。
    
    • 1

    所以真正的问题在这里,我们之前使用中科大,阿里,清华的源,比如:

    中科大 deb https://mirrors.ustc.edu.cn/archive.raspberrypi.org/ stretch main ui 
    
    清华 deb https://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui 
    
    默认官方源 deb http://archive.raspberrypi.org/debian/ stretch main ui 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    可以看到是stretch,而不是我们的bullseye/sid
    这里给出了国内一些 bullseye/sid 依赖下载源
    后面解决了证书信任等等问题,更新了证书,同时将deb中 https换为http,才将所有依赖下载成功 😃
    不过由于板子性能有限,在OpenCV编译过程中,SSH连接总是中断,只能开两个线程,但是又有点慢,这个还是比较难受的,可能也确实不太适合,毕竟这算是拿来测试极限性能了

    另外板子只有4G,不确定我的ORB_SLAM整个项目上传后会不会崩,估计大大概率会崩,刚看了我的ORBslam2文件夹大小为500M,测试压力很大。

    芯片当前的结温温度、CPU运行频率、BPU运行频率和BPU使用率
    
    • 1

    使用make -j,温度直接飙到 60℃,最高约65℃并且SSH连接断开,应该是板子过载了

    编译又是好几个小时的等待,枯萎ing
    加持了小风扇,为了速度,重新调成了8线程,慢慢也能运行,不过目测未发挥出8线程实力,虽然是make -j8,但是速度感觉还是不太够。

    终于编译成功!!!,功夫不负有心人,ORB——SLAM2 运行环境到这里配置完毕

    ORB_SLAM2 编译运行

    cd ORB_SLAM2
    chmod +x build.sh
    ./build.sh
    
    • 1
    • 2
    • 3

    报错

    /usr/include/c++/9/bits/stl_map.h:122:71: error: static assertion failed: std::map must have the same value_type as its allocator
    122 | static_assert(is_same<typename _Alloc::value_type, value_type>::value,
    
    • 1
    • 2

    解决:

    typedef map<KeyFrame*,g2o::Sim3,std::less<KeyFrame*>,
            Eigen::aligned_allocator<std::pair<const KeyFrame*, g2o::Sim3> > > KeyFrameAndPose;
    
    • 1
    • 2

    换为:

    typedef map<KeyFrame*,g2o::Sim3,std::less<KeyFrame*>,
            Eigen::aligned_allocator<std::pair<KeyFrame *const, g2o::Sim3> > > KeyFrameAndPose;
    
    
    • 1
    • 2
    • 3

    接下来出现了

    内存不足的问题出现C++: fatal error: Killed signal terminated program cc1plus导致编译中断
    
    • 1


    还是挺不容易的,既要解决调试环境遇到的bug,还要兼顾硬件性能

    测试大概就到这里,因为比较慢,所以就不继续进行等待编译了

  • 相关阅读:
    vscode配置自定义代码片段模板
    手绘板的制作——画布缩放(4)
    沃通CA荣获多项国际ISO体系认证证书
    python 微信小程序 英语单词小程序代码分享
    egg-token码的生成与验证
    iOS系统暗黑模式
    Linux常用命令
    【Vue】生命周期一文详解
    多元线性回归方法的应用,人工神经网络回归分析
    云计算环境中需要用到的新技术
  • 原文地址:https://blog.csdn.net/qq_41880787/article/details/126310212