如何在M1 MACBOOK上准备好ORB-SLAM2的环境

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. 正确情况会看到窗口启动正常显示

原文链接: https://www.cnblogs.com/bicker/p/15705304.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    如何在M1 MACBOOK上准备好ORB-SLAM2的环境

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/215876

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 上午2:58
下一篇 2023年2月13日 上午2:59

相关推荐