/lib_use

eigen,ceres,g2o,opencv,sophus这些slam常用库的小demo

Primary LanguageCMake

如何使用slam相关的库

eigen ceres g2o opencv sophus
矩阵运算 优化 图优化 计算机视觉 李群和李代数

how to run

sh run_all.sh

总结

CMakeLists.txt的编写

  • eigen
include_directories("/usr/include/eigen3")
  • ceres
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
find_package(Ceres REQUIRED)
include_directories(${CERES_INCLUDE_DIRS})

target_link_libraries(xxx ${CERES_LIBRARIES})
  • g2o
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
find_package(G2O REQUIRED)
include_directories(${G2O_INCLUDE_DIRS})

target_link_libraries(xxx ${G2O_CORE_LIBRARY} ${G2O_STUFF_LIBRARY})
  • OpenCV

注意使用opencv提取SIFT和 SURF特征时,opencv版本要低于3.4.1或者contrib版本,后续版本因专利问题被移除了,使用时xfeature2d好像也很容易报错

# set(CMAKE_PREFIX_PATH "/home/rich/third/opencv-3.4.0/release/installed/")
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})

target_link_libraries(xxx ${OpenCV_LIBS})
  • sophus
find_package(Sophus REQUIRED)
target_link_libraries(xxx Sophus::Sophus)
  • 安装多个版本sophus
git clone https://github.com/strasdat/Sophus.git
cd Sophus
git checkout a621ff  #版本回溯
mkdir build && cd build 
mkdir install
cmake -D CMAKE_INSTALL_PREFIX=/home/rich/third/Sophus621/Sophus/build/install/ ..
make
sudo make install

编译报错 打开so2.cpp

//unit_complex_.real() = 1.;
//unit_complex_.imag() = 0.;
unit_complex_.real(1.); 
unit_complex_.imag(0.);

修改CMakeLists.txt

set(Sophus_INCLUDE_DIRS "/home/rich/third/Sophus621/Sophus/build/install/include")
set(Sophus_LIBS "/home/rich/third/Sophus621/Sophus/build/install/lib")
find_package( Sophus REQUIRED )
include_directories( ${Sophus_INCLUDE_DIRS} )
target_link_libraries(xxx /home/rich/third/Sophus621/Sophus/build/install/lib/libSophus.so)

注意事项

  • ceres 和g2o使用时需要cmake文件夹,并且在CMakeLists.txt中加入
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)