解決ORB-SLAM ubuntu 16 ros-kineticでcatkin_makeコンパイル方式
5144 ワード
文書ディレクトリは前の に書いてありますインストール依存 ダウンロードORB-SLAM 以前のros_buildコンパイル方式をcatkin_に変更make方式 CmakeLists.txtファイル を修正 package.xmlファイル を追加何行かのファイル を修正する
前に書く
ORB-SLAMソースファイルはROSベースのソフトウェアであり、使用するコンパイル方式はros_buildは、このように工事のメンテナンスに不便であり、他のパッケージとの結合にも不便であるため、ubuntu 16 ros-kinetic下catkin_に変更する方法を提案する.makeコンパイル方式、具体的な方式は以下の通りです
インストール依存マルチスレッドBoost library:launch the different threads of our SLAM system.sudo apt-get install libboost-all-dev 画像処理OpenCV library:manipulate images and features 図最適化g 2 o:use a modified version of g 2 o to perform optimizations(g 2 oはEigenライブラリに依存)sudo apt-get install libeigen 3-dev ループ検出DboW 2:use of some components of the DboW 2 and Dlib library for place recognition and feature matching ORB-SLAMのダウンロード git cloneからros-workspaceまでのsrcディレクトリの下 名前と工事名を小文字に変更(rospack名前は大文字をサポートしません) 前のros_をbuildコンパイル方式をcatkin_に変更make方式
CmakeLists.txtファイルの変更
package.xmlファイルの追加
数行のファイルを変更
src/orbextractor.ccヘッダファイルinclude include
Thirdparty/g2o/g2o/solvers/linea_solver_eigen.h修正//typedef Eigen::PermutationMatrix<:dynamiceigen::dynamic="">>SparseMatrix::Index>PermutationMatrix;typedef Eigen::PermutationMatrix<:dynamic eigen::dynamic="">int> PermutationMatrix;
これでcatkin_を使用できますMAKEコンパイルORB-SLAM
前に書く
ORB-SLAMソースファイルはROSベースのソフトウェアであり、使用するコンパイル方式はros_buildは、このように工事のメンテナンスに不便であり、他のパッケージとの結合にも不便であるため、ubuntu 16 ros-kinetic下catkin_に変更する方法を提案する.makeコンパイル方式、具体的な方式は以下の通りです
インストール依存
CmakeLists.txtファイルの変更
cmake_minimum_required(VERSION 2.8.3)
project(orb-slam)
# include($ENV{ROS_ROOT}/core/rosbuild/rosbuild.cmake)
# rosbuild_init()
# IF(NOT ROS_BUILD_TYPE)
# SET(ROS_BUILD_TYPE Release)
# ENDIF()
# MESSAGE("Build type: " ${ROS_BUILD_TYPE})
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -O3 -march=native ")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -O3 -march=native")
set(CMAKE_BUILD_TYPE "Release")
set(CMAKE_CXX_FLAGS "-std=c++11")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -Wall -g")
## bin
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
LIST(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules)
## ROS
find_package(catkin REQUIRED COMPONENTS
roscpp
std_msgs
sensor_msgs
tf
image_transport
cv_bridge
)
find_package(OpenCV 3.1 REQUIRED)
find_package(Eigen3 REQUIRED)
catkin_package()
include_directories(
${catkin_INCLUDE_DIRS}
${PROJECT_SOURCE_DIR}/include
)
include_directories(
${catkin_INCLUDE_DIRS}
${PROJECT_SOURCE_DIR}
${EIGEN3_INCLUDE_DIR}
)
##
# rosbuild_add_executable(${PROJECT_NAME}
add_executable( ${PROJECT_NAME}
src/main.cc
src/Tracking.cc
src/LocalMapping.cc
src/LoopClosing.cc
src/ORBextractor.cc
src/ORBmatcher.cc
src/FramePublisher.cc
src/Converter.cc
src/MapPoint.cc
src/KeyFrame.cc
src/Map.cc
src/MapPublisher.cc
src/Optimizer.cc
src/PnPsolver.cc
src/Frame.cc
src/KeyFrameDatabase.cc
src/Sim3Solver.cc
src/Initializer.cc
)
# rosbuild_add_boost_directories()
# rosbuild_link_boost(${PROJECT_NAME} thread)
target_link_libraries(${PROJECT_NAME}
${catkin_LIBRARIES}
${OpenCV_LIBS}
${EIGEN3_LIBS}
${PROJECT_SOURCE_DIR}/Thirdparty/DBoW2/lib/libDBoW2.so
${PROJECT_SOURCE_DIR}/Thirdparty/g2o/lib/libg2o.so
)
package.xmlファイルの追加
orb-slam
0.0.0
The ORB-SLAM package
dvorak
TODO
catkin
roscpp
std_msgs
sensor_msgs
image_transport
cv_bridge
roscpp
std_msgs
sensor_msgs
image_transport
cv_bridge
数行のファイルを変更
src/orbextractor.ccヘッダファイルinclude include
Thirdparty/g2o/g2o/solvers/linea_solver_eigen.h修正//typedef Eigen::PermutationMatrix<:dynamiceigen::dynamic="">>SparseMatrix::Index>PermutationMatrix;typedef Eigen::PermutationMatrix<:dynamic eigen::dynamic="">int> PermutationMatrix;
これでcatkin_を使用できますMAKEコンパイルORB-SLAM