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的编译过程就完成了

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