zoukankan      html  css  js  c++  java
  • 如何在M1 MACBOOK上准备好ORBSLAM2的环境

    1. 环境

    • M1 Macbook Air

    • Parallels Desktop 17

      • 关于虚拟机,在之前尝试了UTM,但是性能欠佳,卡顿情况比较多,而且未能解决联网问题,最终只能含泪放弃

      • Parallels Desktop真的好贵~

    • Ubuntu 20.04 ARM 64系统

    2. 需要哪些元素

    A. Eigen

    B. Pangolin

    C. Opencv

    D. Orb-slam2

    3. 如何准备

    这里只记录准备的过程,不对相关的库或者内容进行介绍

    A. Eigen

    i. 下载地址:https://eigen.tuxfamily.org/index.php?title=Main_Page

    ii. 我下载的是当时最新版本:3.4.0

    iii. 正常的CMAKE编译安装,无特殊情况

    B. Panolin

    i. Github地址:https://github.com/stevenlovegrove/Pangolin

    ii. 按照readme进行安装,无特殊情况

    # Get Pangolin
    cd ~/your_fav_code_directory
    git clone --recursive https://github.com/stevenlovegrove/Pangolin.git
    cd Pangolin
    # Install dependencies (as described above, or your preferred method)
    ./scripts/install_prerequisites.sh recommended
    # Configure and build
    mkdir build && cd build
    cmake ..
    cmake --build .

    iv. 值得注意的是,在进行代码clone时,需要添加—recursive

    C. Opencv

    i. 下载地址:https://opencv.org/releases/

    ii. 我下载的是当时最新版本:4.5.4

    iii. 安装操作:

    cd opencv4.5.4
    mkdir build
    cd build
    cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
    make -j6
    sudo make install

    D. Orb-slam 2

    i. Github 地址:https://github.com/raulmur/ORB_SLAM2

    ii. 完成代码clone之后,需要进行修改:

    1. CMakeLists.txt:

    a. 需要添加对cpp 14特性的支持:
    if(COMPILER_SUPPORTS_CXX11) 
        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 
     + set(CMAKE_CXX_STANDARD 14)
     + set(CMAKE_CXX_STANDARD_REQUIRED ON)
     + set(CMAKE_CXX_EXTENSIONS OFF)
        add_definitions(-DCOMPILEDWITHC11)
        message(STATUS "Using flag -std=c++11.")
        
    b. 修改opencv版本要求:
    -find_package(OpenCV 3.0 QUIET) 
    +find_package(OpenCV 4.5 QUIET)
    c. 修改对Eigen3的要求:
    -find_package(Eigen3 3.1.0 REQUIRED) 
    +find_package(Eigen3 3.1.0 REQUIRED NO_MODULE)

    2. Thirdparty/DBoW2/CMakeLists.txt

    a. 修改opencv版本要求:
    -find_package(OpenCV 3.0 QUIET) 
    +find_package(OpenCV 4.5 QUIET)

    3. include/LoopClosing.h

    a. 修改类别定义问题:
    - Eigen::aligned_allocator<std::pair<const KeyFrame*, g2o::Sim3> > > KeyFrameAndPose; 
    + Eigen::aligned_allocator<std::pair<KeyFrame* const, g2o::Sim3> > > KeyFrameAndPose;

    4. include/ORBextractor.h

    a. 修改opencv头文件引用问题:
    -#include <opencv/cv.h> 
    +#include <opencv2/imgproc/imgproc_c.h> 
    +#include <opencv2/highgui/highgui_c.h>

    5. include/System.h

    a. 解决找不到CV_LOAD_IMAGE_UNCHANGED问题:
    +#include<opencv2/imgcodecs/legacy/constants_c.h>
    b. 解决usleep函数不存在问题:
    +#include<unistd.h>

    iii. 修改完,进行编译:

    cd ORB_SLAM2
    chmod +x build.sh
    ./build.sh

    4. 测试是否成功

    A. 下载测试数据:http://vision.in.tum.de/data/datasets/rgbd-dataset/download

    B. 例如下载:Sequence 'freiburg1_360',注意下载时是freiburg1还是freiburg2

    C. 下载完成解压缩

    D. 回到orb-slam2的目录:

    ./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUMX.yaml PATH_TO_SEQUENCE_FOLDER

    i. 注意TUMX.yaml需要修改,如果下载的是freiburg1,修改成TUMX1.yaml等等

    ii. PATH_TO_SEQUENCE_FOLDER是指解压缩后的目录,包含了depth, rgb目录以及若干文本文件

    E. 正确情况会看到窗口启动正常显示

  • 相关阅读:
    BCP及自增标识列
    DAC重置max server memory
    登录名与用户名
    重复执行同一命令
    利用DBCC PAGE查看SQL Server中的表和索引数据
    索引约束
    JS高级程序设计笔记一
    div滚动底部加载li,window滚动底部加载li
    懂,才是最好的爱
    CSS3混合模式mix-blend-mode/background-blend-mode简介 ,PS中叠加效果
  • 原文地址:https://www.cnblogs.com/bicker/p/15705304.html
Copyright © 2011-2022 走看看