如何在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. 正確情況會看到窗口啟動正常顯示


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM