ORB_SLAM2 windows配置

ORB_SLAM2 windows配置

ORB_SLAM2的下載地址 https://github.com/raulmur/ORB_SLAM2.git

軟件環境

  • VS Visual Studio Community 2019
  • cmake 3.15.1

需要用到的庫

  • opencv 2.4.13
  • g2o 默認的
  • DBoW2 默認的
  • eigen 3.3.7
  • Pangolin 最新的

編譯順序

1 opencv
2 DBoW2
3 g2o
4 Pangolin
5 ORB_SLAM2

opencv 的編譯

opencv的編譯比較簡單,把編譯不過的註釋掉就OK了

DBoW2的編譯

由於是在windows上編譯,需要註釋掉RB_SLAM2\Thirdparty\DBoW2\DBoW2\FORB.cpp

//#include <stdint-gcc.h>

[外鏈圖片轉存失敗(img-QlYFh7Jo-1566053711585)(./DBoW2.png)]修改CmakeList.txt

g2o的編譯

需要修改

105 solverNameColumnLength = std::max(solverNameColumnLength, (*it)->property().name.size());

105 solverNameColumnLength = std::fmax(solverNameColumnLength, (*it)->property().name.size());

由於ORB_SLAM2中,可能有部分函數不能導出,所有編譯爲靜態庫,修改CMakeLists.txt

SET (G2O_LIB_TYPE SHARED)
SET (G2O_LIB_TYPE " ")

Pangolin的編譯

Pangolin選擇最新的庫下載編譯即可

ORB_SLAM2的編譯

修改代碼中 所有的usleep爲Sleep,修改src/MapPoint.cc文件下的

const size_t N = vDescriptors.size(); 
size_t N = vDescriptors.size();
    //float Distances[N][N];
	float** Distances = new float* [N];
	for (int i = 0; i < N; i++)
		Distances[i] = new float[N];
// 使用完記得釋放,在該函數的最後一行進行釋放
delete[] Distances;

修改CMakeList.txt,需要註釋掉

# Check C++11 or C++0x support
# include(CheckCXXCompilerFlag)
# CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
# CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
# if(COMPILER_SUPPORTS_CXX11)
#    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
#    add_definitions(-DCOMPILEDWITHC11)
#    message(STATUS "Using flag -std=c++11.")
# elseif(COMPILER_SUPPORTS_CXX0X)
#    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
#    add_definitions(-DCOMPILEDWITHC0X)
#    message(STATUS "Using flag -std=c++0x.")
# else()
#    message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 
# support. Please use a different C++ compiler.")
# endif()
set(OpenCV_DIR "D:/Code/SLAM/ORB_SLAM2/Thirdparty/opencv/sources/build/install/lib")
set(EIGEN3_INCLUDE_DIR "D:/Code/SLAM/ORB_SLAM2/Thirdparty/g2o/eigen")
find_package(Eigen3 REQUIRED)
target_link_libraries(${PROJECT_NAME}
${OpenCV_LIBS}
${EIGEN3_LIBS}
${Pangolin_LIBRARIES}
# need modiry
${PROJECT_SOURCE_DIR}/Thirdparty/DBoW2/lib/Debug/DBoW2.lib
# need modiry
${PROJECT_SOURCE_DIR}/Thirdparty/g2o/bin/Debug/g2o.lib 
)

到此,ORB_SLAM2的編譯過程就完成了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章